メニュー

Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

PHPでプッシュボタン (DTMF信号) からのユーザー入力を収集する

In this guide, we'll show you how to gather user input during a phone call through the phone's keypad (using DTMF tones) in your PHP application. By applying this technique, you can create interactive voice response (IVR) systems and other phone based interfaces for your users. The code snippets in this guide are written using PHP language features in PHP version 4.3 or higher, and make use of Twilio PHP SDK.

はじめましょう!

着信通話を受けるためにWebアプリケーションを設定する

This guide assumes you have already set up your web application to receive incoming phone calls. If you still need to complete this step, check out this guide. It should walk you through the process of buying a Twilio number, and configuring it to receive incoming calls.

<Gather> TwiML動詞でユーザー入力を収集する

<Gather> TwiML動詞では、通話中にユーザーからの入力を収集することができます。 <Gather>内では<Say><Play>のような、一部のTwiML動詞を入れ子にすることができます。 このサンプルでは、ミニチュア版のIVRシステムでユーザーに番号を入力するよう促し、ある部署に電話をつなぎます。

        
        
        
        
        この例では、<Gather>タグ内に入れ子となった<Say>タグを含むTwiMLを返します。 ユーザーは、営業とサポート、いずれかを選択するよう促されます。

        <Gather>を使用してプッシュボタン (DTMF信号) を通じたユーザー入力を収集する

        この例では、<Gather>タグ内に入れ子となった<Say>タグを含むTwiMLを返します。 ユーザーは、営業とサポート、いずれかを選択するよう促されます。

        ユーザー入力が何もないまま設定可能なタイムアウト時間を過ぎると、Twilioはドキュメント中のTwiMLの処理を続け、通話において次に何が起こるべきか判断するか、(処理すべきTwiMLがなければ)通話を切断します。 上記の例では、<Redirect>動詞を使ってTwilioに同じURLを再度リクエストさせ、ユーザーに対する入力待ちを繰り返しています。

        ここで、上記のサンプルを実行してプッシュボタンで番号を入力すると、押したボタンにかかわらず同じ入力待ち音声が繰り返し流れ続けることにお気づきでしょう。 既定では、<Gather>でユーザーが番号入力をすると、Twilioは現在のWebhook URLに対する別のHTTPリクエストを、ユーザーによって入力された1つ以上の数字を示す Digits POSTパラメーターを伴って送信します。 上記の例ではこの処理をまったく行っていませんでした。 このロジックを、ユーザー入力があるときはそれを処理するよう更新しましょう。

              
              
              
              
              既定では、<Gather>は入力が行われるたびに同じURLをリクエストし、現在のTwiML URLを「ループ」させます。

              ユーザーによって送信された数字に基づいて通話ロジックを分岐させる

              既定では、<Gather>は入力が行われるたびに同じURLをリクエストし、現在のTwiML URLを「ループ」させます。

              ユーザー入力収集後に行われるアクション (action) を指定する

              ユーザー入力やガイダンス再生などの処理を、同一のWebhook URLで行うことができますが、アプリケーション中にまったく別の呼び出し先を設けて、ユーザー入力を処理したいこともあるでしょう。 <Gather>動詞の"action"属性を使えばこれが可能です。 サンプルを書き換え、ユーザー入力の処理を受け持つ第2の呼び出し先を追加してみましょう。

              最初のWebhookリクエストを処理する

                    
                    
                    
                    
                    この方法で、ユーザー入力を処理する別のルートを作成します。

                    ユーザーからの入力を処理する別のルートの追加

                    この方法で、ユーザー入力を処理する別のルートを作成します。

                    action属性には、サーバーで処理を実行できる別ルートへの相対URLを指定します。

                    異なる呼び出し先でaction URLリクエストを処理する

                          
                          
                          
                          
                          この方法で、ユーザー入力を処理する別のルートを作成します。

                          "Action" URLを実装し、ユーザー入力を処理する

                          この方法で、ユーザー入力を処理する別のルートを作成します。

                          これで、単一のルートでの条件分岐のロジックの代わりに、action属性を使って通話ロジックを別のコードの流れで処理するようリダイレクトすることができます。

                          関連トピック

                          PHPでコールセンター型のアプリケーションを構築されているなら、IVRシステムを実装し、PHPで記述された完全なサンプルアプリケーションのコードを1行ずつ追うのも有意義でしょう。

                          Agustin Camino Ricky Robinett Rob Spectre David Prothero Mario Celi Andrew Baker Kevin Whinnery Kat King
                          Rate this page:

                          ヘルプが必要ですか?

                          We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.