1
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 5 years have passed since last update.

[twilio] Twilioで受信メッセージを録音してみる (Twilio Post用サーバ)

Last updated at Posted at 2015-10-12

前提条件

公開サーバ環境

Webサーバ + PHP環境

  • Twilio Post用サーバ環境を構築してみる (AmazonLinux + nginx + php-fpm):

0. 事前準備

ファイル置き場の作成

変数の設定
DIR_HTML='/usr/share/nginx/html'
DIR_TWIML="${DIR_HTML}/sysadm/xml"
DIR_PHP_SCRIPT="${DIR_HTML}/php"
URL_PHP_SCRIPT=$(echo ${DIR_PHP_SCRIPT} | sed "s|${DIR_HTML}||" )
コマンド
sudo mkdir -p ${DIR_TWIML} ${DIR_PHP_SCRIPT} \
  && ls ${DIR_TWIML} ${DIR_PHP_SCRIPT}

1. 電話録音アプリの作成

サーバ上に電話受信アプリを作成します。

1.1. Twilioからのリクエストを処理するスクリプトの作成

変数の設定
FILE_PHP_SCRIPT='handleRecording.php'
MSG_THANKYOU='ご連絡ありがとうございました。'
変数の確認
cat << ETX

  FILE_PHP_SCRIPT: ${FILE_PHP_SCRIPT}
  MSG_THANKYOU: ${MSG_THANKYOU}

ETX
コマンド(日本語の場合)
cat << EOF > ~/${FILE_PHP_SCRIPT}
<?php
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
echo "<Response><Say language=\"ja-jp\">${MSG_THANKYOU}</Say></Response>";
EOF

1.2. Webサーバの公開ドキュメントディレクトリにスクリプトを配置

コマンド
sudo cp ~/${FILE_PHP_SCRIPT} ${DIR_PHP_SCRIPT}/ \
  && cat ${DIR_PHP_SCRIPT}/${FILE_PHP_SCRIPT}
/usr/share/nginx/html/php/handleRecording.php
<?php
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
echo "<Response><Say language=\"ja-jp\">ご連絡ありがとうございました。</Say></Response>";

1.3. スクリプトへのアクセス確認

ブラウザで http://<ホスト>/php/handleRecording.php にアクセスして、"ご連絡ありがとうございました。"が表示されればOKです。

2. TwilioMLファイルの作成

2.1. TwilioMLファイルの作成

変数の設定
FILE_TWIML='voicemail_record.xml'
MSG_SAY='ビープおんのあとに、20秒以内でメッセージをおねがいします。終了したらシャープボタンを押してください。'
MSG_ERROR="I did not receive a recording. Goodbye."
MAX_LENGTH_RECORD='20'
変数の確認
cat << ETX

  URL_PHP_SCRIPT:    ${URL_PHP_SCRIPT}
  FILE_TWIML:    ${FILE_TWIML}
  MSG_SAY:           ${MSG_SAY}
  MSG_ERROR:         ${MSG_ERROR}
  FILE_PHP_SCRIPT:   ${FILE_PHP_SCRIPT}
  MAX_LENGTH_RECORD: ${MAX_LENGTH_RECORD}

ETX
コマンド(日本語版)
cat << EOF > ~/${FILE_TWIML}
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say language="ja-jp">${MSG_SAY}</Say>
    <Record
        action="/php/handleRecording.php"
        method="GET"
        maxLength="20"
        finishOnKey="#"
    />
    <Say>${MSG_ERROR}</Say>
</Response>
EOF
コマンド
xmllint ~/${FILE_TWIML} -noout

2.2. Webサーバの公開ドキュメントディレクトリにTwilioMLファイルを配置

TwilioMLを配置場所は、GETで取得できる環境であれば良いのでS3上でもかまいませんが、今回は上記の公開Webサーバ上に配置します。

コマンド
sudo cp ~/${FILE_TWIML} ${DIR_TWIML}/ \
  && cat ${DIR_TWIML}/${FILE_TWIML}
/usr/share/nginx/html/sysadm/xml/complex_gather.xml
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say language="ja-jp">ビープおんのあとに、20秒以内でメッセージをおねがいします。終了したらシャープボタンを押してください。</Say>
    <Record
        action="/php/handleRecording.php"
        method="GET"
        maxLength="20"
        finishOnKey="#"
    />
    <Say>I did not receive a recording. Goodbye.</Say>
</Response>

2.3. TwilioMLファイルへのアクセス確認

ブラウザで http://<ホスト>/sysadm/xml/voicemail_record.xml にアクセスして、XMLが表示されればOKです。

3. Twilioの設定変更

  • ログイン: http://twilio.kddi-web.com
  • 画面: 'Voice, SMS & MMS' > '電話番号: 'https://jp.twilio.com/user/account/voice-sms-mms/phone-numbers
    • 電話番号のリンクをクリックします。
    • ポップアップで「音声通話」タブを選択します。
    • Request URLにTwiML(XMLファイル)のURLを貼り付けます。
      • 例: http://username:password@<ホスト名>/sysadm/xml/voicemail_record.xml
      • username:passwordには、ベーシック認証のユーザ名(例:sysadm)とパスワード(例:#userPass123)を記述します。
    • URLを貼り付けた欄の右のプルダウンから'HTTP GET'を選択します。

スクリーンショット 2015-10-10 9.07.33.png

  • 「保存」ボタンをクリックします。

4. 電話アプリの動作確認

  • Twilioから割り当てられた電話番号に電話します。

    • voicemail_record.xmlに記述したメッセージが流れます。
  • メッセージを録音します。

    • しばらく待つ、もしくは#キーを押します。
  • handleRecording.phpに記述したメッセージが流れて、電話が切れます。

完了

1
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
1
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?