事件是您的客服人员可以发送和接收的通知。事件分为三种类型:
服务器生成的事件
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]
}
我们无法保证消息会送达。
- 如果消息已传送,您将在 webhook 中收到
DELIVERED
事件。 - 如果消息未递送,请使用 revoke API 发送撤消请求。
如果消息具有时效性(例如动态密码或欺诈提醒),最好通过短信等备用渠道发送消息,即使这会导致向用户发送重复消息。
用户生成的事件
与用户消息和功能检查一样,您的代理会以 JSON 格式接收用户事件。
如需了解格式设置和值选项,请参阅 UserEvent
。
用户收到代理消息
此事件表示消息已递送。
{
"senderPhoneNumber": "PHONE_NUMBER ",
"eventType": "DELIVERED",
"eventId": "EVENT_ID ",
"messageId": "MESSAGE_ID ",
"agentId": "AGENT_ID "
}
用户读取代理消息
此事件表示消息已打开或已确认。
{
"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 "
}
用户发送短信
{
"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 "
}
用户点按一条建议的回复
当用户点按建议的回复时,您的客服人员会收到包含回复的回传数据和文本的事件。
{
"senderPhoneNumber": "PHONE_NUMBER ",
"eventId": "EVENT_ID ",
"agentId": "AGENT_ID ",
"suggestionResponse": {
"postbackData": "postback_1234",
"text": "Hello there!"
}
}
用户点按建议的操作
当用户点按建议的操作时,代理会收到一个包含该操作的回传数据的事件。
{
"senderPhoneNumber": "PHONE_NUMBER ",
"eventId": "EVENT_ID ",
"agentId": "AGENT_ID ",
"suggestionResponse": {
"postbackData": "postback_1234"
}
}
代理生成的事件
您的代理会发送事件来模拟人类互动,并向用户保证代理正在与其消息互动。对于用户,事件会以通知的形式显示在对话中。
如需了解格式设置和值选项,请参阅 phones.agentEvents
。
代理发送 READ
事件
对用户来说,此事件将显示为特定邮件的已读回执。这样可以让用户知道 RBM 平台已递送其消息,并且客服人员正在处理该消息。
以下代码会针对具有匹配 messageId
的消息发送 READ
事件。
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 --jsonPATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d "{
'eventType': 'READ',
'messageId': 'MESSAGE_ID '
}"
// 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);
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 ");
# 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)
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
事件
对用户而言,此事件会显示为输入指示器,让他们知道您的客服人员正在撰写消息。输入指示器会在短时间(大约 20 秒)后或用户设备收到客服人员发送的新消息后失效。您的代理可以发送多个 IS_TYPING
事件来重置打字指示器的失效计时器。
以下代码会发送 IS_TYPING
事件。
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 --jsonPATH_TO_SERVICE_ACCOUNT_KEY rcsbusinessmessaging`" \
-d "{
'eventType': 'IS_TYPING',
}"
// 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!');
});
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 ");
# 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 ')
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 ");