

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

# 使用 SendConnectorEvent API 发送设备事件
<a name="send-connector-events"></a>

## 设备启动的事件概述
<a name="device-initiated-events-overview"></a>

虽然 `SendConnectorEvent` API 用于异步响应`AWS.SendCommand`和`AWS.DiscoverDevices`操作，但它也用于将任何设备启动的事件通知托管集成。设备启动的事件可以定义为设备在没有用户启动命令的情况下生成的任何事件。这些设备事件可能包括但不限于设备状态变化、运动检测、电池电量等。您可以使用带操作 DEV **IC** E\_EVENT 的 `SendConnectorEvent` API 将这些事件发送回托管集成。

以下部分以安装在家中的智能摄像头为例，进一步说明这些事件的工作流程：

![设备事件工作流程](https://docs.aws.amazon.com/zh_cn/iot-mi/latest/devguide/images/device-events-workflow.png)


**设备事件工作流程**

1. 您的摄像机会检测到动作，并为此生成一个发送到您的资源服务器的事件。

1. 您的资源服务器处理该事件并将其发送到您的 C2C 连接器。

1. 您的连接器会将此事件转换为 AWS IoT Device Manag `DEVICE_EVENT` ement 接口的托管集成。

1. 您的 C2C 连接器使用操作设置为 “DEVICE\_EVENT” `SendConnectorEvent` 的 API 将此设备事件发送到托管集成。

1. 托管集成可识别相关客户，并将此事件转发给客户。

1. 客户收到此事件并通过用户标识符将其显示给用户。

有关 `SendConnectorEvent` API 操作的更多信息，请参阅 `SendConnectorEvent` AWS IoT Device Management 托管集成 API 参考指南。

## 设备启动的事件要求
<a name="device-events-requirements"></a>

以下是设备启动的事件的一些要求。
+ 您的 C2C 连接器资源应该能够从您的资源服务器接收异步设备事件
+ 您的 C2C 连接器资源应该能够使用用于注册 C2C 连接器的 AWS 凭证通过 Sigv4 调用 AWS IoT 设备管理服务 API 的 AWS 账户 托管集成。

以下示例演示了连接器通过 API 发送源于设备的事件： SendConnectorEvent 

```
AWS-API: /SendConnectorEvent
URI: POST /connector-event/{{{Your-Connector-Id}}}

{
   "UserId": "Your-End-User-ID",
   "Operation": "DEVICE_EVENT",
   "OperationVersion": "1.0",
   "StatusCode": 200,
   "Message": None,
   "ConnectorDeviceId": "{{Your_Device_Id}}",
   "MatterEndpoint": {
        "id": "1",    
        "clusters": [{
            "id": "0x0202",
            "attributes": [
                {
                    "0x0000": "3"
                }
            ]
        }]
    }]
}
```

从以下示例中，我们可以看到以下内容：
+ 这来自 ID 等于 1 的设备端点。
+ 与该事件相关的设备功能的集群 ID 为 **0x0202**，与风扇控制问题集群有关。
+ 已更改的属性的 ID 为 **0x000**，与集群中的风扇模式枚举有关。它已更新为值 **3**，与 **High** 的值有关。
+  由于`connectorId`是云服务在创建时返回的参数，因此 Connectors 必须使用查询 GetCloudConnector 和筛选依据`lambdaARN`。使用 `Lambda.get_function_url_config` API 查询 lambda 自己的`ARN`值。这`CloudConnectorId`允许在 lambda 中动态访问，而不是像之前那样进行静态配置。