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

המשתמשים יכולים לשלוח כל טקסט, מיקום או קובץ שהלקוח שלהם ב-RCS מאפשר. הנציג צריך לטפל בכל טקסט, מיקום או קובץ שהמשתמש עשוי לשלוח, וגם בכל מצבי השגיאה שההודעות האלה עשויות להפעיל.
טיפול בהודעות נכנסות
האופן שבו הנציג מטפל בהודעות ממשתמשים ומשיב להן תלוי מאוד בלוגיקה העסקית שלכם. עם זאת, בדרך כלל השלבים למענה להודעה ממשתמש זהים.
שלב 1: זיהוי סוג ההודעה שהמשתמש שלח
המשתמשים יכולים לשלוח ארבעה סוגים של הודעות:
- הודעות טקסט הן תשובות בטקסט חופשי.
- הודעות ההצעה כוללות את נתוני השליחה בחזרה (postback) ואת הטקסט של ההצעה לפעולה או ההצעה לתשובה שהמשתמש הקיש עליה.
הודעות עם מיקום כוללות ערכים של קו רוחב וקו אורך.
הודעות File כוללות את ה-URI של קובץ ונתונים שמשויכים אליו.
שלב 2: עיבוד תוכן ההודעה
התוכן של הודעת המשתמש צריך להנחות את הלוגיקה של הסוכן ואת התגובה הבאה בשיחה.
הדרך הכי קלה לזהות את כוונת המשתמש היא באמצעות נתוני פוסטבק מתשובה מהירה או מהצעה לפעולה. לא משנה מה הטקסט שמשויך להצעה, נתוני השליחה בחזרה (postback) ניתנים לקריאה על ידי מכונה.
אם משתמש שולח הודעת טקסט, יכול להיות שהנציג ינתח את התגובה כדי למצוא מילות מפתח נתמכות, או ישתמש ב-NLU (כמו Dialogflow) כדי לעבד את ההודעה של המשתמש ולזהות את הדרך להמשך.
הודעות עם מיקום וקבצים לא כוללות טקסט או נתוני פוסטבק, ולכן הסוכן צריך להתייחס להקשר של השיחה ולהודעות האחרונות לפני שהוא משיב.
אם הסוכן לא יודע איך להגיב להודעה של המשתמש, הוא צריך להגיב במצב שגיאה ולנסות להמשיך את השיחה על ידי בקשת מידע נוסף מהמשתמש, בקשת קלט בדרך אחרת או הצגת תשובות מוצעות ופעולות מוצעות שהסוכן יודע איך להגיב להן.
שלב 3: מטמיעים את הלוגיקה העסקית של האינטראקציה
אחרי שהנציג מזהה את התשובה הנכונה להודעה של המשתמש, הוא אוסף את המידע הדרוש מהתשתית שלכם ומתקשר עם מערכות אחרות לפי הצורך כדי להשלים את הלוגיקה העסקית של האינטראקציה.
שלב 4: מענה למשתמש
אחרי שהנציג מבצע את הלוגיקה העסקית של האינטראקציה, הוא שולח הודעה נוספת וממשיך את השיחה עם המשתמש.
דוגמאות
הקוד הבא מראה איך הסוכן מקבל הודעות. מידע על עיצוב וערכים זמין במאמר בנושא UserMessage.
הערה: לגבי תנועה בארה"ב, סיווגי מודל החיוב בארה"ב חלים על הודעות למשתמשים ועל הקשות על פעולות מוצעות. כשהסוכן מקבל את האירועים האלה, הוא כולל את השדה richMessageClassification, שקובע את סוג האירוע שחייבים עליו. פרטים נוספים על סיווג זמינים במדריך בנושא מודל החיוב בארה"ב.
הנציג מקבל טקסט
{
"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"
}