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

כללים ותנאי הפעלה לשליחת הודעות WhatsApp

מסמך זה מפרט את התנאים הספציפיים שבהם מערכת Maintor מפעילה ושולחת הודעות WhatsApp, כיצד נקבעים הנמענים, וכיצד מצבי ארגז חול (Sandbox) לעומת מצב חי (Live) משפיעים על שליחת ההודעות.


1. הגדרת הפעלה גלובלית (מצב Live לעומת Sandbox)

גם כאשר תנאי ההפעלה מתקיים, המערכת קובעת האם לפנות ל-API של הודעות חיות או לדמות את השליחה על סמך תצורת החשבון:

  • מצב חי (Live Mode): החשבון חייב להיות עם whatsappLive: true מופעל באוסף account_settings עבור ה-accountId המתאים, ומשתנה הסביבה WASENDER_API_KEY חייב להיות מוגדר. ההודעות נשלחות ישירות לנמען באמצעות ה-API של Wasender.
  • מצב ארגז חול (Sandbox Mode): אם whatsappLive מוגדר כ-false (או לא מוגדר כלל), האינטגרציה פועלת במצב ארגז חול. המערכת מיירטת את הקריאה, עוקפת את ה-API האמיתי של Meta/Wasender, ורושמת את המידע לבסיס הנתונים באוסף whatsapp_logs לצורך בדיקה ואימות.

2. אירועי הפעלה ותוכן ההודעות

הודעות WhatsApp מופעלות אוטומטית על ידי הבקאנד בארבעה מקרים עיקריים:

א. תזכורות שעתיות של 24 שעות מראש (sendPlanned24hReminders)

משימת הרצה שעתית (Cron job) סורקת משימות מתוכננות קרובות. היא מפעילה תזכורת אם כרטיס עומד בכל התנאים הבאים:

  • סוג הכרטיס (type) הוא PLANNED.
  • סטטוס הכרטיס (status) הוא PLANNED.
  • התאריך המתוכנן של הכרטיס (scheduled_date) מתוזמן להתחיל ב-24 השעות הקרובות.
  • השדה planned_24h_whatsapp_sent_at ריק, null או חסר (כדי להבטיח שהתזכורת תישלח פעם אחת בלבד).

תוכן ההודעה:

"היי, משימה מתוכננת עומדת להתחיל"


ב. יצירת כרטיס שבר (notifyBreakdownCreated)

מופעלת מיידית כאשר נוצר כרטיס שסוגו (type) הוא BREAKDOWN.

תוכן ההודעה:

"היי, נפתח דיווח תקלה חדש עבור מכונה"


ג. מעבר סטטוס מ"מתוכנן" ל"פתוח" (notifyPlannedToOpen)

מופעל כאשר כרטיס מתוכנן מעודכן והסטטוס שלו משתנה ספציפית מ-PLANNED ל-OPEN.

תוכן ההודעה:

"היי, יש לבצע אחזקה מתוכננת עבור מכונה."


ד. הודעות מנהל מיוחדות (sendWhatsAppNotify)

מופעלות ידנית כאשר מנהל מערכת שולח בקשת POST לנקודת הקצה /v1/whatsapp/notify (בדרך כלל דרך לוח הבקרה של WhatsApp בדשבורד).


3. כללי קביעת נמענים

עבור הפעלות אוטומטיות מבוססות כרטיסים, המערכת מרכיבה רשימה של מספרי טלפון לקבלת ההודעה לפי סדר העדיפויות וההיררכיה הבאה:

  1. הטכנאים המוקצים לכרטיס (Assignees): מספרי הטלפון מתוך פרופילי המשתמשים של כל המשתמשים המוקצים לכרטיס (assignees, assignee_user_id).
  2. בעלי הנכס ובעלים שותפים (Asset Owners & Co-Owners): מספרי הטלפון מתוך פרופילי המשתמשים של הבעלים (ownerUserId, owners) והבעלים השותפים (coOwners, co_owners) של הנכס המשויך לכרטיס.
  3. נמעני בדיקה: מספרי טלפון המוגדרים בתצורה הסטטית test-whatsapp-recipients.json (אם קיימים) מתווספים לכל התראות הכרטיסים.
  4. אימות הודעות מיוחדות: עבור הודעות מנהל מיוחדות, אם לא מסופק מספר נמען ספציפי, המערכת תחזיר שגיאת אימות 400 אלא אם כן מוגדרים נמעני בדיקה.

כל מספרי הטלפון מנותחים ומנוקים דינמית כדי להתאים לפורמט הבינלאומי הסטנדרטי E.164 לפני השליחה.