קבלת הודעות

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

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

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

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

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

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

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

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

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

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

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

הדרך הקלה ביותר לזהות את כוונת המשתמש היא באמצעות נתוני דיווח חוזר על המרה (PostBack) הצעה לתשובה או פעולה מוצעת. בלי קשר לטקסט שמשויך ההצעה, נתוני הדיווח החוזר על המרה (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": {
    "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"
}