דלג לתוכן הראשי

אינטגרציית WhatsApp

המערכת משתלבת עם WhatsApp להתראות, התרעות עליות לתורה והודעות קהילתיות. המימוש מסתמך על ספרייה (ככל הנראה whatsapp-web.js או דומה) עטופה בשירות מותאם אישית.

ארכיטקטורה

  • בידוד: כל משתמש (Tenant) יכול לקבל session משלו ב-WhatsApp (sessionId מקושר ל-userId).
  • אירועים: האינטגרציה משתמשת ב-EventsService לשידור עדכוני סטטוס (למשל, whatsapp:authenticated, ready, qr).

תהליך התחברות

  1. אתחול: POST /whatsapp/connect - מפעיל את ה-worker בצד השרת עבור session המשתמש.
  2. קוד QR: GET /whatsapp/qr - הלקוח מבצע polling כדי להציג את קוד ה-QR לצימוד.
  3. סטטוס: GET /whatsapp/status - מחזיר מצב נוכחי (CONNECTED, PAIRING, DISCONNECTED).

יכולות

הודעות

  • הודעות טקסט: שליחת הודעות טקסט רגילות.
  • מדיה: שליחת תמונות/קבצים (SendMediaDto).
  • אנשי קשר: שיתוף כרטיסי קשר (SendContactDto).
  • מיקום: שיתוף מיקומים (SendLocationDto).
  • סקרים: יצירת סקרים (SendPollDto).

מפרסם עליות

השירות WhatsappAliyaPublisherService מטפל בהודעות מעוצבות לקריאת תורה (עליות), ומאפשר לגבאים לשלוח את רשימת העולים ישירות לקבוצה או רשימה.

APIs פנימיים

  • emit-test: נקודת קצה לדיבוג לבדיקת אירועי WebSocket.
  • connection/retry: אילוץ לוגיקת ניסיון חוזר עבור sessions תקועים.
  • logout: סיום מבוקר של ה-session וניקוי קבצי אימות מקומיים.

אבטחה

כל נקודות הקצה דורשות Permission.MANAGE_WHATSAPP. תיקיית ה-session/קבצים חייבים להיות מאוחסנים בצורה מאובטחת ומבודדים לפי userId כדי למנוע דליפת נתונים בין דיירים.