เหตุการณ์คือการแจ้งเตือนที่ตัวแทนของคุณจะส่งและรับได้ เหตุการณ์มี 3 ประเภท ได้แก่
- สร้างโดยเซิร์ฟเวอร์: ส่งให้ตัวแทนของคุณโดยแพลตฟอร์ม RBM
- สร้างโดยผู้ใช้: อุปกรณ์ของผู้ใช้ส่งไปที่ตัวแทนของคุณ
- สร้างโดยตัวแทน: ตัวแทนส่งให้ผู้ใช้
เหตุการณ์ที่เซิร์ฟเวอร์สร้างขึ้น
แพลตฟอร์ม RBM จะส่งเหตุการณ์เพื่อแจ้งให้ตัวแทนของคุณทราบเกี่ยวกับการอัปเดตระดับเซิร์ฟเวอร์ เช่น การหมดอายุของข้อความ
สำหรับตัวเลือกการจัดรูปแบบและค่า โปรดดู ServerEvent
ข้อความหมดอายุ เพิกถอนสำเร็จแล้ว
ข้อความหมดอายุแล้วและเพิกถอนสำเร็จแล้ว เหตุการณ์นี้จะเป็นทริกเกอร์ที่ดี สำหรับกลยุทธ์การรับส่งข้อความสำรอง
{ "phoneNumber": [phone number of recipient that the original message was intended for] , "messageId": [RCS message ID of the message], "agentId": [bot ID], "eventType": "TTL_EXPIRATION_REVOKED", "eventId": [unique ID generated by the RBM platform], "sendTime": [time at which the server sent this event] }
ข้อความหมดอายุแล้ว เพิกถอนไม่สำเร็จ
ข้อความหมดอายุแล้ว แต่ยังไม่ได้เพิกถอน
{ "phoneNumber": [phone number of recipient that the original message was intended for] , "messageId": [RCS message ID of the message], "agentId": [bot ID], "eventType": "TTL_EXPIRATION_REVOKE_FAILED", "eventId": [unique ID generated by the RBM platform], "sendTime": [time at which the server sent this event] }
โดยไม่มีการรับประกันการส่งข้อความ
- หากมีการส่งข้อความ คุณจะได้รับเหตุการณ์
DELIVERED
ที่เว็บฮุค - หากระบบไม่ได้ส่งข้อความ ให้ใช้ API การเพิกถอนเพื่อส่งคำขอเพิกถอน
หากข้อความขึ้นอยู่กับเวลา เช่น OTP หรือการแจ้งเตือนการประพฤติมิชอบ วิธีที่ดีที่สุดคือการส่งข้อความผ่านช่องทางอื่นอย่าง SMS แม้จะส่งผลให้เกิดข้อความซ้ำไปยังผู้ใช้
กิจกรรมที่ผู้ใช้สร้างขึ้น
Agent จะได้รับเหตุการณ์ของผู้ใช้ในรูปแบบ JSON เช่นเดียวกับข้อความสำหรับผู้ใช้และการตรวจสอบความสามารถ
สำหรับตัวเลือกการจัดรูปแบบและค่า โปรดดู UserEvent
ผู้ใช้ได้รับข้อความจาก Agent
เหตุการณ์นี้แสดงว่ามีการส่งข้อความแล้ว
{ "senderPhoneNumber": "PHONE_NUMBER", "eventType": "DELIVERED", "eventId": "EVENT_ID", "messageId": "MESSAGE_ID", "agentId": "AGENT_ID" }
ผู้ใช้อ่านข้อความ Agent
เหตุการณ์นี้แสดงว่าข้อความถูกเปิดหรือรับทราบแล้ว
{ "senderPhoneNumber": "PHONE_NUMBER", "eventType": "READ", "eventId": "EVENT_ID", "messageId": "MESSAGE_ID", "agentId": "AGENT_ID" }
ผู้ใช้เริ่มพิมพ์
เหตุการณ์นี้แสดงว่าผู้ใช้กำลังพิมพ์
{ "senderPhoneNumber": "PHONE_NUMBER", "eventType": "IS_TYPING", "eventId": "EVENT_ID", "agentId": "AGENT_ID" }
ผู้ใช้ส่ง SMS
{ "senderPhoneNumber": "PHONE_NUMBER", "text": "Hi", "eventId": "EVENT_ID", "agentId": "AGENT_ID" }
ผู้ใช้ส่งไฟล์
{ "senderPhoneNumber": "PHONE_NUMBER", "userFile": { "payload": { "mimeType": "image/gif", "fileSizeBytes": 127806, "fileUri": "https://storage.googleapis.com/copper_test/77ddb795-24ad-4607-96ae-b08b4d86406a/d2dcc67ab888d34ee272899c020b13402856f81597228322079eb007e8c9", "fileName": "4_animated.gif" } }, "eventId": "EVENT_ID", "agentId": "AGENT_ID" }
ผู้ใช้แตะคำตอบที่แนะนำ
เมื่อผู้ใช้แตะคำตอบที่แนะนำ ตัวแทนของคุณจะได้รับเหตุการณ์พร้อมด้วยข้อมูลการรายงานผล Conversion และข้อความของการตอบ
{ "senderPhoneNumber": "PHONE_NUMBER", "eventId": "EVENT_ID", "agentId": "AGENT_ID", "suggestionResponse": { "postbackData": "postback_1234", "text": "Hello there!" } }
ผู้ใช้แตะการดำเนินการที่แนะนำ
เมื่อผู้ใช้แตะการดำเนินการที่แนะนำ ตัวแทนของคุณจะได้รับเหตุการณ์พร้อมข้อมูลระบบรายงานผล Conversion ของการดำเนินการนั้น
{ "senderPhoneNumber": "PHONE_NUMBER", "eventId": "EVENT_ID", "agentId": "AGENT_ID", "suggestionResponse": { "postbackData": "postback_1234" } }
ผู้ใช้ยกเลิกการสมัครรับข้อมูลจากการสนทนา
หากผู้ใช้ไม่ต้องการรับข้อความที่ไม่จำเป็นจากธุรกิจอย่างเช่นโปรโมชัน ก็สามารถยกเลิกการรับการสนทนา RBM ใน Google Messages ได้
เหตุการณ์ UNSUBSCRIBE
แสดงให้เห็นว่าผู้ใช้ยกเลิกการพูดคุยกับตัวแทนและธุรกิจที่เป็นตัวแทน ต่อไปนี้คือตัวอย่างเพย์โหลด JSON
{ "senderPhoneNumber": "PHONE_NUMBER", "eventType": "UNSUBSCRIBE", "eventId": "EVENT_ID", "agentId": "AGENT_ID" }
วิธีการทำงาน
- ตัวเลือกยกเลิกการสมัครพร้อมให้ใช้งานเสมอในเมนูแชท สำหรับตัวแทนด้านโปรโมชันและตัวแทนแบบใช้งานหลายครั้ง ตัวเลือกนี้จะปรากฏในแชทโดยตรงหลังมีข้อความที่ยังไม่อ่านจำนวนหนึ่ง (กฎเฉพาะจะแตกต่างกันไปในแต่ละประเทศ)
- การเลือกยกเลิกการสมัครจะทำให้ Google Messages ส่งข้อความ "หยุด" จากหมายเลขของผู้ใช้ไปยังตัวแทน RBM ในขณะเดียวกัน แพลตฟอร์ม RBM จะส่งเหตุการณ์
UNSUBSCRIBE
ไปยังเว็บฮุคของตัวแทน - หลังจากที่ผู้ใช้ยกเลิกการสมัคร การสนทนาจะยังคงอยู่ในกล่องจดหมาย เว้นแต่ว่าจะมีการรายงานว่าเป็นจดหมายขยะ ซึ่งในกรณีนี้การสนทนาจะย้ายไปยังโฟลเดอร์สแปมและข้อความที่ถูกบล็อก
- Google จะตรวจสอบรูปแบบข้อความหลังจากที่ผู้ใช้ยกเลิกการสมัครรับอีเมลเพื่อระบุการละเมิดนโยบายและกฎธุรกิจ
กฎเกณฑ์ทางธุรกิจ
- ในฐานะพาร์ทเนอร์ RBM ที่จัดการการสนทนานี้ คุณมีหน้าที่ ที่จะปฏิบัติตามคำขอยกเลิกการสมัครของผู้ใช้
- หากยกเลิกการสมัครใช้บริการภายในชุดข้อความไม่ได้ คุณจะต้องส่งข้อความรับทราบทันทีพร้อมลิงก์โดยตรงไปยังเว็บไซต์หรือแอปที่ผู้ใช้สามารถจัดการค่ากำหนดการสมัครใช้บริการของตนได้
- หลังจากผู้ใช้ยกเลิกการสมัครแล้ว ระบบจะไม่อนุญาตให้ส่งข้อความที่ไม่จำเป็น
- แต่ยังคงอนุญาตข้อความสำคัญอยู่ ซึ่งรวมถึง
- การตรวจสอบสิทธิ์ เช่น รหัสผ่านที่สามารถใช้งานได้เพียงครั้งเดียว (OTP)
- การแจ้งเตือนเกี่ยวกับบริการที่เฉพาะเจาะจงที่ผู้ใช้ขอและ ให้ความยินยอม
- การยืนยันคำขอยกเลิกการสมัครของผู้ใช้ พร้อมข้อมูลสำหรับจัดการค่ากำหนดการสื่อสารเพิ่มเติม
ตัวอย่าง
หากผู้ใช้ยกเลิกการสมัครจากตัวแทนสายการบินที่มีกรณีการใช้งานแบบใช้งานหลายครั้ง คุณต้องหยุดส่งข้อความการตลาด อย่างไรก็ตาม คุณสามารถส่งข้อมูลอัปเดตเที่ยวบิน หากผู้ใช้ได้ให้ความยินยอมอย่างชัดแจ้งในการรับข้อมูลอัปเดตสำหรับเที่ยวบินนั้นๆ
เหตุผลในการยกเลิกการสมัคร
เมื่อผู้ใช้ยกเลิกการสมัครตัวแทนของคุณ ผู้ใช้จะเลือกเหตุผลจากตัวเลือกต่อไปนี้ได้
- ไม่ได้ลงชื่อสมัครรับข้อมูล
- มีข้อความมากเกินไป
- ไม่สนใจเป็นสมาชิกแล้ว
- สแปม
- อื่นๆ
ผู้ใช้สมัครรับการสนทนาอีกครั้ง
ผู้ใช้จะสมัครรับการสนทนาที่ยกเลิกการสมัครไปก่อนหน้านี้อีกครั้งใน Google Messages ได้
เหตุการณ์ SUBSCRIBE
ระบุว่าผู้ใช้ต้องการรับข้อความจากตัวแทนของคุณ รวมถึงเนื้อหาที่ไม่สำคัญ เช่น การโปรโมต ต่อไปนี้คือตัวอย่างเพย์โหลด
JSON
{ "senderPhoneNumber": "PHONE_NUMBER", "eventType": "SUBSCRIBE", "eventId": "EVENT_ID", "agentId": "AGENT_ID" }
วิธีการทำงาน
- ตัวเลือกติดตามซึ่งใช้ได้ทั้งจากเมนูแชทและลิงก์ในแชท ช่วยให้ผู้ใช้ติดตามการสนทนาที่เลิกติดตามไปแล้วอีกครั้งได้
- การเลือกสมัครใช้บริการจะทริกเกอร์ให้ Google Messages ส่งข้อความ "เริ่ม" จากหมายเลขของผู้ใช้ไปยังตัวแทน RBM ในขณะเดียวกัน แพลตฟอร์ม RBM จะส่งเหตุการณ์
SUBSCRIBE
ไปยังเว็บฮุคของตัวแทน
กฎเกณฑ์ทางธุรกิจ
- ในฐานะพาร์ทเนอร์ RBM ที่จัดการการสนทนานี้ คุณมีหน้าที่ ที่จะปฏิบัติตามคำขอของผู้ใช้เพื่อสมัครรับข้อมูลอีกครั้ง
- การสมัครใช้บริการซ้ำจะมีผลกับข้อความทุกประเภท รวมถึงเนื้อหาที่ไม่จำเป็น เช่น การโปรโมต
- หากผู้ใช้ส่งข้อความถึงธุรกิจหลังจากยกเลิกการสมัคร กรณีนี้อาจถือว่าเป็นคำขอสมัครใช้บริการอีกครั้ง
- หากผู้ใช้สมัครใหม่นอกช่องทางการรับส่งข้อความ (เช่น ในเว็บไซต์ของคุณ) ในฐานะพาร์ทเนอร์ RBM คุณมีหน้าที่อัปเดตสถานะของตนและส่งข้อความต่อ
กิจกรรมที่ตัวแทนสร้างขึ้น
ตัวแทนจะส่งเหตุการณ์เพื่อจำลองการโต้ตอบของมนุษย์ และให้ผู้ใช้มั่นใจว่าตัวแทนของคุณกำลังมีส่วนร่วมกับข้อความ สำหรับผู้ใช้ กิจกรรมจะแสดงเป็น การแจ้งเตือนภายในการสนทนาของตน
สำหรับตัวเลือกการจัดรูปแบบและค่า โปรดดู phones.agentEvents
ตัวแทนส่งเหตุการณ์ READ
สำหรับผู้ใช้ กิจกรรมนี้จะปรากฏเป็นใบตอบรับการอ่านสำหรับข้อความที่เจาะจง เพื่อแจ้งให้ผู้ใช้ทราบว่าแพลตฟอร์ม RBM เป็นผู้ส่งข้อความและตัวแทนกำลังประมวลผลข้อความ
โค้ดต่อไปนี้จะส่งเหตุการณ์ READ
สำหรับข้อความที่มี messageId
ตรงกัน
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d "{ 'eventType': 'READ', 'messageId': 'MESSAGE_ID' }"
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Send the device an event to indicate that messageId has been read rbmApiHelper.sendReadMessage('+12223334444', messageId);
Java
import com.google.rbm.RbmApiHelper; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Send the device an event to indicate that messageId has been read rbmApiHelper.sendReadMessage(messageId, "+12223334444");
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service # Send the device an event to indicate that message_id was read rbm_service.send_read_event('+12223334444', message_id)
C#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Send the device an event to indicate that messageId has been read rbmApiHelper.SendReadMessage(messageId, "+12223334444");
ตัวแทนส่งเหตุการณ์ IS_TYPING
สำหรับผู้ใช้ เหตุการณ์นี้จะปรากฏเป็นสัญญาณบอกสถานะการพิมพ์และแจ้งให้ผู้ใช้ทราบว่า Agent ของคุณกำลังเขียนข้อความ สัญญาณบอกสถานะกำลังพิมพ์จะหมดอายุหลังผ่านไปครู่หนึ่ง (ประมาณ 20 วินาที) หรือเมื่ออุปกรณ์ของผู้ใช้ได้รับข้อความใหม่จากตัวแทนของคุณ Agent สามารถส่งเหตุการณ์ IS_TYPING
หลายรายการเพื่อรีเซ็ตตัวจับเวลาการหมดอายุของสัญญาณบอกสถานะการพิมพ์
โค้ดต่อไปนี้จะส่งเหตุการณ์ IS_TYPING
cURL
curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_ID&agentId=AGENT_ID" \ -H "Content-Type: application/json" \ -H "User-Agent: curl/rcs-business-messaging" \ -H "`oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \ -d "{ 'eventType': 'IS_TYPING', }"
Node.js
// Reference to RBM API helper const rbmApiHelper = require('@google/rcsbusinessmessaging'); // Send the device an event to indicate that the agent is typing rbmApiHelper.sendIsTypingMessage('+12223334444', function() { console.log('Typing event sent!'); });
Java
import com.google.rbm.RbmApiHelper; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(); // Send the device an event to indicate that the agent is typing rbmApiHelper.sendIsTypingMessage("+12223334444");
Python
# Reference to RBM Python client helper and messaging object structure from rcs_business_messaging import rbm_service # Send the device an event to indicate that the agent is typing rbm_service.send_is_typing_event('+12223334444')
C#
using RCSBusinessMessaging; … // Create an instance of the RBM API helper RbmApiHelper rbmApiHelper = new RbmApiHelper(credentialsFileLocation, projectId); // Send the device an event to indicate that the agent is typing rbmApiHelper.SendIsTypingMessage(messageId, "+12223334444");