כללים ותנאי הפעלה לשליחת הודעות 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. כללי קביעת נמענים
עבור הפעלות אוטומטיות מבוססות כרטיסים, המערכת מרכיבה רשימה של מספרי טלפון לקבלת ההודעה לפי סדר העדיפויות וההיררכיה הבאה:
- הטכנאים המוקצים לכרטיס (Assignees): מספרי הטלפון מתוך פרופילי המשתמשים של כל המשתמשים המוקצים לכרטיס (
assignees,assignee_user_id). - בעלי הנכס ובעלים שותפים (Asset Owners & Co-Owners): מספרי הטלפון מתוך פרופילי המשתמשים של הבעלים (
ownerUserId,owners) והבעלים השותפים (coOwners,co_owners) של הנכס המשויך לכרטיס. - נמעני בדיקה: מספרי טלפון המוגדרים בתצורה הסטטית
test-whatsapp-recipients.json(אם קיימים) מתווספים לכל התראות הכרטיסים. - אימות הודעות מיוחדות: עבור הודעות מנהל מיוחדות, אם לא מסופק מספר נמען ספציפי, המערכת תחזיר שגיאת אימות
400אלא אם כן מוגדרים נמעני בדיקה.
כל מספרי הטלפון מנותחים ומנוקים דינמית כדי להתאים לפורמט הבינלאומי הסטנדרטי E.164 לפני השליחה.