Edited at

TwilioならIVR(電話の自動応答システム)がスクリプト一枚でできちゃいます!

More than 1 year has passed since last update.

いままでいろいろTwilioの機能を紹介して来ました!

今回はTwilioで着信機能!その中で、もっとも活用されている「IVR(自動応答システム)」を作ってみたいと思います。

IVRとは?

どこかに電話をかけた際に、〇〇の場合は1を、△△の場合は2をなど、自動的に音声による案内、もしくは応答してくれるシステムを言います。

詳しくはこちら。

http://ja.wikipedia.org/wiki/自動音声応答装置

て、今までこのようなシステムを開発するためにはいろんなことを考えなくちゃならなかったですね。

システムの開発もそうだし、設備はどうする?回線は。。いろいろ複雑だったはずです。

そこで、Twilioを使えばPHPやrubyなど、一枚のスクリプト且つ短いコードでこのような自動応答システムの開発ができるようになります。

ソースコードから。


twilio-ivr.php

<?php

require("twilio-php-master/Twilio/autoload.php");

use Twilio\Twiml;

$response = new Twiml();

$out_tel_to = "転送先電話番号";
$sound_url = "再生する音声ファイルのURL";

if (empty($_POST["Digits"])) {
$gather = $response->gather(['numDigits' => 1, 'timeout' => 30]);
$gather->say("Twilioへようこそ。電話の転送は1を音声ファイルの再生は2を電話の終了は3をおしてください。", ['language' => 'ja-jp']);
} elseif ($_POST["Digits"] == "1") {
$response->dial($out_tel_to);
$gather = $response->gather(['numDigits' => 1, 'timeout' => 30]);
} elseif ($_POST["Digits"] == "2") {
$response->play($sound_url, ["loop" => 1]);
$gather = $response->gather(['numDigits' => 1, 'timeout' => 30]);
} elseif ($_POST["Digits"] == "3") {
$response->say("楽しいAPI Twilioのご利用ありがとうございました。", ['language' => 'ja-jp']);
}
print $response;
?>


twilioのPHPライブラリなどについては前回公開した記事をご覧ください!

http://qiita.com/joohounsong/items/f516f4e1f6c91572e7f5

twilio-ivr.php をTwilioの電話番号に設定する方法。

① Twilioのアカウントにログインします。

② ダッシュボードのメニューから

電話番号 → このファイルを設定する電話番号選択 → Twilio Request URLに

 「twilio-ivr.php」のURLをフルパスで設定します。

 ※ 「twilio-ivr.php」はTwilioが参照できるウェブサーバー(ブロバール)に配置する必要があります。

これで電話の自動応答システム完成!

残りは、自分の電話番号に電話をかけて、確認してみてください。

トライアルアカウント(無料)でもお試し可能です。

この処理で再生する音声ファイルは各自用意してくださいませ。

$sound_urlに音声ファイルをフルパスで設定してください。

$out_tel_toには転送する電話番号を設定してください。トライアルアカウントならTwilioから認証された一つの電話番号にしか発信が出来ませんので、認証の電話番号を設定しましょう。

下のような処理が行われます。

動きはこんな感じです。

■ ユーザーが「050-xxxx-xxxx」に電話をかけます。

 → 11行のメッセージを再生します。

■ ユーザーが自分の電話機から「1」を押します。

 → 6行で指定した電話番号に電話を転送します。

■ ユーザーが自分の電話機から「2」を押します。

 → 7行で指定した音声ファイル(mp3など)を再生します。

■ ユーザーが自分の電話機から「3」を押します。

 → 通話を終了します。

コードより文字が多いですが、是非試してみてください!