はじめに
Twilioの電話通知機能をLaravelにて実装しました。
備忘録として記載させていただきます。
流れ
ブラウザからTwilio側にHTTPリクエスト
↓
Twilio側が電話に通知(設定した音声流れる)
↓
Twilio側からHTTPリクエストを受け取る
↓
Twilio側から受け取ったHTTPリクエストでコールバック値(架電の状況等)を取得
開発環境 | バージョン |
---|---|
Laravel | 8.83.19 |
PHP | 7.3.10 |
Twilioの導入
1,Twilioトライアルアカウントを作成する
Twilioに担当者に問い合わせてトライアルアカウントを作成してもらう。
TwilioのアカウントSID、AUTHトークン、架電元電話番号を担当者からもらう。
2,Twilioライブラリーをインストールする。
composer require twilio/sdk
参照URL(Twilio公式サイト)
https://www.twilio.com/ja/docs/voice/quickstart/php
3,架電通知する
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,コールバック値を取得する
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のテクニカルサポートの方がたに親切丁寧に対応していただきました。感謝感謝です。
まだまだ技術的も記事の書き方的にも至らないことばかりです。
ご意見、ご指摘ありましたらよろしくお願いします。