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

Menu

Expand
このページを評価:

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

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

このRubyクイックスタートでは、REST APITwilio Rubyヘルパーライブラリー、RubyのSinatraフレームワークを使用し、簡単に開発する方法を説明します。

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

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


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

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

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

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

Rubyから電話をかけるには、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の公式Rubyヘルパーライブラリーを使用することにより、作業をかなりシンプルにできます。インストール方法を説明します。

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

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

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

Twilioを使用した最初の通話には、RubyとTwilio Rubyヘルパーライブラリーがインストールされている必要があります。

Rubyをインストールする

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

ruby --version

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

$ ruby --version
ruby 2.7.2

Windowsユーザーは、RubyInstallerを使用し、Rubyをインストールできます。

TwilioのRuby SDKは、Rubyバージョン2.4から3.0までをサポートしています。(Rubyの以前のバージョンをご使用の場合には、rbenvRVM、またはHomebrewを使用し、サポート対象のバージョンにアップグレードできます。)

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

twilio-rubyは、RubyGemsからインストールするのが最も簡単な方法です。

gem install twilio-ruby


手動のインストール
または、twilio-rubyのソースコードを複製し、そこからライブラリーをインストールすることもできます。

「Permission Denied」(権限が拒否されました)
コマンドラインの中央にPermission Denied(権限が拒否されました)という長いエラーメッセージが表示された場合は、上記のコマンドにsudoを使用し、sudo gem install twilio-rubyを実行します。

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

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

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

        
        
        

        Make a phone call using Twilio

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

        URL引数はTwiML(Twilio Markup Language)を提示します。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.rbを開き、account_sidauth_tokenの値をご自身固有の値に置き換えます。

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

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

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

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

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

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

        ruby make_call.rb


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

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

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

        では始めましょう。

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

        SMSメッセージを受信し返信するには、リクエストを受信可能な軽量のWebアプリケーションを作成する必要があります。このクイックスタートではSinatraを使用しますが、Railsの使用をご希望の場合には、こちらのブログ記事の手順をご覧ください。

        まず、以下を含むGemfileが必要です。

        # Gemfile
        source 'https://rubygems.org'

        gem 'sinatra'
        gem 'twilio-ruby'

        RubyプロジェクトはBundlerを使用し、依存関係を管理します。SinatraとTwilio SDKを開発環境に取り込むコマンドは、bundle installです(お使いのマシンにBundlerがインストールされていない場合は、まずgem install bundlerを実行する必要があります)。

        $ bundle install
        ...
        gemライブラリーの場所を確認するには、bundle show [gemname]コマンドを実行します。

        シンプルなSinatraアプリケーションを作成する

        シンプルなSinatraアプリケーションを作成することにより、開発環境が正しく設定されているかをテストできます。Sinatraのドキュメントからサンプルをコピーし、「quickstart.rb」という新しいファイルに挿入します。

        require 'sinatra'
        require 'twilio-ruby'

        get '/' do
        content_type 'text/xml'

        Twilio::TwiML::VoiceResponse.new do | response |
        response.say(message: "Hello World")
        end.to_s
        end

        次に、ruby quickstart.rbコマンドを使用し、新しいSinatraアプリケーションを実行します。ブラウザーでhttp://localhost:4567を開くと、<?xml version="1.0" encoding="UTF-8"?><Response><Say>Hello World</Say></Response>応答が表示されるはずです。

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

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

        簡易的なSinatraアプリケーションを構築し、通話を受け付けます。その前に、Twilioがアプリケーションにアクセスできるようにする必要があります。

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

        自分の開発環境にあるSinatraアプリケーションの作業をしている場合、そのコンピューター上の他のプログラムからしかアプリにアクセスできません。つまり、Twilioからはアクセスできません。インターネットでアプリケーションにアクセスできるようにし、この問題を解決する必要があります。

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

        以下のように機能します。

        How ngrok helps Twilio reach your local server

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

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

        ngrokを設定した後に、前に作成したSinatraアプリケーションを起動します。

        ruby quickstart.rb

        ngrokが機能するには、アプリケーションがローカルで実行されている必要があります

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

        ./ngrok http 4567

        4567は、Sinatraアプリケーションのデフォルトポートです。ローカルサーバーが別のポートで実行されている場合には、4567を正しいポート番号に置き換えてください。

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

        Ngrok server terminal output

        この出力から公開URLをコピーし、それをブラウザーに貼り付けます。すべてが正しく機能している場合には、Sinatraアプリケーションの<?xml version="1.0" encoding="UTF-8"?><Response><Say>Hello World</Say></Response> メッセージが表示されるはずです。

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

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

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

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

              
              
              
              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

              電話の処理方法に関する指示を使用し、Twilioから着信に応答する

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

              ruby quickstart.rb

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

              <?xml version="1.0" encoding="UTF-8"?>
              <Response>
              <Say">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の[Numbers](番号)ページに移動します。
              2. 音声対応の電話番号をクリックします。
              3. [Voice & Fax](音声とファックス)セクションを探します。デフォルトの[Configure With](設定方法)選択項目には、[Webhooks]、[TwiML Bins]など、必要なものを設定します。
              4. [A CALL COMES IN](次で通話を受信)セクションでは、[Webhook]を選択し、使用するURLを貼り付けます(「/answer」エンドポイントを忘れないでください)。

              Configure webhook on phone number for voice

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

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

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

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

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

              次のステップ

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

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

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


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

              このページを評価:

              サポートが必要ですか?

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

                    
                    
                    

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

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

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

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

                    thanks-feedback-gif