События

События — это уведомления, которые ваш агент может отправлять и получать. Есть три типа событий:

События, генерируемые сервером

Платформа 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, даже если это приведет к дублированию сообщений пользователю.

Пользовательские события

Как и в случае с пользовательскими сообщениями и проверками возможностей, ваш агент получает пользовательские события в формате 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 доставила его сообщение и агент его обрабатывает.

Следующий код отправляет событие READ для сообщения с соответствующим messageId .

КУЛЬ

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_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('../libs/rbm_api_helper');

// Send the device an event to indicate that messageId has been read
rbmApiHelper.sendReadMessage('+12223334444', messageId);
Этот код представляет собой отрывок из примера агента RBM .

Джава

import com.google.rbm.samples.lib.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");
Этот код представляет собой отрывок из примера агента RBM .

Питон

# 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)
Этот код представляет собой отрывок из примера агента RBM .

С#

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");
Этот код представляет собой отрывок из примера агента RBM .

Агент отправляет событие IS_TYPING

Для пользователей это событие отображается как индикатор набора текста и сообщает им, что ваш агент составляет сообщение. Индикатор набора текста исчезает через короткое время (приблизительно 20 секунд) или когда устройство пользователя получает новое сообщение от вашего агента. Ваш агент может отправить несколько событий IS_TYPING для сброса таймера истечения срока действия индикатора набора текста.

Следующий код отправляет событие IS_TYPING .

КУЛЬ

curl -X POST "https://REGION-rcsbusinessmessaging.googleapis.com/v1/phones/PHONE_NUMBER/agentEvents?eventId=EVENT_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('../libs/rbm_api_helper');

// Send the device an event to indicate that the agent is typing
rbmApiHelper.sendIsTypingMessage('+12223334444', function() {
    console.log('Typing event sent!');
});
Этот код представляет собой отрывок из примера агента RBM .

Джава

import com.google.rbm.samples.lib.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");
Этот код представляет собой отрывок из примера агента RBM .

Питон

# 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')
Этот код представляет собой отрывок из примера агента RBM .

С#

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");
Этот код представляет собой отрывок из примера агента RBM .