Sigfoxを使ったアプリケーション運用において、SigfoxクラウドまではIoTデバイスからのメッセージが到達しているものの、Callbackに失敗して、ご自身のアプリケーションサーバまでメッセージが届かなかったというケースがあるかと思います。
そのような場合に、Device Messageのリストを取得するAPI/devices/{id}/messages
を使って、Callbackに成功しているメッセージも含めて取得することも可能ですが、処理の複雑性も考えるとおすすめできません。
そのような場合におすすめなのは、DeviceTypesのAPIにある"Retrieve a list of callback errors"です。
/device-types/{id}/callbacks-not-delivered
このAPIは、Callbackに失敗したメッセージのみを取得するものです。
{id}には該当デバイスが属するDeviceType IDを入れ、since,beforeパラメータによる取得時刻の範囲指定や、offsetパラメータの指定が可能です。
動作確認
下記GETリクエストを、Basic認証付きで送ります。
https://api.sigfox.com/v2/device-types/{id}/callbacks-not-delivered
成功すると、200応答とともに下記ようなのJSONメッセージを取得できます。
{
"data": [
{
"deviceId": "1234AB",
"deviceTypeId": "5c187c222564327e8xxxxxxx",
"snr": 22.19,
"time": 1568980330000,
"date": "2019-09-20 20:52:10",
"data": "0b7527bf052bffa9000403f5",
"status": 404,
"message": "Not Found",
"callback": {
"url": "https://foo.com/api/dataadvanceda",
"headers": {
},
"method": "POST",
"contentType": "application/json",
"body": {
"device": "1234AB",
"time": 1568980330,
"data": "0b7527bf052bffa9000403f5",
"seqNumber": 110,
"lqi": "3",
"devicetype_id": "5c187c222564327e8xxxxxxx",
"group_id": "566ea3e09336a8059xxxxxxx"
}
},
"parameters": {}
}
],
"paging": {}
}
data->callback->body
を参照することにより、デバイスID、受信時刻、ペイロード他をAPIで取得することができます。
アプリケーションサーバ内のデータインテグリティを意識される方は是非お試しください。