View a markdown version of this page

RCS 消息事件 - AWS 最终用户消息 SMS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

RCS 消息事件

当您发送带有AWS最终用户消息的 RCS 消息时,RCS 平台会生成报告消息生命周期变化、收件人互动和系统级结果的事件。与传统的短信发送回执相比,这些事件提供了更丰富的信号,使您可以实时了解消息是已送达、已阅读、过期还是回退到短信或彩信。

出站状态事件(传送、读取、到期和回退)通过配置集的事件目的地传送。入站互动事件(打字指示器和建议点击)将发送到您在 RCS 代理上配置的双向 Amazon SNS 主题。要设置活动目的地,请参阅AWS 最终用户消息 SMS 中的事件目的地

有关生成这些事件的消息的详细信息,请参阅发送丰富的 RCS 消息

RCS 事件的常用字段

所有 RCS 事件,包括传送状态事件、已读回执和入站互动事件,都包括以下标识 RCS 代理的字段:

rcsBusinessId

发送或接收消息的 RCS 代理的平台标识符。

agentIsoCountryCode

RCS 代理注册所在国家/地区的 ISO 国家/地区代码,例如USCA

这些字段出现在所有 RCS 事件中。它们不包含在短信或彩信活动中。

配送状态事件

传送状态事件表示出站 RCS 邮件的生命周期状态。您可以使用这些事件来确认交付、触发后备逻辑或提醒运营团队注意内容违规行为。

每个出站状态事件都有一个 eventTypeRCS_DELIVERED(以及相关的 RCS 状态事件类型)和一个包含以下值之一的messageStatus字段:

DELIVERED

消息到达了收件人的设备。使用此事件取消所有待处理的回退计时器。

PENDING

RCS 平台接受了该消息,但尚未发送。收到此事件后,启动备用计时器。

UNDELIVERABLE

平台永久无法传送消息(例如,收件人的设备不支持 RCS)。触发您的短信或彩信后备并标记电话号码,以便将来做出路由决定。

REJECTED

由于违反内容政策,该邮件被拒绝。提醒您的运营团队并查看消息内容。

以下示例显示了交付事件负载:

{ "eventType": "RCS_DELIVERED", "eventVersion": "1.0", "eventTimestamp": 1781661267660, "isFinal": true, "originationPhoneNumber": "rcs-c020de2520714385964ebf7b095c4b60", "destinationPhoneNumber": "+13022640220", "isoCountryCode": "US", "isInternationalSend": false, "messageId": "test-sc1-004", "messageRequestTimestamp": 1781300397157, "messageEncoding": "UNICODE", "messageType": "TRANSACTIONAL", "messageStatus": "DELIVERED", "messageStatusDescription": "Message has been accepted by phone", "totalMessageParts": 1, "totalMessagePrice": 0.007, "totalCarrierFee": 0.00494, "rcsMetadata": { "billingEventType": "RICH" }, "rcsBusinessId": "endusermessagingtesting1_06fr8x6o_agent", "agentIsoCountryCode": "US" }
注意

丰富 RCS 消息的状态事件包括账单元数据。该rcsMetadata.billingEventTypeRICH适用于丰富的 RCS 消息。

阅读收据

已读回执表示收件人打开或查看了您的消息。使用已读回执来跟踪参与度并衡量阅读率。

READ

收件人查看了消息。RCS_DELIVERED事件始终在事件之前或与RCS_READ事件一起发送,因此,如果您没有处理单独的传送事件,请在收到已读事件时将消息视为已送达。

读取事件使用 o eventType fRCS_READmessageStatus设置为READ

{ "eventType": "RCS_READ", "eventVersion": "1.0", "eventTimestamp": 1781661267203, "isFinal": true, "originationPhoneNumber": "rcs-c020de2520714385964ebf7b095c4b60", "destinationPhoneNumber": "+13022640220", "isoCountryCode": "US", "isInternationalSend": false, "messageId": "test-sc1-004", "messageRequestTimestamp": 1781300397157, "messageEncoding": "UNICODE", "messageType": "TRANSACTIONAL", "messageStatus": "READ", "messageStatusDescription": "Message has been read by recipient", "totalMessageParts": 1, "totalMessagePrice": 0.0, "totalCarrierFee": 0.0, "rcsBusinessId": "endusermessagingtesting1_06fr8x6o_agent", "agentIsoCountryCode": "US" }

您可以将事件数除以READ事件数乘以 100 来计算读取速率。DELIVERED

键入指示器

键入指示器事件表示参与者正在撰写消息。这些事件是双向流动的:

  • 入站(用户对代理):当收件人开始撰写回复时,您会收到有关您的双向 Amazon SNS 主题的入站通知。messageBody包含一个带有为的 JSON 对象RCS_TYPINGtype使用它来准备对话逻辑或在仪表板中显示状态。

  • 出站(代理对用户): Agent-initiated键入指示器是一项计划中的功能,它向收件人显示您的代理正在准备响应。查看AWS最终用户消息发布说明,了解当前的可用性。

以下示例显示了入站键入通知:

{ "originationNumber": "12679164820", "destinationNumber": "rcs-cb1e6e519e9049fabf8c0ae38e4d876b", "messageBody": "{\"type\":\"RCS_TYPING\",\"receivedAt\":\"2026-06-17T17:36:29.937+0000\"}", "inboundMessageId": "12679164820-2026-06-17T17:36:29.937+0000" }
注意

Agent-initiated 您的代理发送给收件人的打字指示器和代理启动的已读回执是计划中的功能。查看AWS最终用户消息发布说明,了解当前的可用性。

TTL 到期事件

当您在消息上设置TimeToLive值并且消息传送之前已过 TTL 时,RCS 平台会尝试撤消(删除)该消息。结果将生成以下事件之一:

TTL_EXPIRATION_REVOKED

在收件人查看过期邮件之前,已成功将其删除。您可以安全地触发短信或彩信回退,以确保收件人收到内容。

TTL_EXPIRATION_REVOKE_FAILED

撤销失败,邮件可能仍会传送给收件人。在这种情况下,请先评估发送备用消息是否会导致重复,然后再继续。

TTL 到期事件与您的后备策略配合使用。有关配置消息过期时间的详细信息,请参阅配置 RCS 消息到期时间

后备事件

当 RCS 消息无法传送并且AWS最终用户消息触发短信或彩信回退(通过基于池的配置或每条消息FallbackConfiguration)时,该服务会生成指示回退结果的事件。

后备事件表明:

  • 备用消息是否成功发送。

  • 用于后备的频道(短信或彩信)。

  • 未传送原始 RCS 消息的原因(例如,设备未送达 RCS-capable、TTL 过期或平台不可用)。

监控这些事件以衡量您的回退率,并确定持续需要回传的电话号码。有关配置每条消息后备的详细信息,请参阅。配置每条消息的短信或彩信后备

建议点击(回发)事件

当收件人选择建议(建议的回复或建议的操作)时,您会收到一个回发事件,其中包含您在该建议上配置的PostbackData字符串。使用回发数据来路由对话逻辑,而不是显示文本。

重要

建议点击(回发)事件仅发送到您的双向 Amazon SNS 主题,不会发送到配置设置的事件目的地。

通知messageBody包含一个 JSON 对象,type其中包含为SUGGESTIONtext、显示屏和postbackData你在建议中设置的内容:

{ "originationNumber": "12679164820", "destinationNumber": "rcs-cb1e6e519e9049fabf8c0ae38e4d876b", "messageBody": "{\"type\":\"SUGGESTION\",\"text\":\"Open\",\"postbackData\":\"Open\"}", "inboundMessageId": "nIMYZGrBUILWng0Qck0deqVaAoTSJY5PsktKYOBYJhVaTsrdMdrs714e8SLZAjD3" }

有关如何配置建议及其回发数据的详细信息,请参阅配置 RCS 建议

重要

将您的PostbackData值设计为结构化标识符(例如action:confirm_order:12345),以便您可以通过编程方式对其进行解析。避免依赖显示文本,因为显示文本可以在不影响路由逻辑的情况下发生变化。

对话式定价活动和字段

如果您注册了 RCS 代理以使用对话定价,则当消息是活动对话会话的一部分时,AWS最终用户消息将字段添加到传送和入站事件,并在会话开始时发送CONVERSATION_STARTED事件。有关对话定价模式的概述,请参阅对话定价

对话字段

仅当邮件是活动对话会话的一部分时,以下字段才会出现在传送或入站事件中。当消息不是对话的一部分时,“AWS最终用户消息” 将完全省略这些字段。

conversationInitiatingMessageId

启动对话会话的消息 ID。在配送和入库活动时出现。

conversationInitiatingMessageType

对话是如何开始的:您的代理OUTBOUND何时发送第一条消息,或者收件人INBOUND何时发送第一条消息。在配送和入库活动时出现。

conversationSessionFee

一次性会话费用(以美元为单位),每 24 小时会话收取一次。仅在配送活动中出现。

当一条消息是活跃对话会话的一部分时,其传送事件将报告为totalMessagePricetotalCarrierFee0.0,因为会话费用涵盖了该消息。以下示例显示了活动对话中某封邮件的传送事件:

{ "eventType": "RCS_DELIVERED", "eventVersion": "1.0", "eventTimestamp": 1751234567890, "isFinal": true, "originationPhoneNumber": "rcs-f4e4252a5abe48bea50a6c176a056124", "destinationPhoneNumber": "+14376638816", "isoCountryCode": "CA", "isInternationalSend": false, "messageId": "b4a3196d-5b61-4884-a0d9-745acf1f6235", "messageRequestTimestamp": 1751234565000, "messageEncoding": "UNICODE", "messageType": "TRANSACTIONAL", "messageStatus": "DELIVERED", "messageStatusDescription": "Message has been accepted by phone", "totalMessageParts": 1, "totalMessagePrice": 0.0, "totalCarrierFee": 0.0, "rcsMetadata": { "billingEventType": "BASIC" }, "rcsBusinessId": "endusermessagingtesting1_06fr8x6o_agent", "agentIsoCountryCode": "CA", "conversationInitiatingMessageId": "177930985040408106521449", "conversationInitiatingMessageType": "OUTBOUND", "conversationSessionFee": 0.012 }

对话已开始活动

AWS对话会话开始时,CONVERSATION_STARTED最终用户消息会向您的 RCS 事件 Amazon SNS 主题发送一个事件。当您的代理发送消息并且收件人在 24 小时内回复(业务启动),或者当收件人发送消息而您的代理做出响应(用户启动)时,会话开始。

messageBody包含一个包含以下字段的 JSON 对象:

type

始终为 CONVERSATION_STARTED

startTime

会话开始时间,采用 ISO 8601 格式。

endTime

会话到期时间,采用 ISO 8601 格式。这始终是 24 小时后startTime

conversationInitiatingMessageId

开始对话的消息 ID。

conversationInitiatingMessageType

OUTBOUND当您的代理发送第一条消息或收件人发送第一条消息INBOUND时。

以下示例显示了一个CONVERSATION_STARTED事件:

{ "originationNumber": "14376638816", "destinationNumber": "rcs-e138fa39eabf4d6d8e95546248c8dfa7", "messageBody": "{\"type\":\"CONVERSATION_STARTED\",\"startTime\":\"2026-06-28T04:03:08.002+0000\",\"endTime\":\"2026-06-29T04:08:08.002+0000\",\"conversationInitiatingMessageId\":\"7e7da6ec-234a-4d4f-bbc5-943bcca663ab\",\"conversationInitiatingMessageType\":\"OUTBOUND\"}", "inboundMessageId": "7e7da6ec-234a-4d4f-bbc5-943bcca663ab" }

将事件路由到目的地

AWS最终用户消息通过配置集的事件目的地路由 RCS 事件。您可以在与发送操作关联的配置集上配置事件目的地。支持的目的地包括:

Amazon SNS

使用 Amazon SNS 主题进行实时事件处理,包括触发 Lamb AWS da 函数以响应送货收据或点击建议。

Amazon Data Firehose

使用 Firehose 传输流将事件发送到亚马逊 S3、亚马逊 Redshift 或其他分析目的地,以进行长期存储和报告。

Amazon CloudWatch 日志

使用 CloudWatch 日志进行调试、日志分析和设置事件模式 CloudWatch 警报(例如,在高拒绝率时发出警报)。

要了解如何创建和配置事件目的地,请参阅AWS 最终用户消息 SMS 中的事件目的地

呼叫时SendRcsMessage,请指定ConfigurationSetName参数以将消息与您的配置集相关联。该邮件生成的出站状态事件将路由到您配置的目的地。

配置与事件目标匹配的事件类型时,可以选择RCS_ALL使用单一匹配类型订阅所有 RCS 事件类型,而不是单独列出每个 RCS 事件类型(例如RCS_DELIVEREDRCS_READ)。

注意

入站互动事件,包括键入指示器和建议点击(回传),将传送到您的 RCS 代理上配置的双向 Amazon SNS 主题,而不是发送到配置集的事件目的地。

事件处理的最佳实践

  • 在开始发送生产消息之前,请配置事件目的地。这样可以确保您从一开始就捕获所有事件。

  • 使用DELIVERED事件取消后备计时器。如果您收到送达确认,请不要发送短信或彩信回复。

  • 立即处理订阅事件 (UNSUBSCRIBE),以保持对报文传送法规的遵守。

  • 实现等性事件处理。使用消息标识符和事件类型作为重复数据删除密钥来处理重复的事件传送。

  • 通过比较事件时间戳来处理乱序事件。事件的到达顺序可能与其发生顺序不同。

  • 通过 CloudWatch 警报监控拒绝率和无法投递率,以发现内容问题或尽早定位问题。