とある技術の開発日記

Diary of irregular phrase programmer

Twilioの通話APIをASP.NET MVCで試しに使ってみた

前回のtwilio記事に続き2回目です。前回の記事はこちら。 blog.hamamotsu.jp

前回は導入するだけだったので今回は実際にMVCで使用してみようと思います。

ASP.NET MVCのテンプレートを作成すると以下のようなフォルダ構成になっていると思います。
画像ではPublishScriptsフォルダがありますが、テンプレートを作り際にMicrosoft Azure Web Appsにホストしていない場合は存在しません。

f:id:airish9:20150702101747p:plain

1.コントローラークラスを作成する

まずは、通常のMVCと同じようにコントローラーを作成します。 TwilioではTwiMLと呼ばれるXMLを返す事でTwilio電話番号に電話を掛けた際の処理をXMLで記述する事になります。
TwiMLのSDKではActionResultを継承したTwiMLResult型を返却すればOKです。

また、TwilioControllerにはTwiMLというTwiMLResult型プロパティが用意されているので今回はTwilioControllerを作成したコントローラーを使用します。
簡単な処理を組み込んだControllerのサンプルはこのようになります。

public class TwilioSampleController : TwilioController
{
    public ActionResult Index()
    {
        var response = new TwilioResponse();
        response.Say("Hello");
        response.Say("Good bye");
        return TwiML(response);
    }
}

ポイントは継承元をControllerからTwilioControllerに変更してTwiMLResult型を返却している部分です。

TwilioResponse.Sayメソッドで電話をかけた際の音声を指定できます。
この温泉に日本語が使えるといいのですが、うまくいきませんでした…(情報を持っている方は教えてください)

2.Webサイト発行してアクセスする

今回はAzure Web AppsでホスティングしているためVisual Studioの発行ウィザードを使用して変更を反映します。

プロジェクトを右クリック > 発行を選択
f:id:airish9:20150702112123p:plain

ウィザードに従って発行
f:id:airish9:20150702112204p:plain

3.Azure Web Appsで確認

http://{ 作成したWeb Apps名}.azurewebsites.net/TwilioSample/IndexにアクセスをするとTwiMLのXMLが返却されている事を確認できます。

f:id:airish9:20150702113907p:plain

4.Web AppsとTwilio電話番号を紐づける

今のままではTwilio電話番号に電話を行っても作成したTwiMLが実行されないため、Azure Web AppsとTwilioを連携させる必要があります。

1)Twilio電話番号のページを表示する

f:id:airish9:20150702115208p:plain

2)Twilio電話番号のページのRequestURLにWeb AppsのURLを設定する

f:id:airish9:20150702115219p:plain

この設定を行うことでTwilio電話番号に電話をかけると指定されたURLへリクエストが発生してTwiMLの処理が行われる事になります。

5.電話をかけてTwiMLの動作確認を行う

実際にTwilio電話番号に電話をかけるとTwiML通りに機械音声が再生されて電話が切れるか確認を行います。

Twilio電話番号はTwilioのダッシュボードから確認できるため適当な電話機から電話をかけます。
国番号が入るため+815012345678の場合は050-1234-5678への発信となるのでご注意を。

トライアルアカウントの番号で電話をかけると日本語音声でアップデートすると日本語メッセージが流れないようになると言われた後に、プッシュ操作を求められます。プッシュ操作を行うとTwiML通りのメッセージが流れるはずです。