Sự kiện

Sự kiện là những thông báo mà trợ lý ảo có thể gửi và nhận. Có 3 loại sự kiện:

Sự kiện do máy chủ tạo

Nền tảng RBM gửi các sự kiện để thông báo cho nhân viên hỗ trợ của bạn về các bản cập nhật ở cấp máy chủ, chẳng hạn như thời gian hết hạn của tin nhắn.

Để biết các lựa chọn về định dạng và giá trị, hãy xem ServerEvent.

Trạng thái ra mắt nhân viên hỗ trợ đã thay đổi

Nền tảng RBM sẽ gửi một AgentLaunchEvent cho mọi thay đổi về trạng thái ra mắt của nhân viên hỗ trợ. Ví dụ: khi trạng thái của hãng hàng không thay đổi từ PENDING thành LAUNCHED sau khi hãng vận chuyển phê duyệt, bạn sẽ nhận được sự kiện AgentLaunchEvent để cho biết sự thay đổi này. Những sự kiện này được gửi cho tất cả các tác nhân RBM, cho tất cả các thay đổi về trạng thái khởi chạy của nhà mạng.

Cấu hình webhook

Bạn có thể sử dụng webhook ở cấp độ đối tác hoặc cấp độ nhân viên hỗ trợ để nhận những thông báo này.

Điều kiện tiên quyết

  • Định cấu hình webhook cho tính năng nhắn tin RBM (đây là yêu cầu bắt buộc để nhận tin nhắn của người dùng và sự kiện do người dùng tạo).
  • Để phân biệt giữa các sự kiện do người dùng tạo và các sự kiện trạng thái khởi chạy của tác nhân, hãy kiểm tra đường dẫn message.attributes.type để biết giá trị agent_launch_event.

Cấu trúc tải sự kiện

AgentLaunchEvent được gửi dưới dạng một thông báo Pub/Sub. Ví dụ:

{
  "message": {
    "attributes": {
      "business_id": "rbm-chatbot-id@rbm.goog",
      "event_type": "REJECTED",
      "product": "RBM",
      "project_number": "3338881441851",
      "type": "agent_launch_event"
    },
    "data": "....BASE64-encoded-JSON-with-notification...",
    "messageId": "14150481888479752",
    "message_id": "14150481888479752",
    "publishTime": "2025-03-05T18:50:21.88Z",
    "publish_time": "2025-03-05T18:50:21.88Z"
  },
  "subscription": "projects/rbm-partner-gcp/subscriptions/rbm-sub"
}

Trường AgentLaunchEvent.LaunchState trong tải trọng sự kiện cho biết trạng thái khởi chạy mới của tác nhân. Sau đây là các giá trị có thể có:

Giá trị Trạng thái ra mắt nhân viên hỗ trợ Thông tin chi tiết
UNLAUNCHED Chưa ra mắt Được phép chỉnh sửa.
PENDING Đang chờ xử lý Yêu cầu đã được gửi đến một hãng vận chuyển để xem xét.
LAUNCHED Đã ra mắt Tin nhắn được phép gửi trên một nhà mạng nhất định.
REJECTED Bị từ chối trên một hãng vận chuyển cụ thể Lý do từ chối được nêu trong phần nhận xét.
SUSPENDED Bị tạm ngưng trên một hãng vận chuyển cụ thể Lý do tạm ngưng được nêu trong phần bình luận.

Trường dữ liệu chứa một đối tượng JSON được mã hoá Base64 với thông tin chi tiết về trạng thái khởi chạy. Dưới đây là ví dụ về JSON đã giải mã:

    {
      "eventId": "rbm-chatbot-id/0a7ed168-676e-4a56-b422-b23434",
      "agentId": "rbm-chatbot-id@rbm.goog",
      "botDisplayName": "RBM Welcome Bot 7 - RBM Chatbot name",
      "brandId": "bd38fbff-392a-437b-a6f2-7f2e43745b56",
      "brandDisplayName": "Chatbots brand",
      "regionId": "/v1/regions/fi-rcs",
      "oldLaunchState": "PENDING",
      "newLaunchState": "REJECTED",
      "actingParty": "rbm-support@google.com",
      "comment": "Carrier has rejected the launch: policy violation",
      "sendTime": "2025-03-05T18:50:19.386436Z"
    }

Bảng sau đây cho biết các trạng thái khởi chạy của tác nhân và những hành động kích hoạt các trạng thái đó:

Trạng thái khởi chạy cũ Trạng thái ra mắt mới Yếu tố thúc đẩy sự thay đổi
PENDING LAUNCHED Đang chờ nhân viên hỗ trợ được phê duyệt.
PENDING REJECTED Nhân viên hỗ trợ đang chờ xử lý bị từ chối.
LAUNCHED SUSPENDED Nhân viên hỗ trợ đã ra mắt bị tạm ngưng.
SUSPENDED LAUNCHED Nhân viên hỗ trợ bị tạm ngưng đã được kích hoạt lại.
SUSPENDED TERMINATED Nhân viên hỗ trợ bị tạm ngưng đã bị chấm dứt.
TERMINATED LAUNCHED Nhân viên hỗ trợ đã chấm dứt được ra mắt.

Tin nhắn đã hết hạn; thu hồi thành công

Thông báo đã hết hạn và bị thu hồi thành công. Sự kiện này sẽ là một điều kiện kích hoạt phù hợp cho chiến lược nhắn tin dự phòng của bạn.

{
  "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]
}

Tin nhắn đã hết hạn; không thu hồi được

Thông báo đã hết hạn nhưng chưa bị thu hồi.

{
  "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]
}

Không đảm bảo gửi được thư.

  • Nếu thư đã được gửi, bạn sẽ nhận được sự kiện DELIVERED tại webhook của mình.
  • Nếu thông báo không được gửi, hãy sử dụng API thu hồi để gửi yêu cầu thu hồi.

Nếu thông báo có tính chất khẩn cấp, chẳng hạn như OTP hoặc cảnh báo gian lận, thì tốt nhất là bạn nên gửi thông báo qua một kênh thay thế như SMS ngay cả khi điều này dẫn đến việc người dùng nhận được thông báo trùng lặp.

Sự kiện do người dùng tạo

Giống như tin nhắn của người dùng và các bước kiểm tra khả năng, nhân viên hỗ trợ của bạn sẽ nhận được các sự kiện của người dùng dưới dạng JSON.

Để biết các lựa chọn về định dạng và giá trị, hãy xem UserEvent.

Người dùng nhận được tin nhắn của nhân viên hỗ trợ

Sự kiện này cho biết rằng một thông báo đã được gửi.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "DELIVERED",
  "eventId": "EVENT_ID",
  "messageId": "MESSAGE_ID",
  "agentId": "AGENT_ID"
}

Người dùng đọc tin nhắn của nhân viên hỗ trợ

Sự kiện này cho biết một tin nhắn đã được mở hoặc xác nhận.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "READ",
  "eventId": "EVENT_ID",
  "messageId": "MESSAGE_ID",
  "agentId": "AGENT_ID"
}

Người dùng bắt đầu nhập

Sự kiện này cho biết người dùng đang nhập dữ liệu.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "IS_TYPING",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID"
}

Người dùng gửi tin nhắn văn bản

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "text": "Hi",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID"
}

Người dùng gửi một tệp

{
  "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"
}

Người dùng nhấn vào một câu trả lời được đề xuất

Khi người dùng nhấn vào một câu trả lời được đề xuất, nhân viên hỗ trợ của bạn sẽ nhận được một sự kiện có dữ liệu và văn bản postback của câu trả lời đó.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID",
  "suggestionResponse": {
    "postbackData": "postback_1234",
    "text": "Hello there!"
  }
}

Người dùng nhấn vào một hành động được đề xuất

Khi người dùng nhấn vào một hành động được đề xuất, tác nhân của bạn sẽ nhận được một sự kiện kèm theo dữ liệu gửi lại của hành động đó.

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID",
  "suggestionResponse": {
    "postbackData": "postback_1234"
  }
}

Người dùng huỷ đăng ký nhận thông báo về cuộc trò chuyện

Nếu không muốn nhận tin nhắn không thiết yếu của một doanh nghiệp, chẳng hạn như tin nhắn quảng bá, người dùng có thể huỷ đăng ký nhận tin nhắn RBM trong Google Tin nhắn.

Sự kiện UNSUBSCRIBE cho biết người dùng đã huỷ đăng ký cuộc trò chuyện với nhân viên hỗ trợ của bạn và doanh nghiệp mà nhân viên đó đại diện. Sau đây là ví dụ về tải trọng JSON:

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "UNSUBSCRIBE",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID"
}

Cách hoạt động

  • Lựa chọn Huỷ đăng ký luôn có trong trình đơn trò chuyện. Đối với các tác nhân quảng bá và tác nhân đa năng, lựa chọn này cũng xuất hiện ngay trong cuộc trò chuyện sau một số lượng tin nhắn chưa đọc nhất định (các quy tắc cụ thể sẽ khác nhau tuỳ theo quốc gia).
  • Khi bạn chọn Huỷ đăng ký, hai hành động sẽ diễn ra đồng thời: Google Tin nhắn gửi một từ khoá theo quốc gia (ví dụ: "DỪNG") đến tác nhân của bạn và nền tảng RBM gửi một sự kiện HUỶ ĐĂNG KÝ đến webhook của bạn.

    Từ khoá được xác định bằng mã quốc gia gồm 2 chữ cái trong số điện thoại của người dùng. Bảng sau đây liệt kê các từ khoá cho từng quốc gia được hỗ trợ.

    Quốc gia (mã quốc gia) Từ khoá huỷ đăng ký
    Hoa Kỳ (US), Ấn Độ (IN), Vương quốc Anh (GB), Đức (DE) DỪNG
    Tây Ban Nha (ES), Mexico (MX) BAJA
    Pháp (FR) DỪNG
    Brazil (BR) parar
  • Sau khi người dùng huỷ đăng ký, cuộc trò chuyện vẫn nằm trong hộp thư đến của họ, trừ phi bị báo cáo là tin nhắn rác. Trong trường hợp đó, cuộc trò chuyện sẽ chuyển đến thư mục Tin nhắn rác và bị chặn.

  • Để xác định các lỗi vi phạm chính sách và quy tắc kinh doanh, Google sẽ giám sát các mẫu tin nhắn sau khi người dùng huỷ đăng ký.

Quy tắc kinh doanh

  • Là đối tác RBM quản lý cuộc trò chuyện này, bạn có trách nhiệm tuân thủ yêu cầu huỷ đăng ký của người dùng.
  • Nếu không thể huỷ đăng ký trong chuỗi tin nhắn, bạn phải gửi ngay một tin nhắn xác nhận kèm theo đường liên kết trực tiếp đến trang web hoặc ứng dụng nơi người dùng có thể quản lý lựa chọn ưu tiên về việc đăng ký.
  • Sau khi người dùng huỷ đăng ký, bạn không được phép gửi tin nhắn không thiết yếu.
  • Bạn vẫn được phép gửi những tin nhắn quan trọng. Những trường hợp này bao gồm:
    • Thông tin xác thực, chẳng hạn như mật khẩu một lần (OTP)
    • Thông báo về một dịch vụ cụ thể mà người dùng đã yêu cầu và đồng ý
    • Xác nhận yêu cầu huỷ đăng ký của người dùng, kèm theo thông tin để quản lý thêm các lựa chọn ưu tiên về thông tin liên lạc

Ví dụ:

Nếu người dùng huỷ đăng ký nhận thông tin từ một hãng hàng không có trường hợp sử dụng là nhiều mục đích, bạn phải ngừng gửi thư tiếp thị. Tuy nhiên, bạn có thể gửi thông tin cập nhật về chuyến bay nếu người dùng đã đồng ý rõ ràng nhận thông tin cập nhật cho chuyến bay cụ thể đó.

Lý do huỷ đăng ký

Khi huỷ đăng ký nhận thông tin từ nhân viên hỗ trợ của bạn, người dùng có thể chọn một lý do trong số các lựa chọn sau:

  • Không đăng ký
  • Quá nhiều tin nhắn
  • Không còn quan tâm
  • Tin nhắn rác
  • Khác

Hiện tại, chúng tôi không chia sẻ lý do huỷ đăng ký với đối tác hoặc nhà mạng.

Người dùng đăng ký lại cuộc trò chuyện

Người dùng có thể đăng ký lại một cuộc trò chuyện mà họ đã huỷ đăng ký trước đó trong Google Tin nhắn.

Sự kiện SUBSCRIBE cho biết rằng người dùng muốn nhận tin nhắn từ đặc vụ của bạn, bao gồm cả nội dung không thiết yếu như nội dung quảng bá. Sau đây là một ví dụ về tải trọng JSON:

{
  "senderPhoneNumber": "PHONE_NUMBER",
  "eventType": "SUBSCRIBE",
  "eventId": "EVENT_ID",
  "agentId": "AGENT_ID"
}

Cách hoạt động

  • Tuỳ chọn Đăng ký (có trong cả trình đơn trò chuyện và đường liên kết trong cuộc trò chuyện) cho phép người dùng đăng ký lại một cuộc trò chuyện mà họ đã huỷ đăng ký.
  • Khi bạn chọn Đăng ký, hai hành động sẽ diễn ra đồng thời: Google Tin nhắn gửi một từ khoá theo quốc gia (ví dụ: "BẮT ĐẦU") đến nhân viên hỗ trợ của bạn và nền tảng RBM gửi một sự kiện ĐĂNG KÝ đến webhook của bạn.

    Từ khoá cụ thể được xác định bằng mã quốc gia gồm 2 chữ cái của số điện thoại người dùng. Bảng sau đây liệt kê các từ khoá cho từng quốc gia được hỗ trợ.

    Quốc gia (mã quốc gia) Từ khoá đăng ký
    Hoa Kỳ (US), Ấn Độ (IN), Vương quốc Anh (GB), Đức (DE) BẮT ĐẦU
    Tây Ban Nha (ES), Mexico (MX) ALTA
    Pháp (FR) Démarrer
    Brazil (BR) começar

Quy tắc kinh doanh

  • Là đối tác RBM quản lý cuộc trò chuyện này, bạn có trách nhiệm tuân thủ yêu cầu đăng ký lại của người dùng.
  • Việc đăng ký lại áp dụng cho tất cả các loại thông báo, bao gồm cả nội dung không thiết yếu như chương trình khuyến mãi.
  • Nếu người dùng nhắn tin cho doanh nghiệp của bạn sau khi huỷ đăng ký, thì đây có thể được coi là yêu cầu đăng ký lại.
  • Nếu người dùng đăng ký lại bên ngoài kênh nhắn tin (ví dụ: trên trang web của bạn), thì bạn, với tư cách là đối tác RBM, có trách nhiệm cập nhật trạng thái của họ và tiếp tục gửi tin nhắn cho phù hợp.

Sự kiện do tác nhân tạo

Nhân viên hỗ trợ của bạn gửi các sự kiện để mô phỏng hoạt động tương tác của con người và đảm bảo với người dùng rằng nhân viên hỗ trợ của bạn đang tương tác với tin nhắn của họ. Đối với người dùng, các sự kiện sẽ xuất hiện dưới dạng thông báo trong cuộc trò chuyện của họ.

Để biết các lựa chọn về định dạng và giá trị, hãy xem phones.agentEvents.

Nhân viên hỗ trợ gửi một sự kiện READ

Đối với người dùng, sự kiện này xuất hiện dưới dạng thông báo đã đọc cho một tin nhắn cụ thể. Thông báo cho người dùng biết rằng nền tảng RBM đã gửi tin nhắn của họ và nhân viên hỗ trợ đang xử lý tin nhắn đó.

Đoạn mã sau đây sẽ gửi một sự kiện READ cho một thông báo có messageId trùng khớp.

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);
Đoạn mã này là một phần trích dẫn từ nhân viên hỗ trợ mẫu RBM.

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");
Đoạn mã này là một phần trích dẫn từ nhân viên hỗ trợ mẫu RBM.

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)
Đoạn mã này là một phần trích dẫn từ nhân viên hỗ trợ mẫu RBM.

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");
Đoạn mã này là một phần trích dẫn từ nhân viên hỗ trợ mẫu RBM.

Nhân viên hỗ trợ gửi một sự kiện IS_TYPING

Đối với người dùng, sự kiện này xuất hiện dưới dạng chỉ báo nhập và cho họ biết rằng tác nhân của bạn đang soạn tin nhắn. Chỉ báo nhập hết hạn sau một khoảng thời gian ngắn (khoảng 20 giây) hoặc khi thiết bị của người dùng nhận được tin nhắn mới từ trợ lý ảo của bạn. Tác nhân của bạn có thể gửi nhiều sự kiện IS_TYPING để đặt lại bộ tính giờ hết hạn của chỉ báo nhập.

Đoạn mã sau đây sẽ gửi một sự kiện 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!');
});
Đoạn mã này là một phần trích dẫn từ nhân viên hỗ trợ mẫu RBM.

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");
Đoạn mã này là một phần trích dẫn từ nhân viên hỗ trợ mẫu RBM.

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')
Đoạn mã này là một phần trích dẫn từ nhân viên hỗ trợ mẫu RBM.

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");
Đoạn mã này là một phần trích dẫn từ nhân viên hỗ trợ mẫu RBM.