0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Twilioでの電話通知機能(Laravel)

Last updated at Posted at 2022-11-27

はじめに

Twilioの電話通知機能をLaravelにて実装しました。
備忘録として記載させていただきます。

流れ
ブラウザからTwilio側にHTTPリクエスト

Twilio側が電話に通知(設定した音声流れる)

Twilio側からHTTPリクエストを受け取る

Twilio側から受け取ったHTTPリクエストでコールバック値(架電の状況等)を取得

開発環境 バージョン
Laravel 8.83.19
PHP 7.3.10

Twilioの導入

1,Twilioトライアルアカウントを作成する
  Twilioに担当者に問い合わせてトライアルアカウントを作成してもらう。
  TwilioのアカウントSIDAUTHトークン架電元電話番号を担当者からもらう。

2,Twilioライブラリーをインストールする。

ターミナル
   composer require twilio/sdk

  参照URL(Twilio公式サイト)
  https://www.twilio.com/ja/docs/voice/quickstart/php

3,架電通知する

TwilioController.php
   use Twilio\Rest\Client;

   // ... 略

   $account_sid   = 'アカウントSID';
   $auth_token    = 'AUTHトークン';
   $twilio_number = "+XXXXXXXXXXX"; // 架電元電話番号
   $to_number     = "+XXXXXXXXXXX"; // 架電先の電話番号
   
   $client = new Client($account_sid, $auth_token);
   $client->account->calls->create(  
     $to_number,
     $twilio_number,

     // オプション設定(下記以外にも多数あり)
     array(
         "timeout" => 30, // タイムアウト設定
         "method"  => "GET",
         "statusCallback" => https://XXXXXXXXXXX, // コールバック送信先
         "statusCallbackEvent"  => ["initiated","ringing","answered",'completed'], // コールバック発生タイミングの設定
         "statusCallbackMethod" => "GET",
         "twiml" =>
               "<Response>
                   <Say language='ja-JP'>受電後の音声を入力</Say>
               </Response>"  
     )
   );

4,コールバック値を取得する

CallbackController.php
   public function getCallback(Request $request)
   {
        // コールバックステータスを取得
        $callBackInfo = $request->all();
   }

  取得できるコールバック値

  'Called' => '架電先電話番号', 
  'ToState' => 'Tokyo',
  'CallerCountry' => 'US',
  'Direction' => 'outbound-api',
  'Timestamp' => 'Sun, 27 Nov 2022 09:16:00 +0000',
  'CallbackSource' => 'call-progress-events',
  'CallerState' => 'CA',
  'ToZip' => NULL,
  'SequenceNumber' => '0',
  'CallSid' => '架電毎に発行されるSID',
  'To' => '架電先電話番号',
  'CallerZip' => 'XXXXX',
  'ToCountry' => 'JP',
  'CalledZip' => NULL,
  'ApiVersion' => '2010-04-01',
  'CalledCity' => NULL,
  'CallStatus' => '架電ステータス',
  'From' => '架電元電話番号',
  'AccountSid' => 'アカウントSID',
  'CalledCountry' => 'JP',
  'CallerCity' => 'OAKLAND',
  'ToCity' => NULL,
  'FromCountry' => 'US',
  'Caller' => '+ーーーーーーーー',
  'FromCity' => 'OAKLAND',
  'CalledState' => 'Tokyo',
  'FromZip' => 'XXXXX',
  'FromState' => 'CA',

携帯電話への架電通知では、特定の架電状況が取れない場合もありました。  

参考URL(Twilio公式ドキュメント)
https://www.twilio.com/ja/docs

どうしてもわからないときは、Twilioのテクニカルサポートの方がたに親切丁寧に対応していただきました。感謝感謝です。

まだまだ技術的も記事の書き方的にも至らないことばかりです。
ご意見、ご指摘ありましたらよろしくお願いします。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?