RubyおよびRailsを使用した電話会議と一斉配信
この Ruby on Rails サンプルアプリケーションは、Twilio によって構築され、破滅的な状況で素早い対応を必要とする企業により世界中で使われている Rapid Response Kit が基になっています。
作業員がこのアプリのツールを使って、大勢のボランティアグループと直ちにコミュニケーションできるようにします。全関係者が一堂に会して話し合う必要が生じた場合、オーガナイザーが速やかにカンファレンスラインを開始できます。それ以外の状況では、ボランティアの電話番号のリストに音声メッセージを一斉に読み上げることができます。
専門家サービス企業のAlphasightsがTwilioを使用して、いかにして電話会議のコストを80%削減したかチェックしましょう。
このサンプルアプリを自分で実行するには、コードをダウンロードし、GitHub の指示に従ってください。また、このチュートリアルでは Twilio の部分だけしか扱わないので、このアプリのビューをクリックして参照してもかまいません。
カンファレンス番号を作成する
カンファレンスラインを呼び出す前に、着信を受けたときに HTTP リクエストをウェブアプリケーションに送信するように、いずれかの Twilio 番号を設定しておく必要があります。
いずれかの番号をクリックして、アプリをポイントするように Voice URL を設定します。コードでは、経路は /Conference/Join
になります。
サンプルのカンファレンス通話を作成する
これで、Twilio 番号は、音声通話の着信があると、このコントローラーメソッドに HTTP リクエストを送信するように設定されました。アプリは TwiML で応答し、その通話をどのように処理するか Twilio に指示します。
We use the Twilio Ruby library to generate some TwiML that tells Twilio to Dial
into a Conference
that we're naming RapidResponseRoom
. This means that anyone who calls your Twilio number will automatically join this conference.
次に、これをモデレーターとリスナーから構成されるモデレーター付きのカンファレンスラインにします。
モデレーター付きのカンファレンスを作成する
このシナリオでは、発信者をカンファレンスに接続する前に、発信者の役割を尋ねます。役割は以下のとおりです。
- モデレーター:カンファレンスを開始および終了できます
- スピーカー:カンファレンス通話で話ができます
- リスナー:黙って、通話を聞くことしかできません
コントローラーでは簡単なメッセージを読み上げ(Say
)て、発信者に役割を選択するよう尋ねます。
そうすることで発信者に選択可能な役割がいくつか読み上げられ、彼らがそれを選択します。 そのためには、発信者が指定した役割を判断できるよう、電話で押されたボタンの内容を収集(Gather
)するようTwilioに指示します。 次に、その方法について見ておきましょう。
モデレーター付きのカンファレンスに接続する
前のステップの <Gather>
動詞には、値として絶対的な URL または相対的な URL を取る action
パラメーターが含まれていました(このケースでは、Conference/Connect
経路)。
When the caller finishes entering digits Twilio makes a GET or POST request to this URL including a Digits
parameter with the number our caller chose.
このパラメーターを使用して、Dial
およびConference
TwiML要素で使用するいくつかの変数、isMuted
およびcanControlConferenceOnEnter
を設定します。
That's it for connecting callers to our conference room. Let's explore next the other feature of this app: broadcasting a voice message to a list of phone numbers.
音声ブロードキャスト
オーガナイザーはカンファレンス通話をホストするだけでなく、アプリケーションを使って、電話番号のリストに音声メッセージを一斉に送信できます。このためには、ドロップダウンから録音を選択し、電話番号のリストを入力して、「Submit」をクリックします。
この機能を利用するには、Twilio の REST API を使って、アカウントに関連付けられているすべての録音を取得します。オーガナイザーが新しいメッセージを録音する場合は、その電話番号を呼び出し、レスポンスを録音します。
Now that we know what this feature is all about, let's take a dig into the code.
録音を取得する
このルートはTwilioアカウントと関連づけられた録音(recordings
)をすべて取得します。 TwilioのAPIを使用して、日付または通話SIDごとにこれらの結果をフィルタリングできますが、この例ではすべての録音を単純に取得することにします。
Twilio の便利な API を使うには、まず Twilio クライアントを作成する必要があります。これは、クレデンシャルを受け渡せば簡単です。@client
は少ししか使わないので、共有フィルターに設定し、アクションで必要となると呼び出されます。
録音をすべて取得したら、録音オブジェクトの JSON レスポンスをレンダリングする必要があります。この経路は、ページがロードされると、Javascript で呼び出されます。
保存された全録音を取得できますが、ではどうやって新規メッセージを録音するのでしょうか? それについては次で見てみましょう。
Record a new Message
新規録音の作成が必要になったら、主催者に通話を発信してそれを録音します。 TwilioはRecord
動詞でこれを簡単にします。
Here we Say
something to the caller and then Record
her message. There are many more options we can pass to Record, but here we simply tell it to stop recording when * is pressed.
全録音済メッセージの一覧方法と、新規に録音を行う方法を見てきました。 最後に残っていることは、発信者にこれらの録音済メッセージのうちのどれかを一斉配信することです。 次はこれについて見ていきましょう。
録音されたメッセージを一斉送信する
このコントローラーは、オーガナイザーが提供した電話番号から始め、音声ブロードキャストのウェブフォームを処理します。カンマ区切りのため、Ruby の CSV クラスを使って、解析できます。
次は、Twilio の REST API を使って、各番号に電話をかけてみます。
When Twilio connects this call it will make a request to the Url
parameter to get further instructions. We include a recordingUrl
parameter in that URL so that our Play
action method will know which recording to use.
これにより、Broadcast/Play
ルートについての作業が簡単になります - 録音を再生(Play
)するだけです。
一丁上がり! これで高速応答キットの2つの主要機能を実装できました。 将来、他の機能にいくつか取り組んで、完全なキットを構築するかもしれませんね!
関連トピック
Twilio を使う Ruby 開発者であれば、他のチュートリアルもお楽しみください。
音声通話または SMS テキストメッセージを介して調査を実施し、ユーザーから構造化データを迅速に収集します。Rails で独自の調査を作成する方法を学びます。
Reese's Pieces が点在した、フル機能の自動電話ツリーを作成します。
これは役に立ちましたか?
このチュートリアルをお読みいただき、ありがとうございます。ご意見やご感想などございましたら、ぜひお聞かせください。 ご意見やご感想などございましたら、ぜひお聞かせください。 @twilioにツイートして、ご意見をお寄せください!
ヘルプが必要ですか?
誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。