技術情報

Callbackに失敗したメッセージをSigfox APIで取得する方法

2019.09.25

Sigfoxを使ったアプリケーション運用において、SigfoxクラウドまではIoTデバイスからのメッセージが到達しているものの、Callbackに失敗して、ご自身のアプリケーションサーバまでメッセージが届かなかったというケースがあるかと思います。

img-20190925-technical-01.jpg

そのような場合に、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メッセージを取得できます。

response.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で取得することができます。
アプリケーションサーバ内のデータインテグリティを意識される方は是非お試しください。

著者情報

Products and Marketing Department 日比 学

京セラコミュニケーションシステム株式会社(KCCS)よりSigfox社(フランス)に出向中の元自称Sigfoxエバンジェリスト

  • KCCSから追い出され、フランスの片田舎で余生を過ごしています
Twitter:https://twitter.com/ghibi