消息传输状态事件 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

消息传输状态事件

消息传送状态事件发布有关您的 Sidewalk 设备和 Amazon IoT Wireless 之间交换的消息状态的事件通知。对于从 Wireless 发送到 Sidewalk 设备的下行链路消息,以及从您的设备发送到 Amazon IoT Wireless 的上行链路消息,都会发布事件通知。 Amazon IoT

消息传输状态事件的工作原理

将 Sidewalk 设备登录到 Amazon IoT Wireless 并连接设备后,即可在您的设备和 Wireless 之间交换消息。 Amazon IoT 这些事件会发布有关消息传送状态的通知,表明这些消息是成功传送到您的设备还是已成功传送到 Amazon IoT 无线网络。

例如,如果从设备收到带有确认(ACK)标志的上行链路消息,则会发布一条通知,指示消息已成功传输。当您从 Amazon IoT Wireless 向 Sidewalk 设备发送下行链路消息时,即使数据包已丢失或消息未传送,SendDataToWirelessDeviceAPI 也会返回下行链路消息。MessageId在这种情况下,消息传输状态事件会返回一个错误,指示消息未能传输到设备。

为消息传输状态事件启用通知

在 Sidewalk 消息传送状态保留主题的订阅者可以接收消息之前,您必须使用 Amazon IoT Wireless API 或为他们启用事件通知。 Amazon CLI您可以为自己的所有 Sidewalk 资源 Amazon Web Services 账户 或特定资源启用这些事件。

注意

Sidewalk 消息传输状态事件配置在控制台中不可用。

有关如何启用这些事件的更多信息,请参阅 使用 Amazon CLI 启用通知

用于消息传输状态事件的 MQTT 主题的格式

要接收有关消息传输状态事件的通知,您可以订阅以美元($)符号开头的 MQTT 保留主题。有关更多信息,请参阅MQTT 主题

Sidewalk 近似事件的保留 MQTT 主题使用以下格式:

  • 对于资源级主题:

    $aws/iotwireless/events/{eventName}/{eventType}/sidewalk/wireless_devices

  • 对于标识符主题:

    $aws/iotwireless/events/{eventName}/{eventType}/sidewalk/{resourceType}/{resourceID}/{id}

其中:

{eventName}

{eventName} 必须是 message_delivery_status

{eventType}

{eventType} 可以是 successerror

{resourceType}

{resourceType} 可以是 sidewalk_accountswireless_devices

{resourceID}

{resourceID} 对于 {resourceType} sidewalk_accountsamazon_id,对于 {resourceType} wireless_deviceswireless_device_id

您还可以使用 + 通配符同时订阅多个主题。+ 通配符匹配级别中包含字符的任何字符串。例如,如果您希望收到所有可能的事件类型(successerror)的通知以及注册到特定 Amazon ID 的所有设备通知,可以使用以下主题筛选条件:

$aws/iotwireless/events/message_delivery_status/+/sidewalk/sidewalk_accounts/amazon_id/+

注意

您不能使用通配符 # 订阅保留主题。有关主题筛选条件的更多信息,请参阅 主题筛选条件

消息传输状态事件的消息有效负载

为消息传输状态事件启用通知后,将通过 MQTT 随 JSON 有效负载一起发布事件消息。这些事件包含以下示例有效负载,具体取决于事件是否成功,表示设备已成功接收消息或出现错误。

成功事件

下图显示了事件为成功时的有效负载格式。

{ "eventId": "string", "eventType": "success", "WirelessDeviceId": "string", "timestamp": "timestamp", "Sidewalk": { "Seq": "Integer", "MsgType": "CUSTOM_COMMAND_ID_RESP", "CmdExStatus": "COMMAND_EXEC_STATUS_SUCCESS" } }

负载包含以下属性:

eventId

唯一的事件 ID,字符串。

eventType

发生的事件类型。可以是 successerror。在本例中,eventTypeerror

WirelessDeviceId

无线设备的标识符。

timestamp

事件发生时的 Unix 时间戳。

sidewalk

包含成功消息的状态代码、消息的序列号和消息类型的 Sidewalk 包装程序。

错误事件

下图显示了事件指示发生错误时的有效负载格式。

{ "eventId": "string", "eventType": "error" , "WirelessDeviceId": "string", "timestamp": "timestamp", "Sidewalk": { "Seq": "Integer", "Status": "DeviceNotReachable" | "RADIO_TX_ERROR" | "MEMORY_ERROR" } }

有效负载包含与 eventTypesuccess 时类似的属性。以下是一些差别或附加属性:

eventType

发生的事件类型。在本例中,eventTypeerror

sidewalk

包含序列号和状态代码的 Sidewalk 包装程序,状态代码指示下行链路消息未成功发送的原因。