第5回 Twilioで音声ガイダンス機能を作成

スポンサーリンク

twilioを使って簡易音声ガイダンス(コールセンター)を作ってみます。

例えば、、、

故障については 1を

使い方については 2を

その他については 3を押してください。

的なあのガイダンス。

目的

簡易音声ガイダンス機能を作成。

開発

今回、下記2ファイルを使ってシステムを構築してみた。

  • requestCallcenter.xml
  • responseCallcenter.php

requestCallcenter.xml は、twilio番号に電話がかかってきたら実行されるファイル。
responseCallcenter.php は、発信者がダイヤルキーを押した後に実行されるファイル。

requestCallcenter.xml

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Gather timeout="10" finishOnKey="*" numDigits="1" method="GET" action="http://example.com/responseCallcenter.php">
        <Say language="ja-jp">こんにちわ。コールセンターです。1〜9いずれかのダイヤルキーをプッシュしてください。</Say>
    </Gather>
    <Say language="ja-jp">キーの入力がありませんでした。</Say>
</Response>

1行目の

<?xml version="1.0" encoding="UTF-8"?>

は、xml宣言文と言われる一行。以降の文章構造はxmlで書いていきますよと宣言している。

2行目と7行目にある

<Response>
</Response>

は、TwiMLのルート要素。命令動詞は必ずこのResponseをネストするように記述していく必要がある。

3〜6行目の部分が命令動詞。

3行目と5行目の Gather で発信者に対してダイヤルキーをプッシュするよう命令を出している。
4行目の Say で発信者に対して「ダイヤルキーをプッシュしてください。」と読み上げる命令を出している。
6行目の Say では、ダイヤルキーのプッシュが行われなかった時に実行される命令。

<Gather timeout="10" finishOnKey="*" numDigits="1" method="GET" action="http://www.example.com/hoge/responseCallcenter.php">
<Say>ダイヤルキーをプッシュしてください。</Say>
</Gather>
<Say language="ja-jp">キーの入力がありませんでした。</Say>

requestCallcenter.xmlファイルの記述が完了したら、サーバにアップロード。
後は、twilio番号とrequestCallcenter.xmlとのひも付けを行う。
ひも付け方法はこちら
※それぞれの環境にあわせてURLの入力を変更する必要があります。

responseCallcenter.php

<?php header("Content-Type: text/xml"); 
// $_GET['Digits']にはプッシュされたダイヤルキーの情報が格納されています。 
$degits = $_GET['Digits']; 
?>

<Response>
<?php if($degits == 1):?>
	<Say language="ja-jp">1のキーが押されました。担当者に繋げます。しばらくお待ち下さい。</Say>
<?php elseif($degits == 2):?>
	<Say language="ja-jp">2のキーが押されました。担当者に繋げます。しばらくお待ち下さい。</Say>
<?php elseif($degits == 3):?>
	<Say language="ja-jp">3のキーが押されました。担当者に繋げます。しばらくお待ち下さい。</Say>
<?php elseif($degits == 4):?>
	<Say language="ja-jp">4のキーが押されました。担当者に繋げます。しばらくお待ち下さい。</Say>
<?php elseif($degits == 5):?>
	<Say language="ja-jp">5のキーが押されました。担当者に繋げます。しばらくお待ち下さい。</Say>
<?php elseif($degits == 6):?>
	<Say language="ja-jp">6のキーが押されました。担当者に繋げます。しばらくお待ち下さい。</Say>
<?php elseif($degits == 7):?>
	<Say language="ja-jp">7のキーが押されました。担当者に繋げます。しばらくお待ち下さい。</Say>
<?php elseif($degits == 8):?>
	<Say language="ja-jp">8のキーが押されました。担当者に繋げます。しばらくお待ち下さい。</Say>
<?php elseif($degits == 9):?>
	<Say language="ja-jp">9のキーが押されました。担当者に繋げます。しばらくお待ち下さい。</Say>
<?php endif;?>
</Response>

phpでxmlを生成し、条件分岐により命令処理の振り分けを行う。
responseCallcenter.phpでは、実際にプッシュされたダイヤルキーの情報を取り出してphpで条件分岐をする。

ここで担当者の番号に繋げるように命令を入れるとコールセンターシステムの出来上がり。
別の方に電話を繋げる命令はまた別の機会に。

参考文献

Gather動詞の概要:https://jp.twilio.com/docs/api/twiml/gather
・プッシュ音認識で、スマホじゃなくてもレスポンスを自動取得!(Gather):https://www.youtube.com/watch?v=usrz8EzVFhc

スポンサーリンク
スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク