

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 SendConnectorEvent API 傳送裝置事件
<a name="send-connector-events"></a>

## 裝置啟動的事件概觀
<a name="device-initiated-events-overview"></a>

雖然 `SendConnectorEvent` API 用於非同步回應 `AWS.SendCommand`和 `AWS.DiscoverDevices`操作，但它也用於通知受管整合任何裝置啟動的事件。裝置起始事件可以定義為裝置在沒有使用者起始命令的情況下產生的任何事件。這些裝置事件可能包括但不限於裝置狀態變更、動作偵測、電池電量等。您可以使用具有操作 **DEVICE\_EVENT** 的 `SendConnectorEvent` API，將這些事件傳回至受管整合。

下節使用安裝在家中的智慧攝影機做為範例，進一步說明這些事件的工作流程：

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


**裝置事件工作流程**

1. 您的攝影機會偵測其產生傳送至資源伺服器的 事件的動作。

1. 您的資源伺服器會處理事件，並將其傳送至 C2C 連接器。

1. 連接器會將此事件轉譯為 AWS IoT Device Management `DEVICE_EVENT` 介面的受管整合。

1. 您的 C2C 連接器會使用操作設為 "DEVICE\_EVENT" 的 `SendConnectorEvent` API，將此裝置事件傳送至受管整合。

1. 受管整合可識別相關客戶，並將此事件轉傳給客戶。

1. 客戶會收到此事件，並透過使用者識別符將其顯示給使用者。

如需 `SendConnectorEvent` API 操作的詳細資訊，請參閱AWS IoT Device Management API 參考指南》`SendConnectorEvent`中的 受管整合。

## 裝置啟動的事件需求
<a name="device-events-requirements"></a>

以下是裝置啟動事件的一些需求。
+ 您的 C2C 連接器資源應該能夠從資源伺服器接收非同步裝置事件
+ 您的 C2C 連接器資源應該可以使用 AWS 帳戶 用於註冊 C2C 連接器的 AWS 憑證，透過 SigV4 呼叫 AWS IoT Device Management 服務 API 的受管整合。

下列範例示範透過 SendConnectorEvent API 傳送裝置來源事件的連接器：

```
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**，與 Fan Control 事件叢集相關。
+ 已變更的 屬性具有 **0x000** 的 ID，與叢集內的風扇模式列舉相關。它已更新為 值 **3**，與 **High** 值相關。
+  由於 `connectorId` 是雲端服務在建立時傳回的參數，因此 Connectors 必須使用 GetCloudConnector 查詢並依 篩選`lambdaARN`。使用 `Lambda.get_function_url_config` API `ARN` 查詢 Lambda 自己的 。這可讓 在 lambda 中`CloudConnectorId`動態存取 ，而不是像先前一樣靜態設定。