

支援終止通知：2026 年 5 月 20 日， AWS 將終止對 的支援 AWS IoT Events。2026 年 5 月 20 日之後，您將無法再存取 AWS IoT Events 主控台或 AWS IoT Events 資源。如需詳細資訊，請參閱[AWS IoT Events 終止支援](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html)。

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

# 在 中將訊息做為輸入傳送到偵測器 AWS IoT Events
<a name="iotevents-batch-put-messages"></a>

您現在已定義輸入，識別從裝置傳送的訊息中的重要欄位 （請參閱 [建立 AWS IoT Events 輸入以擷取裝置資料](iotevents-create-input.md))。在上一節中，您建立了 `detector model`來回應馬達中的過壓事件 （請參閱 [建立偵測器模型以代表 中的裝置狀態 AWS IoT Events](iotevents-create-detector.md))。

若要完成範例，請從裝置 （在此情況下為 AWS CLI 已安裝 的電腦） 傳送訊息，做為偵測器的輸入。

**注意**  
當您建立偵測器模型或更新現有的偵測器模型時，需要幾分鐘的時間，新的或更新的偵測器模型才會開始接收訊息並建立偵測器 （執行個體）。如果您更新偵測器模型，在此期間，您可能會繼續看到根據先前版本的行為。

使用下列 AWS CLI 命令來傳送訊息，其中包含超出閾值的資料。

```
aws iotevents-data batch-put-message --cli-input-json file://highPressureMessage.json --cli-binary-format raw-in-base64-out
```

檔案「`highPressureMessage.json`」包含下列項目。

```
{
  "messages": [
    {
      "messageId": "00001",
      "inputName": "PressureInput",
      "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 80, \"temperature\": 39} }"
    }
  ]
}
```

您必須在每個傳送的訊息`messageId`中變更 。如果您不變更訊息， AWS IoT Events 系統會刪除重複訊息。如果訊息與過去五分鐘內傳送`messageID`的其他訊息相同，則 AWS IoT Events 忽略訊息。

此時，會建立偵測器 （執行個體） 來監控馬達 的事件`"Fulton-A32"`。此偵測器會在建立時進入 `"Normal"` 狀態。但是，因為我們傳送了超過閾值的壓力值，它會立即轉換為 `"Dangerous"` 狀態。這樣做時，偵測器會傳送訊息至 ARN 為 的 Amazon SNS 端點`arn:aws:sns:us-east-1:123456789012:underPressureAction`。

執行下列 AWS CLI 命令來傳送訊息，其中包含低於壓力閾值的資料。

```
aws iotevents-data batch-put-message --cli-input-json file://normalPressureMessage.json --cli-binary-format raw-in-base64-out
```

檔案`normalPressureMessage.json`包含下列項目。

```
{
  "messages": [
    {
      "messageId": "00002",
      "inputName": "PressureInput",
      "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 60, \"temperature\": 29} }"
    }
  ]
}
```

每次在五分鐘內叫用 `BatchPutMessage`命令時，都必須變更 檔案`messageId`中的 。再傳送訊息兩次。訊息傳送三次後，馬達「`Fulton-A32`」的偵測器 （執行個體） 會傳送訊息至 Amazon SNS 端點`"arn:aws:sns:us-east-1:123456789012:pressureClearedAction"`，然後重新進入 `"Normal"` 狀態。

**注意**  
您可以使用 一次傳送多則訊息`BatchPutMessage`。不過，無法保證處理這些訊息的順序。若要保證訊息 （輸入） 會依序處理，請一次傳送一個訊息，並在每次呼叫 API 時等待成功回應。

以下是本節中所述偵測器模型範例所建立的 SNS 訊息承載範例。

**事件發生時「違反壓力閾值」**

```
IoT> {
  "eventTime":1558129816420,
  "payload":{
    "actionExecutionId":"5d7444df-a655-3587-a609-dbd7a0f55267",
    "detector":{
      "detectorModelName":"motorDetectorModel",
      "keyValue":"Fulton-A32",
      "detectorModelVersion":"1"
    },
    "eventTriggerDetails":{
      "inputName":"PressureInput",
      "messageId":"00001",
      "triggerType":"Message"
    },
    "state":{
      "stateName":"Dangerous",
      "variables":{
        "pressureThresholdBreached":3
      },
      "timers":{}
    }
  },
  "eventName":"Pressure Threshold Breached"
}
```

**事件發生時「正常壓力已還原」**

```
IoT> {
  "eventTime":1558129925568,
  "payload":{
    "actionExecutionId":"7e25fd38-2533-303d-899f-c979792a12cb",
    "detector":{
      "detectorModelName":"motorDetectorModel",
      "keyValue":"Fulton-A32",
      "detectorModelVersion":"1"
    },
    "eventTriggerDetails":{
      "inputName":"PressureInput",
      "messageId":"00004",
      "triggerType":"Message"
    },
    "state":{
      "stateName":"Dangerous",
      "variables":{
        "pressureThresholdBreached":0
      },
      "timers":{}
    }
  },
  "eventName":"Normal Pressure Restored"
}
```

如果您已定義任何計時器，SNS 訊息承載中也會顯示其目前狀態。

訊息承載包含訊息傳送時偵測器 （執行個體） 狀態的相關資訊 （即 SNS 動作執行時）。您可以使用 [https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_DescribeDetector.html](https://docs.aws.amazon.com/iotevents/latest/apireference/API_iotevents-data_DescribeDetector.html)操作來取得偵測器狀態的類似資訊。