קבלת הודעות

נציגי RBM מקבלים הודעות ואירועים באמצעות webhook. כשמשתמש שולח הודעה לנציג שלכם, שירות ה-RBM של Google שולח את ההודעה ל-webhook שהגדרתם. אחר כך הנציג יוכל לפענח את ההודעה, לעבד אותה ולענות למשתמש.

המשתמש שולח הודעה לנציג התמיכה

המשתמשים יכולים לשלוח כל טקסט, מיקום או קובץ שהלקוח שלהם RCS מאפשר. הנציג צריך לטפל בכל טקסט, מיקום או קובץ שהמשתמש עשוי לשלוח, וכן בכל מצבי השגיאה שההודעות האלה עשויות להפעיל.

טיפול בהודעות נכנסות

האופן שבו הנציג יטפל בהודעות מהמשתמשים ויענה להן תלוי מאוד בלוגיקה העסקית שלכם. עם זאת, באופן כללי, השלבים הנדרשים כדי להגיב להודעה של המשתמש הם עקביים.

שלב 1: זיהוי סוג ההודעה שהמשתמש שלח

משתמשים יכולים לשלוח הודעות מארבעה סוגים:

  • הודעות טקסט הן תשובות בפריסה גמישה.
  • הודעות הצעה כוללות את נתוני הדיווח החוזר על ההמרה והטקסט של הפעולה המוצעת או התשובה המוצעת שעליה המשתמש הקיש.
  • הודעות מיקום כוללות ערכים של קווי אורך ורוחב.

  • הודעות קובץ כוללות את ה-URI של קובץ ונתונים משויכים.

שלב 2: מעבדים את תוכן ההודעה

התוכן בהודעה למשתמש צריך להנחות את הלוגיקה של הנציג ואת התשובה הבאה בשיחה.

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

אם משתמש שולח הודעת טקסט, הוא יכול לנתח את התשובה של מילות מפתח נתמכות או להשתמש ב-NLU (כמו Dialogflow) כדי לעבד את ההודעה של המשתמש ולזהות את המשך התהליך.

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

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

שלב 3: מימוש הלוגיקה העסקית לאינטראקציה

אחרי שהנציג מזהה את התשובה הנכונה להודעה של המשתמש, הוא אוסף את המידע הנחוץ מהתשתית שלכם ויוצר קשר עם מערכות אחרות לפי הצורך, כדי לממש את הלוגיקה העסקית של האינטראקציה.

שלב 4: משיבים למשתמש

אחרי שהנציג ממלא את הלוגיקה העסקית של האינטראקציה, הוא שולח הודעה נוספת וממשיך את השיחה עם המשתמש.

דוגמאות

הקוד הבא מראה איך הנציג מקבל הודעות. למידע על הפורמט ועל הערכים, ראו UserMessage.

הנציג מקבל הודעת טקסט

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "text": "Hello, world!"
}

הנציג מקבל הודעה מהצעה

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "suggestionResponse": {
    "postbackData": "suggestion_1",
    "text": "Suggestion #1"
  }
}

הנציג מקבל מיקום

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "location": {
    "latitude": 37.422000,
    "longitude": -122.084056
  }
}

הנציג מקבל קובץ

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "userFile": {
    "category": "IMAGE",
    "thumbnail": {
      "mimeType": "image/jpeg",
      "fileSizeBytes": 1280,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c8",
      "fileName": "4_animated.jpeg"
    },
    "payload": {
      "mimeType": "image/gif",
      "fileSizeBytes": 127806,
      "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9",
      "fileName": "4_animated.gif"
    }
  }
}

טיפול באירועים נכנסים

הנציג מקבל התראות כשההודעות שהוא שולח למשתמשים נמסרות ונקראות.

הקוד הבא מראה איך הנציג מקבל הודעות. למידע על הפורמט והערכים, ראו UserEvent.

ההודעה נמסרה למשתמש

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "DELIVERED"
}

ההודעה נקראה על ידי המשתמש

{
  "agentId": "AGENT_ID",
  "senderPhoneNumber": "PHONE_NUMBER",
  "messageId": "MESSAGE_ID",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "eventType": "READ"
}

המשתמש מקליד

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "IS_TYPING",
  "eventId": "EVENT_ID",
  "sendTime": "2018-12-31T15:01:23.045123456Z",
  "agentId": "AGENT_ID"
}