SMSの一般的な問題をデバッグする

SMSメッセージの送受信時にユーザーが直面する一般的な問題がいくつかあります。 このガイドでは一般的な問題をいくつか取り上げ、トラブルシューティングのコツをご紹介します。

メッセージが送達されません

不達 (undelivered) メッセージにはいくつかのトラブルシュート方法があります。

  1. SMSリクエストのレコードについて、SMSログを確認します。 メッセージに対するレコードがまったく確認できない場合、メッセージはアプリケーション内、またはTwilioのAPIとのやり取りの際エラーに遭遇したことが考えられます。
    • API Explorerテストメッセージの送信を試すことができます。 これにより、使用しているTO、およびFROM番号がアクティブであり、かつメッセージ送受信に対応していることを確認できます。
  2. メッセージがログ上で確認できず、かつアプリケーションコードがエラーを生成している場合:
  3. メッセージがログ上で確認できず、かつTwilioからのエラーを受信している場合:
    • TwilioのAPIから4XXのレスポンスを受信している場合は、Twilioで何らかの問題が発生し、メッセージの送信が行えなかったことを意味しています。 こちらで受信したエラーコードを検索できます。
  4. TwilioのログでメッセージのステータスがUndelivered、あるいはFailedとなっている場合
  5. メッセージのステータスがログ上でSentまたはDeliveredとなっているにも関わらず、デバイスに対して送信されない
    • 追加のデバッグ、デバイスでメッセージが受信されない場合のトラブルシューティングのヒントに関しては、下記の節を確認してください。

Twilio電話番号でSMSメッセージが受信できません

Twilio番号にメッセージがTwilio番号で受信されない場合、確認すべき点がいくつかあります。 

  1. SMSに対応した電話番号をお持ちですか? 特に日本の電話番号はSMSに対応しないため、その場合は米国の電話番号を別途購入してください。 Webhookの構成は済んでいますか?
    • Twilioアカウントにログインして電話番号セクションに移動、「電話番号の管理」をクリックします。 
    • SMSアイコンの表示されている電話番号はSMSの送受信に使用できます
    • SMSの下にアイコンが確認できない場合は、お持ちのTwilio番号はSMSに対応していません。 「番号を購入」をクリックして、SMSに対応したTwilio番号を購入してください (米国の電話番号をご使用ください) 。SMSまたはMMSに対応した電話番号を購入します
    • 電話番号でSMSを受信するには、その番号に関連づけられたURLが必要です。 お持ちのTwilio電話番号対して、このWebhookConsoleを使用してセットアップできます。SMS Webhook
  2. 国際電話番号からのSMSの受信が想定されていますか?
    • 一部の国のキャリアーはSMSをTwilioのネットワークに伝送することができません。 そのため、Twilioはそうしたメッセージが必ず受信できることを保証できません。
    • 国内のメッセージを受信していて国際メッセージの受信を行わない場合、国際送信キャリアーにお問い合わせいただくことを推奨します。
  3. ローミングを行なっているか、圏外になっていませんか?
    • Twilioは、ローミング中の電話番号からのSMSの送達を保証することはできません。 TwilioはSMS送信元の電話番号が、そのタイミングでローミング中かどうかを判断することはできません。
  4. ショートコードからのSMS受信を想定していますか?
    • ショートコードのキャリアーはもっぱら携帯電話番号とメッセージをやり取りするよう調整されており、Twilio電話番号は携帯番号とは見なされません。 このため、Google Voice、Facebook、およびSkypeといったような、SMSの送信にショートコード(例: 55555)を使用するサービスはTwilio電話番号にメッセージを送信することができません。

ブラックリストルールに関するレスポンスが返るのはなぜですか?

メッセージの送信時にTwilioから「メッセージの送受信番号のペアがブラックリストのルールに違反しています」といったようなレスポンスが返されることがあります。 Twilio APIは、以前にTwilio番号に対してSTOPSTOPALLUNSUBSCRIBECANCELEND、またはQUITという返信を行なったことのある番号にSMSまたはMMSを送信しようとした場合にこのメッセージを返します。 このメッセージ送信の試みに対して課金は行われません。

エンドユーザーがMessaging Serviceに属する電話番号をオプトアウト(すなわち受信拒否)している場合、その特定のMessaging Serviceから送信された全メッセージもまたオプトアウトされます。

このような送信者にメッセージを送信するには、受信者は再度オプトイン(すなわち受信拒否の解除)を行うために、STARTまたはYESというテキストをTwilio番号に対して送信することが必要です。

なぜ重複メッセージが配信されるのですか?

重複メッセージの問題のデバッグを開始する最良の方法は、メッセージログを確認することです。 問題のメッセージに対応するレコードと、前後数秒以内に送信されたそのメッセージと重複しているもうひとつのメッセージを見つけると良いでしょう。

ログ上に互いに数秒以内の間隔で送信された重複メッセージが見つかった場合は、Twilioが複数のメッセージをキャリアーに対して送信していたことになります。 これはほとんどの場合、Twilioは開発者のアプリケーションから複数のPOSTリクエストを受信したことを意味しています。 ご使用のサーバー上でHTTPリクエストのログを確認して、Twilioに送信したリクエストをさらに調査してください。

アプリケーションからのPOSTリクエストの受信なしにTwilioのシステムが重複メッセージを生成する実例は極めてまれです。 サーバーログを確認してTwilioへのリクエストがひとつしか見られない場合は、重複されたメッセージのSIDを添えてサポート窓口にご連絡ください。

ログ上で1つのメッセージしか見当たらない場合は、Twilioはキャリアーに対して1度しかメッセージを送信しておらず、重複はキャリアー側で発生していたことになります。 あらゆる種類の電話機のユーザーは、まれに重複メッセージを受信することがあり、これは一般的にはキャリアー側がサービス障害の発生が疑われる際に備えて実装しているセーフガードによるものです。 重複メッセージは受信者がローミングを行なっている場合にも発生することがあります。

複数の異なる受信者、キャリアーに渡って重複メッセージが長期間発生する場合は、重複されたSMSのメッセージレコードを収集していただき、株式会社KDDIウェブコミュニケーションズのサポート窓口までご連絡ください。

メッセージが遅延します

メッセージの遅延や他の配達の問題をトラブルシュートするには、お使いの電話番号をAPI Explorerでテストすることから始めてください。 メッセージを作成し、FromToBody、および他の関連フィールドを入力します。 「Make Request」をクリックしてページを開いたままにすると、レスポンスを調査できます。

API Explorerでメッセージを送信する際は、下記の3つのうちのいずれかの結果になります:

  1. メッセージは30秒以内に到着します
    • メッセージの問題はほとんどの場合、開発中のアプリケーションコードに原因があります。 下記を確認してください: 
      • コード内で使用している「To」および「From」の値をAPI Explorerで使用しているものと一致させます。
      • API Explorerで生成されたコードスニペットを開発中のアプリケーション内で試し、問題が改善するかどうか確認します。
      • お使いのサーバーのHTTPログを確認して、Twilioに送信したリクエストで、400または500番台のエラーを返さなかったものを確認します。
      • 正しいアカウントSIDと認証トークンを使用していることを確認してください。 テストクレデンシャルの使用はメッセージが送信 (sent) された旨のレスポンスを生成しますが、実際にはメッセージは送信されない点にご注意ください。
  2. メッセージの受信に30秒以上かかります
    • Twilioから送信されたSMSメッセージは国とキャリアーに応じて通常5秒〜10秒で宛先に送達されます。 メッセージの送達に30秒以上かかる場合は「遅延した」とみなされます。
      • SMSログ配下の「配信ステップ (Deliverey Steps) 」を参照して、いつリクエストが作成されたか、どのくらいの間Twilioのプラットフォームのキューに滞留していたか、そして配信に向けてTwilioのキャリアーパートナーに対していつ送出されたかを含む詳細なタイムスタンプを確認します。 この情報によって、遅延の発生している場所の追跡に役立つ洞察が得られます。
      • 「From」番号からの大量のキューイングされているメッセージは遅延の増加につながることがあります。 追加情報については、Twilioの送信速度制限についてのこちらの記事を参照してください。
      • 下りのキャリアーネットワークは混雑することがあります。 こうした問題は下りのトラフィック混雑が解消されると、自動的に改善します。
  3. メッセージが受信されません
    • API Explorerが201レスポンスを生成した場合は、下記を確認してください: 
      1. 「To」電話番号を確認してください:
        • 番号は有効であり、かつアクティブですか。
        • 電波状況は良好ですか。そうではない場合メッセージは遅延する可能性があります。
        • 他の送信元および送信者からのメッセージを受信できますか。
        • 国際ローミングしていませんか。
        • 「受信拒否」リストに登録されていませんか。
        • キャリアーによってブラックリストに追加されていませんか。 Twilioのロングコード(通常の電話番号)からメッセージを送信している場合、他のTwilioロングコードからの送信をお試しください。 メッセージが正常に受信された場合、当初使用した電話番号がキャリアー側の送信数制限のしきい値に達したことが考えられます。 詳細については、こちらのFAQ記事(英語)を参照してください。
      2. メッセージの再送信をお試しください。 これはしばしば、問題を切り分ける最良の方法になります。 メッセージが依然として送信されない場合は、各不達メッセージに対応するSMSのメッセージSIDを添えて株式会社KDDIウェブコミュニケーションズのサポート窓口にご連絡ください。 これらのSIDはAPI Explorerのレスポンスに一覧されます。
    • API Explorerが404レスポンスを生成した場合は、Twilioはメッセージを送信できませんでした。
      • 404レスポンスを返したメッセージにはエラーコードと、そのエラーコードに対する詳細な説明へのリンクが含まれています。 全エラーコードの情報については、こちらで確認できます。

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。