Twilio+ngrok Twilio番号に着信があった場合のWebhookのREQUEST (A CALL COMES IN)

  • このエントリーをはてなブックマークに追加

Twilioを利用する必要が出たので、ドキュメントを見ながらAPIなどを確認中

いろいろ機能はあるけど、まずは基本の部分を見てみる。
LINEボットなどと同様にTwilioのconsoleから着信時にHTTPのWebhookを設定できるので、サーバーにおいてもいいけど、ngrokが楽だよとドキュメントにもあるので、利用してみる。

ngrokにアカウント登録して、実行するとngrok.ioのサブドメインへのアクセスを実行してるローカルマシンの8000にフォワードしてくれる。

ngrok by @inconshreveable                                       (Ctrl+C to quit)

Session Status                online
Account                       droid (Plan: Free)
Version                       2.3.35
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://704be30b.ngrok.io -> http://localhost:8000
Forwarding                    https://704be30b.ngrok.io -> http://localhost:8000

なので、上記でいう「http://704be30b.ngrok.io」を公開URLとして、
Twilioのコンソールで
http://704be30b.ngrok.io/callback.php
を「Programmable Voice」の「受電したい番号」から「A CALL COMES IN」のWebhookURLを設定

?php
// パラメータが見たいだけなので、TwilioSDKは今回不要
error_log(print_r($_REQUEST, true));

上記に加えて受信スクリプトを配置した場所で実行して、Twilioの番号に電話をかける

RC211v:app dp$ php -S localhost:8000
PHP 7.3.5 Development Server started at Fri Jan 24 12:53:18 2020
Listening on http://localhost:8000
Document root is /Users/dp/projects/twilio/app
Press Ctrl-C to quit.
[Fri Jan 24 12:54:13 2020] [::1]:62430 [200]: /callback.php
[Fri Jan 24 12:56:26 2020] Array
(
    [Called] => +125647****Twilioで取得した受電番号
    [ToState] => AL
    [CallerCountry] => JP
    [Direction] => inbound
    [CallerState] =>
    [ToZip] => 35739
    [CallSid] => CA7f52ed3ec************************
    [To] => +125647****Twilioで取得した受電番号
    [CallerZip] =>
    [ToCountry] => US
    [ApiVersion] => 2010-04-01
    [CalledZip] => 35739
    [CalledCity] => ELKMONT
    [CallStatus] => ringing
    [From] => +81801234発信者番号
    [AccountSid] => AC31a5******************************
    [CalledCountry] => US
    [CallerCity] =>
    [Caller] => +81801234発信者番号
    [FromCountry] => JP
    [ToCity] => ELKMONT
    [FromCity] =>
    [CalledState] => AL
    [FromZip] =>
    [FromState] =>
)

カンファレンスなどでFromを判定したりするには、$_REQUESTのformなどを元にすればいいということか。

–>

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。