技術情報

SigfoxのCallbackで失敗した場合の対処

2022.04.18

みなさんはSigfoxのCallback機能を利用したとき、「Callbackにエラーが出てうまくいかない...」と悩んでいませんか?
Callbackが失敗している場合、以下のようにCallbacksの項目が赤いアイコンで表示されます。

本記事ではそのような状態になってしまった方のために、Callbackが失敗してしまう原因と対策方法を説明します。

Callbackのエラーが発生したら最初に確認すること

Callbackが失敗した場合、該当デバイスのMessageよりCallbacksを確認してください。
Callbacksに表示されているアイコンの色により、Callbackの状況が確認できます。

それぞれの色は以下のような状態を表しています。
該当のアイコンを確認することでCallbackに失敗したメッセージが確認できます。

・Callbackのエラー内容を確認する

Callbackが失敗している場合、該当の赤いアイコンをクリックすることでエラーの内容を確認できます

➀ステータスコード
SigfoxのCallbackはHTTPのステータスコードを使用して、ステータスを表しています。
一般的には「2xx」の正常系コードは、Callbackが正常に機能したことを表しており、「4xx」「 5xx」のエラー系コードは、Callbackが失敗したことを表しています。
ステータスコードは3桁の数字で構成されており、表示されている3桁の数字よりCallbackの状況及びエラーの原因を詳しく特定できます。

②Callbackの試行回数
Callback機能はCallback先のサーバーにデータを転送後、10秒以内に該当のサーバーより応答がない場合(データが届かなかった場合)こちらの仕様に従い、一定の間隔で3回まで再試行が行われます。Callbackの試行回数は初回の試行に再試行の回数を加えた回数が#で表記されます。
例) 初回の試行のみ実行された場合 ⇒ #1と表記されます。
  初回の試行の後に3回の再試行が実行された場合 ⇒ #4と表記されます。
試行回数が多い場合、SigfoxクラウドとCallback先サーバー間のネットワーク部に問題があるか各種サーバーの状態が一時的に不安定な状態にあることが考えられる為、原因箇所の特定に繋げることができます。

エラー内容を確認後、エラーコード別の原因と対策を知りたい方は以下の原因と対策の項目を確認してください。原因と対策の項目ではCallbackが失敗した際に主に表示されるステータスコードの原因と対策を説明しています。

ステータスコード別の原因と対策

ここではCallbackが失敗した際に主に表示されるステータスコードの原因と対策について説明します。特定のステータスコードについては、以下の内容を確認してください

400

Bad Request

原因
Content typeとBodyのフォーマットが一致していない又はBodyの内容に誤りがある

■対策
Content TypeとBodyのフォーマットが異なる場合、該当のエラーコードが発生します。例えば、Bodyに記入されている内容がJSON形式の場合、Content Typeを”application/json”に設定する必要があります。
<JSON形式の例>
{
 "data": "{data}",
 “device": "{device}",
 "time": "{time}“
}

Callbackに設定可能なフォーマットはこちらより確認できます。

401

Unauthorized

原因
認証情報が必要なサーバーへCallbackした際、アクセスに必要な認証情報がHeadersまたはBodyに入力されておらず、認証が通らなかった。

■対策
利用しているサーバーの認証情報をご確認の上、認証情報をHeadersまたはBodyに入力をしてください。

403

Forbidden

原因
認証情報が必要なサーバーへCallbackした際、HeadersまたはBodyに入力されている認証情報に誤りがあり、アクセスが拒否された。または、サーバーに設定されているIP制限によりアクセスが拒否された。

■対策
HeadersまたはBodyに入力されている認証情報に誤りがないことを確認してください。また、Callback先のサーバーでIP制限を設けている場合、Callbackで使用されてるIPの範囲を確認の上、該当のIPをホワイトリストに設定してください。

404

Not Found

原因
Callback先のURLが存在しないまたはリンクが切れている。

■対策
設定されているURLに誤りがないことと該当のURLが有効な状態にあることを確認してください。

405

Method Not Allowed

原因
Callback設定で選択したMethodがCallback先サーバーで対応していない。

■対策
Callback先のサーバーで対応可能なMethodを確認の上、対応しているMethodを選択してください。

500

Internal Server Error

原因
・Sigfoxサーバー内で障害が発生している。
・Callback先サーバー内で障害が発生している。
・SigfoxサーバーとCallback先サーバー間で障害が発生している。

■対策
Sigfoxサーバー内で障害等が発生している場合、一時的にCallback機能含む各種サービスが使えない場合があります。該当のエラーが発生した場合はSigfoxの障害情報(sigfox status)を確認の上、障害の復旧をお待ちください。
Sigfoxサーバーで障害が発生していない場合、Callback先サーバーの障害情報及びSigfoxサーバーとCallback先サーバー間の障害情報を確認してください。

504

Gate Way Timeout

原因
Callback先のサーバーにデータを転送後、10秒以内に該当のサーバーより応答がなかった。

■対策
SigfoxクラウドとCallback先サーバー間のネットワーク部又は各種サーバーに問題がある場合、該当のエラーが発生する場合があります。該当のエラーが発生した場合、SigfoxクラウドとCallback先サーバー間の障害状況及び処理状況を確認をしてください。
Sigfoxの障害情報はこちらより確認できます。

600

Certificate validation issues

原因
Callback先サーバーがCA(認証局)より発行されるデジタル認証を受けていない又は有効期限が切れている。

■対策
SigfoxのCallback機能はデジタル認証を受けていないサーバー(自己署名証明書を提示するサーバー)にCallbackした場合、600のエラーコードが表示されます。

そのため、Callbackを利用される際はサーバーのデジタル認証が有効な状態にあることを確認してください。

600

Quota exceeded

原因
EmailCallbackの利用上限(一日あたり100通)を超過して使用している。
詳細についてはこちらをご確認ください。

TIPS

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

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

Callbackに失敗したメッセージを取得したい場合、以下する事でCallbackに失敗したメッセージを取得する事が可能技術記事で解説されているAPIを利用です

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

上記の記事では、DeviceType単位での取得方法を解説していますが、Device単位、Group単位でメッセージを取得する事も可能です。APIの詳細は以下のリンクより確認できます。

Device単位でCallbackに失敗したメッセージを取得するAPI

DeviceType単位でCallbackに失敗したメッセージを取得するAPI

Group単位でCallbackに失敗したメッセージを取得するAPI

・Callbackの失敗を通知する方法(Alert Email)

Callbackでエラーが発生した際にエラー通知を受け取りたい場合、Alert Email機能を利用することで特定のEmailにエラーを通知できます。

<Alert Emailが通知するタイミング>

Alert Email機能ではエラーが発生したタイミング(問題が発生したタイミング)とエラーから回復したタイミング(問題が解決したタイミング)で通知を受け取ることができます。

※Callbackが立て続けに失敗/成功した場合、連続して通知は行われません。

<Alert Emailの設定方法>

1. Sigfoxクラウドへログイン
2. 上部メニューのDEVICE TYPEを選択
3. Alert Emailを設定したいDeviceTypeのNameを選択
4. ページ右上のEditを選択
5. DeviceTypeのEdit画面よりAlert emailの項目に通知先のEmailを設定
 ※複数登録することはできません。一つのEmailのみ設定可能です
6. DeviceTypeのEdit画面下部のOKを選択

著者情報

LPWAサポート課 永野 智弥

大学在学中Sigfoxネットワークの魅力に惹かれ入社。
現在はSigfoxサービスに従事し、Sigfoxのさらなる発展に向けてお客様のサポートを行っています。