あけましたおめでとうございます、@24guchiaです。
年始から縁起悪い記事ですが、今日失敗したことまとめます。
ほうほうの人に質問してしまっていて、申し訳ない気持ちでこの記事書きました。
この記事を読むと分かること
Twilio.Clientを用いて、何故か架電ができず、
下記ログが出力される時の原因と解決方法が分かる
[Connection] Received HANGUP from gateway
書いた理由
- ググっても出てこなかった
- 同じミスを自分がしないようにメモ
- 後から始めたTwilio開発者が同じミスでハマらないようにしたい
今日の僕のハマってた時間と、ほうほうの人に質問で時間取らせた分、
他の人がこの記事ですぐ解決できれば開発者全体でプラスにしたいため。
事象
なぜか架電できない
同じ実行環境で架電すると、なぜか架電ができる番号とできない番号がある。
※実行環境は原因に関係ないので、特にあげません。
正確には架電すると架電の呼び出し音は一瞬鳴るが、
架電先の電話機が鳴動する前に架電が終了する。
切り分けてみた
- 架電先の電話機固有の問題
携帯電話にかけても、固定電話にかけても架電ができなかったので、
架電先電話機は関係ない。
- 実行環境の問題
同じ環境で別の番号を用いた場合、架電が出来たので実行環境は関係ない。
- ネットワークの問題
無線LANと有線LANを切り替えても、かからなかったのでネットワークは関係ない。
- ソースコードの問題
プロダクション版とアルファ版で同じ番号でかけたところ、
アルファ版ではかかるのでソースコードに問題ありそう。
コンソールのログ読んだ
ICEコネクション周りは正常に終了していた。
※ICEってなんだ?って人はこの記事参照してください
架電先に届く前に先に上げたログが出力されていた。
[Connection] Received HANGUP from gateway
このログはIP網とPSTNをつなぐゲートウェイから、
電話切られたっていう信号を受信したというログです。
なので、通常に通話し、相手側に切電ボタン押されたり、
受話器を置いた時に送られる信号です。
ゲートウェイについて参考:https://www.3cx.jp/voip-sip/voip-gateway/
考えた
相手先に届く前にゲートウェイから、通話終了の信号が来るのは
ネットワークとかに問題があると思ったがぜんぜん違っていた。
原因
Twilioにはマスターアカウントとサブアカウントがあって、
画面に表示している電話番号と生成する認証トークンが不一致だったのが原因。
マスターアカウントの認証トークンを基に生成されたDeviceで、
サブアカウントの番号を使用して架電しようとしていたので、
架電ができませんでした。
ハマった理由
ICEは正常終了しているのに関わらず、
即時でゲートウェイからハングアップの信号受信したログが出たから。
IPとPSTNの間にあるゲートウェイ周りの情報も
逆に存在を知らなければ、変にハマらなかったかもしれない。
まとめ
認証トークンはドキュメント通りに作れば、正常に返ってきます。
電話番号はTwilioで買えば、買ったアカウントに紐付きます。
認証トークンと電話番号、本当に紐付いているか再度確認しましょう。