Level up your Twilio API skills in TwilioQuest, an educational game for Mac, Windows, and Linux. Download Now

メニュー

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

Programmable Voice クイックスタート for Python

With just a few lines of code, your Python application can make and receive phone calls with Twilio Programmable Voice.

This Python quickstart will teach you how to do this using our REST API, the Twilio Python helper library, and Python’s Flask microframework to ease development.

このクイックスタートでは、下記のことを学んでいきます:

  1. Twilioにサインアップして、音声通話機能を持ったはじめてのTwilio電話番号を入手する
  2. 通話の発着信を行えるように開発環境をセットアップする
  3. MP3ファイルを再生する通話を発信する
  4. 通話を着信させ、テキストtoスピーチを使用して発信者にメッセージを読み上げる応答を返す

Prefer to get started by watching a video? Check out our video on how to place and receive phone calls with Python on Youtube.

Show me how it's done!

すでにTwilioアカウントと音声通話機能を持ったTwilio電話番号をお持ちなら、すでに準備万端です! ログインして次のステップまで読み飛ばしてください。

Pythonで通話を発信できるようになる前に、Twilioアカウントが必要になります。 こちらでサインアップして無料のトライアルアカウントを取得するか、すでにアカウントをお持ちの場合はログインしてください。

The next thing you'll need is a voice-capable Twilio phone number. If you don't currently own a Twilio phone number with voice call functionality, you'll need to purchase one. After navigating to the Buy a Number page, check the "Voice" box and click "Search."

音声通話機能対応の電話番号を検索する

すると、利用可能な電話番号と、その機能の一覧が表示されます。 お好みに合った番号が見つかったら「購入」をクリックすると、それがアカウントに追加されます。

Twilioから音声通話機能付きの電話番号を購入する

これでTwilioアカウントとプログラマブルな電話番号が手に入ったので、通話の発信に必要な基本ツールが揃ったことになります。

TwilioのHTTP APIを使用して通話を発信できますが、Twilioの公式Pythonヘルパーライブラリーを使用してこれをより容易にします。 次はこれをインストールしましょう。

セットアップ方法を教えてください。

すでに他のPythonクイックスタートを終えていて、PythonおよびTwilio Pythonヘルパーライブラリーがインストールされている場合は、このステップを読み飛ばしてすぐに最初の通話を発信できます。

最初の通話を発信するには、PythonおよびTwilio Pythonヘルパーライブラリーがインストールされている必要があります。

Pythonをインストールする

あなたがMacやLinuxマシン上にある場合、あなたはおそらくすでにPythonがインストールされています。 ターミナルを開いて下記のコマンドを入力することでこれを確認できます:

python --version

下記のように表示されます:

$ python --version
Python 3.4  # Python 2.7+ is okay, too

Windowsユーザーは、WindowsへのPythonのインストールについての素晴らしいチュートリアルの手順に沿って進められます。

TwilioのPython SDKではPython 2およびPython 3の双方に対応しています。 このクイックスタートはいずれのバージョンでも進められますが、Python 2のみと互換性のある特定のライブラリーがプロジェクトで必要な場合を除き、このクイックスタートおよびTwilioを使用する今後のプロジェクトにはPython 3のご使用を推奨します。

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

ライブラリーをインストールするもっとも簡単な方法はpipの使用です。 ターミナルで下記のコマンドを実行します:

pip install twilio

If you get the error pip: command not found, you can use easy_install to install the Twilio helper library by running this in your terminal:

easy_install twilio

手動インストールを行う場合は、twilio-pythonのソースコード (ZIPファイル) をダウンロードし、下記を実行してライブラリーをインストールします:

python setup.py install

twilio-pythonライブラリが含まれるフォルダ中で実行します。

さぁ、少しコードを描いてみましょう。

All set! Let's make that phone call.

Pythonで通話を発信する

Now that we have Python and twilio-python installed, we can make an outgoing phone call with a single API request from the Twilio phone number we just purchased. Create a new file called make_call.py and type or paste in this code sample.

        
        
        
        

        このコードは引数として渡された2つの電話番号間の通話を開始します。 「from」番号は皆さんのTwilio番号で、「to」番号は通話の発信先です。

        The URL argument points to some TwiML, which tells Twilio what to do next when our recipient answers their phone. This TwiML tells Twilio to read a message using text to speech and then play an MP3.

        しかしコードが動作するようになる前に、皆さんのTwilioアカウントで機能するように少々編集が必要です。

        プレースホルダーのクレデンシャル値を置き換える

        account_sidおよびauth_tokenに対応するプレースホルダー値を、お使いのTwilioの認証情報に置き換えます。

        https://jp.twilio.com/console にアクセスしてログインします。 このページ上で、今回のようなTwilio Client経由でメッセージを送信する際に常に必要になる一意のアカウントSIDおよび認証トークンが見つかります。 認証トークンは、目玉アイコンをクリックすると表示されます:

        認証トークンを表示する

        make_call.pyを開き、account_sidおよびauth_tokenに対応する値をご使用のアカウントの一意な値に置き換えます。

        ご注意ください: 初めのうちは認証情報をハードコーディングしても構いませんが、本番環境にデプロイするにあたっては、環境変数を使用してこれらが漏洩しないようにしてください。 追加情報については、環境変数の設定方法を参照してください。

        toおよびfrom電話番号を置き換える

        数分前に購入した、音声通話機能対応の電話番号を覚えていますか? どうぞ、既存のfrom_番号をご自身の番号に置き換えてください。 また、E.164形式が使用されていることも確認します。

        [+][country code][phone number including area code]

        to電話番号を、ご自身の携帯電話番号に置き換えます。通話の着信が行える電話番号であればどれでも使用できますが、ご自身の電話機を使用すれば魔法のような出来事を目の当たりにできる点で良いアイディアです。上記同様、この値にはE.164形式を使用してください。

        変更を保存し、ターミナルからこのスクリプトを実行します:

        python make_call.py
        

        これにて以上です! Twilio番号からの通話が着信し、短いメッセージが読み上げられます。😉

        トライアルアカウントをご使用の場合、Twilioで検証済みの電話番号に発信先が制限されます。 電話番号はTwilioコンソール内の検証済み発信者番号にて検証できます。 その他のトライアルアカウントの制限については、無料のTwilioトライアルアカウントの仕組みについてのガイドを参照してください。

        続いて、Twilio電話番号にかかってきた通話に応答する方法を学習しましょう。 まずはFlaskサーバーを用意して起動しておく必要があります。

        やってみましょう!

        Flaskをインストールし開発環境をセットアップする

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

        WindowsでFlaskをセットアップする手順については、こちらのガイドをご参照ください。

        PipとVirtualenvをインストールする

        Flaskをインストールして開発環境をセットアップするには2つのツールが必要になります。 FlaskをインストールするためのPipと、本プロジェクト用の一意なサンドボックスを作成するためのvirtualenvです。 すでにこれらのツールがインストールされている場合は、次のステップまで読み飛ばしてください。

        PipはPython 3.4以降に添付されているため、最新版のPythonを使用している場合は新規で何もインストールする必要はありません。 旧バージョンを使用している場合でも心配ご無用です。 pipはvirtualenvに含まれています。 では、virtualenvをインストールしましょう!

        Python 2.4をお使いの場合は、ターミナルから下記のコマンドを実行します:

        easy_install virtualenv
        

        Python 2.5〜2.7をお使いの場合は、ターミナルから下記のこアンドを実行し、バージョン番号を指定してください:

        easy_install-2.7 virtualenv
        

        対応するバージョンをお持ちの場合、2.7の部分を2.5または2.6に置き換えてください。

        virtualenvをPython 3.4以降にインストールするには:

        # 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が実行中であることを確認できます: 上位フォルダーの名前が確認できルはずです。 下記のように表示されているかと思います:

        (my_quickstart_folder)USER:~ user$
        

        To learn more about virtualenv or create a custom environment path, see this thorough guideについて参照

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

        さて、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開発環境のセットアップの完全なガイドを参照してください。

              準備OK! Twilioはどのように新しいアプリケーションと通信するのでしょうか?

              TwilioからFlaskアプリケーションに通信できるようにする

              これからこの小規模なFlaskアプリケーションを拡張して、着信通話を受けられるようにします。 しかしその前に、Twilioが皆さんのローカル開発環境にアクセスできるようにしておくことが必要です。

              ほとんどのTwilioのサービスはWebhookを使用して皆さんのアプリケーションと通信を行います。 たとえばTwilioに通話が着信すると、通話の処理方法の指示を得ようと、皆さんのアプリケーションのURLにアクセスを行います。

              ご自身の開発環境でFlaskアプリケーションに取り組む際、アプリケーションは同一のコンピューター上の他のプログラム以外からアクセスできず、Twilioと通信することができません。 アプリケーションをインターネット経由でアクセスできるようにして、この問題を解決することが必要です。

              アプリケーションをHerokuやAWSにデプロイするなど、これを行うには多くの方法がありますが、おそらく皆さんはTwilioアプリケーションのテストにはもっと手間のかからない方法をお探しでしょう。 アプリケーションをインターネット上からアクセスできるようにする軽量な方法として、ngrok. .と呼ばれるツールを推奨しています。 起動すると、ngrok.ioドメインに一意のURLが提供され、着信リクエストがローカルの開発環境に転送されます。

              Twilioがローカルサーバーにアクセスできるようにするために、ngrokがどのように役に立つのか

              まだNgrokを使用していない場合はダウンロードページにアクセスし、お使いのオペレーティングシステム用の適切なバイナリーをダウンロードしてください。 ダウンロードが済んだらパッケージを展開します。

              MacまたはLinuxをお使いの場合は、以上で作業はおしまいです。 Windowsをお使いの場合は、Windows上でngrokをインストールおよび構成するガイドに従ってください。 いくつかの素晴らしいヒントや裏技を含むngrokの追加情報については、こちらの詳しいブログ投稿(英語)をご参照ください。

              ダウンロードが済んだら、先の手順で作成したHello Worldアプリケーションを起動します。

              python answer_phone.py
              

              ローカルアプリケーション ローカルで実行してください。 そうしなければngrokが正常に動作しません。

              続いて新規のターミナルタブまたはウィンドウを開いて、下記のコマンドでngrokを実行します:

              ./ngrok http 5000
              

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

              下記のような出力がご覧いただけるでしょう。

              ngrokサーバーのターミナル出力

              この出力から公開URLをコピーしブラウザーにペーストします。 Flaskアプリケーションの「Hello World!」メッセージが表示されます。

              サーバーは外部からアクセスできるようになりました。 通話の着信方法を教えてください!

              Twilioで着信通話に応答する

              Twilio番号に通話の着信があると、TwilioはHTTPリクエストを皆さんのサーバーに送信して次に行うべきことについての指示を問い合わせます。 皆さんのサーバーでリクエストが受信されたら、Twilioに通話への応答方法を指示します。

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

                    
                    
                    
                    
                    Twilioからの着信リクエストに、通話の処理方法についての指示を伴って応答する

                    着信通話に短いメッセージで応答する

                    Twilioからの着信リクエストに、通話の処理方法についての指示を伴って応答する

                    このファイルを保存し、アプリケーションを下記のコマンドで再起動します

                    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です。

                    先と同じポートのlocalhostでngrokがまだ実行されていることを再確認します。 これで、Twilioからアプリケーションを見つけられるようになりました。 アプリケーションに電話をかけられるようになる前に、最後にもうひとつだけ必要なことがあります: Twilioにリクエストの送信さきを指示することです。

                    WebhookのURLを設定する

                    Twilioにどこを参照して良いか知らせるため、メッセージの受信時にTwilio電話番号にWebhook URLを呼び出すよう構成することが必要です。

                    1. jp.twilio.comにログインし、Console上の電話番号ページに移動します
                    2. 音声機能対応の電話番号をクリックします。
                    3. 「音声およびFax」セクションを見つけます。 「受け付ける着信 (ACCEPT INCOMING) 」の選択肢で「音声通話 (Voice Calls) 」が設定されていることを確認します。 既定の「構成内容 (CONFIGURE WITH) 」セクションは「Webhook / TwiML...」に設定します。
                    4. 「通話着信時 (A CALL COMES IN) 」セクションで「Webhook」を選択し、使用したいURLをペーストし、末尾に「/answer」を付け加えます:

                    ngrokのURLでVoice Webhookを構成する

                    変更点を保存すれば、準備万端です!

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

                    さぁ、お楽しみタイムです。 新しいFlaskアプリケーションをテストしましょう! localhostとNgrokサーバーが起動し実行されている必要があります。

                    携帯電話からTwilio電話番号に通話を発信しましょう。 ngrokコンソールでHTTPリクエストが確認できるはずです。 ngrokコンソールでHTTPリクエストが確認できるはずです。 皆さんのFlaskアプリケーションは着信リクエストを処理し、TwiMLでレスポンスを返します。 その後通話が接続されると、メッセージが聞こえてきます。

                    It worked! All done - what's next?

                    関連トピック

                    Now you know the basics of making and responding to phone calls with Python.

                    Our Flask app here only used the <Say> TwiML verb to read a message to the caller using text to speech, but you can do much more with different TwiML verbs like <Record>, <Gather>, and <Conference>.

                    以下のページをご覧いただき、さらに理解を深めてください:

                    皆さまが何を開発されるのか、目にするのが待ちきれません!

                    Rate this page:

                    ヘルプが必要ですか?

                    誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。