You are viewing the Japanese site, but your language preference is set to English. Switch to English site →

Menu

Expand
このページを評価:

Python向けProgrammable Voiceクイックスタート

必要なものはコード数行のみ。Twilio Programmable Voiceを使用し、Pythonアプリケーションから通話の発着信を行うことができます。

このPythonクイックスタートでは、REST APITwilio PythonヘルパーライブラリーPythonのFlaskマイクロフレームワークを使用し、簡単に通話の発着信を行う方法を説明します。

このクイックスタートでは、以下について説明します。

  1. Twilioにサインアップし、音声対応のTwilioの電話番号を初めて取得する
  2. 開発環境を設定し、通話の発着信を行う
  3. MP3を再生する通話を発信する
  4. 通話の着信・応答時に、Text to Speechを使用し発信側に対しメッセージを読み上げる

ビデオもご用意しています。Pythonにより通話の発着信を行う方法(YouTube)をご覧ください。

どうなるか確認しましょう

Twilioにサインアップし電話番号を取得する

Twilioアカウント、音声対応のTwilio電話番号をすでにお持ちの場合は、ログインし、次のステップに進んでください

Pythonから電話をかけるには、Twilioアカウントが必要です。ここでサインアップし、無料トライアルアカウントを取得するか、すでにお持ちのアカウントにログインします。

次に、音声対応のTwilioの電話番号を用意します。音声通話機能付きのTwilio電話番号をお持ちではない場合は、ご購入いただく必要があります。 [Buy a Number](番号を購入する)ページに移動し、[Voice]ボックスをチェックし、[Search](検索)をクリックします。

Search for a voice-enabled phone number

使用可能な電話番号とその機能のリストが表示されます。好みの番号を探し、[Buy](購入)をクリックし、アカウントに追加します。

Purchase a voice-enabled phone number from Twilio

これでTwilioアカウントとプログラム可能な電話番号が揃い、通話に必要な基本ツールが準備できました(日本の場合、Regulatory Bundleが必須です)。

TwilioのHTTP APIを使用して電話をかけることもできますが、Twilioの公式Pythonヘルパーライブラリーを使用することにより、作業をさらにシンプルにできます。インストール方法を説明します。

セットアップの手順を確認します。

PythonとTwilioヘルパーライブラリーをインストールする

Pythonのクイックスタートのいずれかをすでに終えており、PythonとTwilio Pythonヘルパーライブラリーがインストールされている場合には、このステップを省略し、最初の通話に進むことができます。

Twilioを使用して初めて電話をかけるには、PythonとTwilio Pythonヘルパーライブラリーをインストールしておく必要があります。

Pythonをインストールする

MacマシンまたはLinuxマシンをご使用の場合には、Pythonがすでにインストールされている可能性があります。ターミナルを開き、以下のコマンドを実行することで確認できます。

python --version

次のように表示されます。

$ python --version
Python 3.9  # Python 3.6+ is okay, too

Windowsのユーザーは、こちらのWindowsにPythonをインストールするためのチュートリアルをご覧ください。

TwilioのPython SDKは、Python 3.6以降のみをサポートします。

Twilio Pythonヘルパーライブラリーをインストールする

ライブラリーをインストールする最も簡単な方法は、pipを使用することです。以下をターミナルで実行します。

pip install twilio

pip: command not found(pip: コマンドが見つかりません)」というエラーが発生した場合には、ターミナルで以下を実行し、easy_installでTwilioヘルパーライブラリーをインストールします。

easy_install twilio

手動インストールでは、twilio-pythonのソースコード(ZIP)をダウンロードし、以下のコード

python setup.py install

をtwilio-pythonライブラリーのあるフォルダで実行し、ライブラリーをインストールします。

次に、これを使用し、コードを記述します。

完了です。電話をかけてみましょう。

Pythonを使用し通話を発信する

Pythonとtwilio-pythonがインストールされたため、購入したTwilioの電話番号から1つのAPIリクエストを使用し、通話を発信できます。make_call.pyという新しいファイルを作成し、このコードサンプルを入力または貼り付けします。

        
        
        

        このコードにより、引数として渡される2つの電話番号の間で音声通話が開始されます。「from」番号はTwilioの番号であり、「to」番号は通話相手の番号です。

        URL引数はTwiMLを指します。TwiMLは、受信者が応答した際の処理をTwilioに通知します。このTwiMLにより、Text To Speech機能を通じメッセージを読み込み、MP3を再生するようにTwilioに指示します。

        このコードを機能させる前に、自分のTwilioアカウントで動作するように少し編集する必要があります。

        プレースホルダの認証情報値を置き換える

        account_sidauth_tokenのプレースホルダ値を、ご自身のTwilio認証情報に置き換えます。

        https://www.twilio.com/consoleに移動し、ログインします。このページでは、お客様固有のAccount SIDとAuth Tokenを確認できます。この作業は、今回のようにTwilio Clientによりメッセージを送信する際に必要となります。「目」のアイコンをクリックすると、Auth Tokenが表示されます。

        Reveal Your Auth Token

        make_call.pyを開き、account_sidauth_tokenの値をご自身固有の値に置き換えます。

        注意: 最初は認証情報を直接コードに埋め込んでも問題ありませんが、本番環境にデプロイするまでには、必ず環境変数を使用し、認証情報を保護してください。詳細については、環境変数の設定方法をご覧ください。

        tofrom_の電話番号を置き換える

        数分前に購入した音声対応の電話番号を覚えていますか。入力されているfrom_の番号を、その番号に置き換えます。必ずE.164形式を使用してください。

        [+][国コード][エリアコードを含む電話番号]

        次に、toの電話番号をご自身の携帯電話番号に置き換えます。通話を受信できる電話番号であればどの番号でも構いませんが、プロセスを実際に体験するために、ご自身の番号を使用することをお勧めします。上記のように、この値にはE.164形式を使用します。

        変更内容を保存し、ターミナルからスクリプトを実行します。

        python make_call.py

        これで完了です。Twilioの番号から電話がかかり、携帯電話が鳴ります。応答すると短いメッセージが聞こえます。😉

        Twilioのトライアルアカウントを使用している場合、Twilioにより確認された番号のみに通話を発信できます。電話番号は、Twilio Consoleの認証済み発信者IDにより認証できます。その他のトライアルアカウントの制限については、無料のTwilioトライアルアカウントでの作業方法に関するガイドをご覧ください。

        次に、Twilioの電話番号への着信通話に応答する方法を学びます。まず、Flaskサーバーを設定し、起動します。

        では始めましょう。

        Flaskをインストールし、開発環境を設定する

        着信通話を処理するには、Twilioからの受信HTTPリクエストを受け付ける軽量のWebアプリケーションが必要です。このクイックスタートではFlaskを使用しますが、アプリケーションから電話を発着信するためのWebフレームワークは、好きなものを使用して構いません。

        Windows上のFlaskの設定手順については、こちらのガイドをご覧ください。

        pipとvirtualenvをインストールする

        Flaskをインストールし、開発環境を設定するには、Flaskをインストールするためのpipと、このプロジェクトに固有のサンドボックスを作成するためのvirtualenvという2つのツールが必要です。これらのツールがすでにインストールされている場合には、次のセクションにスキップできます

        Python 3.4+にはpipが付属するため、Pythonの最近のバージョンをお使いの場合には、何かを新しくインストールする必要はありません。それよりも以前のバージョンをお使いの場合でも心配の必要はありません。pipはvirtualenvに含まれています。それではvirtualenvをインストールしましょう。

        Python 2.4をご使用の場合、ターミナルで以下のコマンドを実行します。

        easy_install virtualenv

        Python 2.5-2.7をご使用の場合、バージョン番号を指定し、ターミナルで以下のコマンドを実行します。

        easy_install-2.7 virtualenv

        ご使用のバージョンに従い、必要に応じて2.72.5または2.6に置き換えます。

        Python 3.4+を使用し、virtualenvをインストールするには、以下の手順に従います。

        # If you get 'permission denied' errors try running "sudo python" instead of "python"
        pip install virtualenv
        

        このステップでエラーが発生する場合は、デバッグのためのヒントをご覧ください。

        仮想環境の作成と有効化

        virtualenvをインストールした後、ターミナルにおいてこのクイックスタートに使用しているディレクトリに移動し、仮想環境を作成します。

        cd Documents/my_quickstart_folder
        virtualenv --no-site-packages .

        次に仮想環境を有効化します。

        source bin/activate

        ターミナルではvirtualenvが実行されていることが確認できます。virtualenvを含むディレクトリ名が表示されます。次のように表示されるはずです。

        (my_quickstart_folder)USER:~ user$

        virtualenvの詳細について確認したり、カスタムの環境変数パスを作成したりするには、こちらの完全ガイドをご覧ください。

        依存関係をインストールする

        これでFlaskをインストールする準備ができました。requirements.txtというファイルを作成し、以下の行を追加します。

        Flask>=0.12
        twilio~=6.0.0

        次に、ターミナルでpipを使用しこれらのパッケージの両方をインストールします。

        pip install -r requirements.txt

        すべてを最初からテストする

        まず、virtualenvが有効であることを確認します。

        cd Documents/my_quickstart_folder
        source bin/activate     # On Windows, use .\bin\activate.bat

        次に、answer_phone.pyというファイルを作成し、それを開き、以下の行を追加します。

              
              
              
              このシンプルな「Hello, World」Flaskアプリケーションを使用し、設定をテストします

              「Hello, World」Flaskアプリケーション

              このシンプルな「Hello, World」Flaskアプリケーションを使用し、設定をテストします

              次にこれを実行します。ターミナルにおいて以下を入力します。

              python answer_phone.py

              次のように表示されるはずです。

              $ python answer_phone.py
              * Running on http://127.0.0.1:5000/

              ブラウザーでhttp://localhost:5000に移動します。「Hello World!」メッセージが表示されるはずです。これで初めてのTwilio Programmable Voiceアプリを作成する準備ができました。

              何らかの問題が生じた場合、または以前のPythonバージョン(3.4より前)で環境を設定する場合には、ローカルのPython開発環境を設定するための完全ガイドをご覧ください。

              完了です。Twilioに新しいアプリケーションと通信させるには?

              TwilioにFlaskアプリケーションと通信させる

              今度は、小さなFlaskアプリケーションを拡張し、音声通話を受けます。しかしその前に、Twilioがローカルの開発環境と通信できることを確認する必要があります。

              大半のTwilioサービスは、Webhookを使用することによりアプリケーションと通信します。例えば、Twilioが通話を受けると、通話の処理方法の指示を受けるためにアプリケーションを使用しURLに接続します。

              開発環境のFlaskアプリケーションの使用により作業する際、その環境のアプリはそのコンピューター上のプログラムからのみアクセス可能であるため、Twilioからはアクセスできません。インターネットでアプリケーションにアクセスできるようにし、この問題を解決する必要があります。

              アプリケーションをHerokuやAWSにデプロイするなど、方法はいくつかありますが、Twilioアプリケーションのテストには手間の少ない方法を採用します。インターネットでアプリケーションに簡単にアクセスできるようにするには、ngrokというツールをお勧めします。ngrokを開始すると、ngrok.ioドメインの一意のURLが提供され、受信リクエストがローカルの開発環境に転送されます。

              How ngrok helps Twilio reach your local server

              まだngrokをご利用でない場合には、ダウンロードページに移動し、お使いのオペレーティングシステムに適したバイナリをダウンロードします。ダウンロード後にパッケージを解凍します。

              MacまたはLinuxをお使いの場合には、これだけで作業は終わりです。Windowsをご使用の場合は、Windowsにngrokをインストールし、設定する方法についてのガイドを参照してください。ngrokの活用方法などの詳細については、こちらの詳細なブログ記事をご覧ください。

              ダウンロード後に、前に作成したHello Worldアプリケーションを起動します。

              python answer_phone.py

              ngrokを機能させるために、お使いのローカルのアプリケーションがローカルで実行されている必要があります。

              次に、新しいターミナルタブまたはウィンドウを開き、このコマンドを使用しngrokを開始します。

              ./ngrok http 5000

              ローカルサーバーが別のポートで実行されている場合には、5000を正しいポート番号に置き換えてください。

              次のような出力が表示されるはずです。

              Ngrok server terminal output

              この出力から公開URLをコピーし、それをブラウザーに貼り付けます。Flaskアプリケーションの「Hello World!」メッセージが表示されるはずです。

              サーバーは公開され、アクセス可能です。通話の着信方法を教えてください。

              Twilioを使用し着信に応答する

              お使いのTwilio番号が通話を受けると、Twilioは次の作業の指示を求めサーバーにHTTPリクエストを送信します。リクエストを受信したら、Twilioに電話への応答方法を指示できます。

              このクイックスタートでは、Flaskアプリに通話に応答させ、発信者に対して短いメッセージを言います。再度answer_phone.pyを開き、以下のコードサンプルのようにコードを更新します。

                    
                    
                    
                    Respond to an incoming request from Twilio with instructions on how to handle the call

                    Respond to an incoming call with a brief message

                    Respond to an incoming request from Twilio with instructions on how to handle the call

                    ファイルを保存し、以下のコードを使用しアプリを再起動します。

                    python answer_phone.py

                    これにより、Webブラウザーでhttp://localhost:5000/answerを開けるようになるはずです。ページのソースコードを確認すると、以下のテキストがあるはずです。

                    <?xml version="1.0" encoding="UTF-8"?>
                    <Response>
                        <Say voice="alice">Thank you for calling! Have a great day.</Say>
                    </Response>

                    このソースコードは、Twilioヘルパーライブラリーを活用した皆さんのコードから生成されたTwiML XMLです。

                    ngrokがlocalhost上で以前と同じポートで実行されていることを再確認します。これでTwilioが皆さんのアプリケーションにアクセスできるようになります。最後にあと一点のみ、Twilioにリクエストの送信先を伝えれば、皆さんのアプリに電話をかける準備が整います。

                    Webhook URLを設定する

                    Twilioが参照する場所を認識できるように、Twilioの電話番号を設定し、新しい着信メッセージの際に、Webhook URLにアクセスするようにします。

                    1. Twilio.comにログインし、[Console's Numbers](Consoleの番号)ページに移動します。
                    2. 音声対応の電話番号をクリックします。
                    3. [Voice & Fax](音声とファックス)セクションを探します。[Accept Incoming](着信受け付け)選択項目が[Voice Calls](音声通話)に設定されていることを確認します。デフォルトの[Configure With](設定方法)選択項目には、[Webhooks][TwiML]など、必要なものを設定します。
                    4. [A Call Comes In](次で通話を受信)セクションでは、[Webhook]を選択し、使用するURLを貼り付け、「/answer」ルートを追加します。

                    Configure your Voice webhook with your ngrok URL

                    変更内容を保存すると、準備完了です。

                    アプリケーションをテストする

                    localhostとngrokサーバーが実行されていれば、新しいFlaskアプリケーションをテストできます。

                    自分の携帯電話から、自分のTwilio電話番号に電話をかけます。ngrokコンソールにHTTPリクエストが表示されます。Flaskアプリはリクエストを処理し、TwiMLで応答します。通話が接続されると、メッセージが聞こえます

                    うまくいきました!完了 - 次のステップ

                    次のステップ

                    Pythonを使用した通話の発着信の基本が理解できました。

                    ここでFlaskアプリは、TwiML動詞<Say>のみを使用し、音声合成機能により発信者に向けてメッセージを読み上げましたが、<Record><Gather><Conference>などのTwiML動詞を使用し、他にもさまざまな機能を実行できます。

                    詳細については、以下のページをご覧ください。

                    コミュニケーションの未来を構築。

                    このページを評価:

                    サポートが必要ですか?

                    コーディングに関するご質問、ご不明点等ございましたら、お問い合わせからご連絡いただくか、TwilioのStack Overflow Collectiveにアクセスいただくか、Stack OverflowサイトでTwilioタグを検索してください。

                          
                          
                          

                          フィードバックいただき、ありがとうございました。

                          フィードバックいただいた理由を選択してください。その他、ご意見をいただければ、今後のドキュメントの改善に役立てさせていただきます。

                          フィードバックを送信中...
                          🎉 フィードバックいただき、ありがとうございました。
                          何らかの問題が発生しました。もう一度試してください。

                          フィードバックいただき、ありがとうございました。

                          Twilioを紹介して$10ゲットしてください。次の3ステップです。

                          ステップ1

                          リンクの取得

                          無料の個人用紹介リンクをこちらから取得してください

                          ステップ2

                          $10受け取るには

                          あなたの顧客がサインアップし、リンクからアップグレードすると、プレゼントします

                          ステップ3

                          $10ゲット

                          1,250通の無料SMS
                          または、1,000分の無料音声通話
                          または、12,000チャット
                          そのほか