送信したSMS/MMSメッセージが届かない場合のトラブルシューティング手順と、可能な場合の修正方法をご説明します。
コンテンツ:
- メッセージ送信APIリクエスト
- 「Failed」とマークされたメッセージ
- 「Undelivered」とマークされたメッセージ
- 「Sent」または「Delivered」とマークされたメッセージ
- メッセージングサービスのエラー処理についての注意事項
メッセージ送信APIリクエスト
Twilioでメッセージ送信の有効なAPIリクエストを受け取ると、201 Created応答が返され、送信ログにメッセージのレコードが作成されます。リクエストが正しく受信・処理されたことを確かめるには、TwilioプロジェクトのProgrammable Messagingログで送信メッセージレコード(ログ)を確認します(ConsoleまたはREST APIを使用)。メッセージのレコードが見つからなければ、APIリクエストの問題であるか、あるいはTwilioのインシデントによるものと考えられます。
まず、Twilio ステータスページ(英語) でアクティブインシデントが問題の原因であるかを確認します。
次にもう一度メッセージを送り、問題が再現するか確かめます。メッセージの送信にはREST APIリクエスト(英語)またはConsoleのAPI Explorerを使用できます。無効なリクエストに対してTwilioは400 Bad Request
を返します。これにはエラーコードと問題の内容についてのメッセージが含まれています。このタイプのREST APIエラーは通常、2XXXXエラーコードを返します。こちらは最も一般的な問題の例です。
Error 20003: 正しいアカウントSIDと認証トークンを使用していることを確認してください。テスト認証情報を使用するとメッセージが送られたことを示す応答が返されますが、メッセージは実際に送信されないことにご注意ください。
Error 21408: この国のSMS権限を Global SMS Permissions ページで有効にする必要があります。
Error 21606: 送信を試みた「From」番号は「To」番号へのSMSメッセージを送信できません。これには一般的に2つ理由があります。
- 音声対応のみの電話番号からSMSを送信しようとした可能性があります。こちらのリストでSMSに対応するTwilio電話番号を確認できます。それ以外のTwilio電話番号はSMSメッセージの送信はできません。
- Twilioで確認済みの番号(Verified Caller ID)からSMSを送信しようとした可能性があります。確認済みの番号は音声通話のみでご利用でき、SMSは使用できません。詳しくはこちらをご覧ください。
Error 21610: STOPキーワードを使用してメッセージ受信を拒否した番号にメッセージを送ろうとしています。
Error 21612: このエラーには2つの原因が考えられます。
- 送信に使うキャリアがSMS非対応のキャリアである。Twilioは世界のほとんどのキャリアに対応していますが、未対応のキャリアも存在します。Twilioに対応するキャリアを確認するには、SMS料金ページで国名を検索するか、スクロールして「すべてのSMS料金」のセクションをご覧ください。リストにないキャリアの場合、現時点ではTwilioからSMSメッセージの送信はできません。
- 「To」電話番号の形式に誤りがあります。すべての「To」番号は、正しく送信するためにE.164形式(英語)を使用する必要があります。
ここに記載されていないエラーについては、APIエラーと警告一覧(英語)で2XXXX REST APIエラーの説明と問題の解決手順を見つけることができます。
「Failed」とマークされたメッセージ
「Failed」メッセージステータスは、Twilioからメッセージが送信できなかったことを示します。「Failed」メッセージはTwilioプラットフォームから送信されていないため、課金はされません。このステータスは、下記の「Undelivered」ステータスとは異なります。
最も一般的な「Failed」メッセージの理由:
- Error 30001 "Queue overflow:" wilio番号または送信者が使える最大キュー長を超えたか、キュー内のメッセージの時間がAPIリクエストに指定したValidityPeriodを超えています。
- Error 30002 "Account suspended:" ご使用のTwilioアカウントが現在一時停止されています。例、アカウント資金が不足し、自動再チャージが設定されていない。アカウントが一時停止されている場合は、お手元にTwilioから一時停止理由のメールが届きます。Twilioアカウントに関連するメールの説明をご確認ください。
- (Twilio MMSメディアメッセージ固有) Error 11200, 11751, 12300: これらのエラーは、TwilioがMMSメディアメッセージの送信用に指定されたMediaUrlからメディアの取得を試みるときに発生する問題を示しています。例えば、実際のファイルタイプとサーバーが返すContent-Typeヘッダーが一致しないとMMSメッセージの送信が失敗してエラー12300が出ます。
「Undelivered」とマークされたメッセージ
「Undelivered」メッセージステータスは、Twilioがメッセージの不達を伝える配信通知を受信したことを示します。メッセージのステータスとエラーコードをTwilioプロジェクトのProgrammable Messagingログで確認できます(ConsoleまたはREST APIを使用)。不達のメッセージは通常、30XXXエラーコードを返します。下記は最も一般的な問題の例です。ただし全てのキャリアパートナーが各エラーメッセージを適切に返すわけではありません。
Error 30005 "Message Delivery - Unknown destination handset": 宛先のキャリアからTo番号が不明であるか現在使われていない番号であることが報告されています。
Error 30003 "Message Delivery - Unreachable destination handset": 宛先のキャリアから「To」番号が到達不能であると報告されています(デバイスが電源オフ、サービスエリア外、メッセージを受信不能)。
Error 30007 "Message Delivery - Carrier Violation": 宛先のキャリアによりメッセージがフィルターされ配信されませんでした。
Error 30008 "Message Delivery - Unknown error": 宛先のキャリアから一般エラーメッセージが返されました。
Error 30004 "Message Delivery - Message blocked": メッセージがブロックされて宛先に届きませんでした。
Error 30006 "Message Delivery - Landline or unreachable carrier": 宛先が固定回線であるか、宛先のキャリアに到達不能です。
メッセージングサービスを使用して送信するメッセージの場合、(上記のメッセージ送信APIリクエストに挙げた)APIレベルのエラー以外のエラーは「Failed」メッセージレコードに分類されます。詳しくは、下記の「メッセージングサービスのエラー処理についての注意事項」を参照してください。
ここに記載されていないエラーについては、APIエラーと警告一覧(英語)で30XXXメッセージングエラーの説明と問題の解決手順を見つけることができます。
「Sent」または「Delivered」とマークされたメッセージ
これらのメッセージステータスは、Twilioがメッセージの送信確認を受信したか、メッセージが届いた配信通知を受信したことを示します。この問題をトラブルシューティングするために、まず問題の再現を試みます。このユーザー宛にREST APIリクエストを使用するかConsoleのAPI Explorerを使用してさらにテキストメッセージを送信します。特にリクエストを入念に調べ、メッセージを送信する電話番号に誤りがなく、正しいE.164形式(英語)を使用していることを確認してください。同じ結果が得られたら、次のチェックリストに従いトラブルシューティングを続けます。
- Twilio Status Pageで現在進行中のインシデントが問題の原因であるかを確認します。
- 宛先のデバイスは電源オンか?
- デバイスの電波信号強度は十分か? している不足の場合はデバイスの電源をオフにして30秒待ち再びオンにします。
- デバイスは国内キャリアネットワークに接続されているか? 国際ローミングやネットワーク外のデバイスへのメッセージ配信は保証されません。
- デバイスはTwilio以外のSMSを受信可能か?
- 別のTwilio番号(英数字の送信者ID以外)のメッセージ、または短い1セグメント(非連結)の本文を含むメッセージを受信できるか?
- 同じモバイルキャリアを使う他のデバイスはメッセージを受信できるか?
上記の問題がすべて除外される場合、Twilioサポートチームが'メッセージ不達の原因調査をサポートいたします。過去24時間に発生した問題のメッセージログからメッセージSIDを3件以上集めてチケットを作成ください。
メッセージングサービスのエラー処理についての注意事項
特定の「From」番号や送信者IDを渡さずにメッセージングサービスを使用してメッセージを送信する場合、いくつかのエラーについてTwilio APIの動作が若干異なります。特に2XXXXエラー(21610など)は、APIレベルのエラーとしては返されず、APIリクエストを受けた後に発生します。
このように動作が異なるのは、メッセージングサービスによるAPIリクエストの処理が効率的であるためであり、短時間に多くのAPIリクエストを送信できることによります。メッセージングサービスを使用したメッセージ送信リクエストでは、TwilioはAPIリクエストの初期確認をしてパラメーターが有効であることを確認します。Twilioのシステムにメッセージレコードが作成された後で、メッセージングサービスの送信者番号プールから最適な送信者を選ぶなどの完全な確認がなされます。
この違いを次の2つのシナリオで説明します。
シナリオ1 – 特定の送信者を「From」パラメーターで渡す:
APIリクエストで「From=MyCompany」のメッセージを米国の携帯番号宛「To」に送信します。MyCompanyは有効な英数字の送信者IDですが、この機能は米国のキャリアではサポートされません。TwilioのAPIリクエスト確認によりリクエストは失敗とされ、HTTP 400 Bad Request
が返されます(error 21612)。APIリクエストが失敗するとメッセージレコードは作成されず、メッセージSIDを受け取ることはありません。
シナリオ2 – メッセージングサービスSIDを「From」パラメーターで渡す:
メッセージングサービスを作成し、英数字の送信者ID「MyCompany」を送信者番号プールに追加します。プールにはTwilio電話番号は追加せず、英数字の送信者IDのみを追加します。
続いてメッセージングサービスSIDから米国携帯番号に送信するAPIリクエストを行います。これは有効なAPIリクエストであるため、Twilioで受け取るとHTTP 201 Created
が返されます。この応答に含まれるメッセージSIDを使用して、Twilio ConsoleかAPIによりメッセージを見つけることができます。
APIリクエストを受けたTwilioは、メッセージングサービスから送信者を選択します。追加されているのは英数字の送信者IDのみで、米国の携帯番号に到達できる送信者は追加されておらず、Twilioからメッセージを送ることができません。メッセージレコードには「Failed」とマークされerror 21703(「メッセージングサービスにメッセージを送信できる電話番号が含まれていません」)がマークされます。
Twilioからこのステータス更新がステータスコールバックWebhookを通じて送られます(いずれかのメッセージングサービスが設定済みであるかAPIリクエストで提供されていることが前提)。
なお「Failed」ステータスのメッセージは課金されず、HTTP 400を返すAPIリクエストも対象となりません。このため、これらの動作が異なる場合も料金に違いはありません。