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

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