電話による録音、意外と楽しくて便利なシステムが開発できます。

今回はみなさんにTwilioの<B>Record</B>動詞をご紹介致します！

Twilioを使えば電話によるメッセージの録音や音声ファイルの再生も簡単に実現可能です。
数行のコードを書いて、電話番号にTwiMLのURLを設定するだけで構築が可能です。

「音声を録音してその場で再生することができます。」をみてみましょう！

<h3>電話で録音、意外と楽しくて便利な物ができるかも！</h3>

今までは電話による「録音」を思い出すと？「留守番電話、通話内容の録音」などが先に思い出すかと思います。

例えば、録音した生声をプレゼントできるのはいかがですか？

実際に友達に結婚式で新郎新婦には内相で友達のみんなから「お結婚おめでとう」のメッセージを集め、結婚式場で新郎新婦にプレゼントした素敵なアプリが開発されたこともあります。
その内容がブログにて紹介されています。それぞれ別のユーザーの開発なので是非ご覧ください。
[「ご結婚おめでとう」親友に贈ったコードとデザインの話](http://mamipeko.hatenablog.com/entry/happy-wedding-s)
[#wedding-sに向けてTwilioでお祝いのメッセージを集めた](http://hmsk.hatenablog.com/entry/2013/10/22/091427)

このように録音された友達からのメッセージは録音ファイルが再生できる電話番号（050）に電話をかけるだけでどこでも聞けますし、思い出として残しておく事も可能です。お友達からのお祝いメッセージを10年後、20年後聞きながら結婚式当時を思い出すのも素敵なプレゼントになるのではないかと思います。

<h3><B>Record</B>の仕組み</h3>
Twilioの素敵な機能 <B>Record</B>はどんな仕組みになっているのでしょう！

<B>Record</B>から録音を行いますと、録音ファイル（mp3）のURLがTwilio側から発行されます。
発行されたURLをクリックするとすぐ音声ファイルの再生が可能です。

録音ファイルのURLは録音が終わった後、Twilioから発行され、録音が行われたファイルもしくは<B>Record</B>動詞の"action"に設定されているURLに送信されます。

録音された音声ファイルはTwilio側に蓄積され、下記のメニューからも確認することができます。
メニュー：ログ → 音声 

Twilioから録音された音声ファイルは最初、このようにTwilioのサーバーに保存されますが、REST APIを使えば音声ファイルの削除はもちろん、みなさん独自のダッシュボードを作ることも可能です。詳細は下記のリンクをご覧ください。
[REST API : 録音](https://jp.twilio.com/docs/api/rest/recording)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/29452/5bb97333-df67-2085-9200-7f238966c773.png)

<h3>電話で録音したメッセージをすぐ確認できます。</h3>
TwilioはTwiMLに記述されている動詞や名詞で動作します。TwiMLについては下のリンクをご覧ください。
[TwiMLTM: Twilio マークアップ言語](https://jp.twilio.com/docs/api/twiml)

今回は動詞の中で<B>Record</B>と<B>Play</B>、<B>Say</B>を使ってメッセージを確認する処理を完成させてみたいと思います。

処理の流れはこんな感じ。
① ユーザーが 050に電話をかける。
② 電話のアナウンス「録音の後、シャープを押してください。」再生。
③ ユーザーはアナウンスに従って録音をし、最後にシャープを押す。
④ その後すぐ、自分が録音した内容が電話にて確認できる。

<B>サンプルコード(TwiML)はこちら</B>

```php:twiml-Recoding-Play.php

<?php
    header("content-type: text/xml");
 
    // 録音ファイルのURLを取得します。
    $recording_url = $_POST['RecordingUrl'];
?>
<Response>
    <?php if (isset($recording_url)) { ?>
      <Say language="ja-jp">録音ファイルを再生いたします。</Say>
      <Play><?PHP echo $recording_url; PHP?></Play>
      <Hangup />
    <?php } else { ?>
      <Say language="ja-jp">録音の後、シャープを押してください。</Say>
      <Record />
    <?php } ?>
</Response>

```

【5行：録音ファイルのURL取得】
Twilioから録音されたファイルのURLは「RecordingUrl」に格納され渡されます。
Twilioは基本「POST」型で渡されるんですが、GETなどでもやり取りが可能です。

【13 〜 14行：録音開始】
このTwiMLと紐づいている電話番号に着信があった際に、初めて実行されるところです。
<Say>という動詞から中に書いてあるテキストを音声に変換した後、14行目の<Record />タグ（動詞）で
録音を開始します。

【8行 〜 11行：録音存在判断】
音声ファイルのURLが存在する場合、<Play>動詞が実行されURLの音声ファイルを再生します。
再生の後は<Hangup />タグ（第2動詞）で通話を終了させます。

<h3>TwiMLを電話番号に設定！</h3>
![image-2.png](https://qiita-image-store.s3.amazonaws.com/0/29452/6441527e-a6cb-1777-fde2-cd021980053e.png)

この上で作成したTwiML（twiml-Recording-Play.php）を電話番号に設定してみたいと思います。
TwiMLは本ブログの上部でも少し話がでましたが、Twilioの動詞（命令語）を記述するXML形式のファイルです。
サンプルコードはPHPなんですが、みなさんご覧の通り、ヘッダの部分で XMLでファイルを出力しています。このファイルがウェブに公開されていることでTwilioからRequestを送信し、Twilioを動作させる仕組みになっています。

まず、グロバール（ウェブ）サーバーをご用意ください。
① ウェブサーバーにサンプルコードを配置し、そのURLを「Request URL」に設定します。
② 保存ボタンを押下し、設定を完了します。

<B>やることはこれだけ！</B>

ここまで設定が終わったらサンプルコードを設定したみなさんのTwilio電話番号(050)に電話をかけてみてください。電話による録音と、録音ファイルの再生が確認できます。

<h3>最後に</h3>
いかがでしょうか？今までは電話で録音をするのは留守番電話を先に思い出すかと思いますが、Twilioを使えば電話による録音を使って新しい楽しみ方が沢山生まれるはずです。

今回は録音の後、録音内容を確認するのを紹介しましたが、このコードを応用しますと、より多くのことができます。
例えば、<Gather>（プッシュ音認識） 動詞を使えば、録音内容の確認は「１」を、再録音は「２」を、録音ファイルをメールやSNSなどに送信するには「３」を押してください。
のような処理をソースコードの「8、9」行目の間に記述すると実装可能です。
なお、SNS（Facebookやtwitterなど）のAPIとの連動でソーシャルとTwilioのアプリを連動も試してみてください。

それがたった数行のコードを各だけで自由自在に開発はもちろん手軽に運営ができるのもTwilioの強みの一つです。

みなさん、是非試してみてください！

[クラウド電話&SMS API Twilio 無料新規登録](https://jp.twilio.com/try-twilio/kddi-web)