https://d226lax1qjow5r.cloudfront.net/blog/blogposts/build-a-conference-call-with-the-nexmo-voice-api-and-ruby-on-rails-dr/ruby-conference-call-1.png

Nexmo Voice APIとRuby on Railsで電話会議を構築する

最終更新日 May 14, 2021

所要時間:3 分

このチュートリアルでは、Nexmo Voice APIを利用したRuby on Railsの電話会議アプリケーションを作成します。Nexmoのドキュメントでは、電話会議は次のようにも呼ばれています。 会話とも呼ばれ、ここではこれらの用語を同じ意味で使用します。

このサンプルの完全なコードは GitHub.

前提条件

  • Ruby on Rails

  • ngrokを使用して、Rails アプリケーションを外部に公開します。

Ruby on Railsで電話会議を作成する

Nexmo Voice APIを使って電話会議(「Conversation」)を行うために、以下の作業を行います:

  1. Railsアプリケーションを作成する

  2. アプリケーションを外部に公開し、Nexmoが通信できるようにする。

  3. Nexmoアカウントの設定、Nexmo電話番号の購入、Nexmo Voiceアプリケーションの作成。

  4. Railsコントローラーとルートを作成する

Railsアプリケーションの作成

コマンドラインから以下を実行する:

rails new rails-conference-call --database=postgresql

上記のコマンドは、PostgreSQLをデフォルトのデータベースとする新しいRailsアプリケーションを作成します。

次に、gemの依存関係をアプリケーションにインストールしましょう。ターミナルから bundle installを実行します。ターミナルから rake db:migrateを実行してデータベースをセットアップすることもできます。このチュートリアルでは、データを永続化するためにデータベースを使用しません。

この時点で、Nexmoがアプリケーションと通信するために使用する、外部からアクセス可能なURLを取得するために、ngrokをセットアップする。

アプリケーションの公開

ローカルの開発サーバーを外部からアクセスできるようにする方法はいくつかあるが、最も簡単な方法のひとつがngrokを使う方法だ。以下の記事を読んでほしい。 この記事を参照してほしい。しかし、今回の目的では、ngrokを起動して、ngrokが提供するURLをコピーするだけでいい。

ngrokを起動するには、新しいターミナル・ウィンドウを開き、コマンドラインから以下を実行する:

ngrok http 3000

ターミナル・ウィンドウにngrokロギング・インターフェースが表示されます。インターフェイスの最上部近くには Forwardingで始まる行があり、2つのURLが含まれています。最初のURLは外部からアクセス可能なngrokのURLで、末尾に ngrok.ioが続きます。 http://localhost:3000これはあなたのローカル開発サーバーです。これで、あなたやNexmoが ngrok.ioURLはあなたのローカルサーバーに転送されます。

必ず ngrok.ioURLを安全な場所にコピーしてください。このURLは、次のステップでNexmoアカウント、電話番号、Voiceアプリケーションを設定する際に使用します。

電話番号とVoice ApplicationsでNexmoアカウントを作成する

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.

音声アプリケーションを動作させるためには、Nexmoアカウント、Nexmoプロビジョニングされた電話番号、Nexmoアプリケーション、そして最後にアプリケーションと電話番号をリンクさせる必要があります。

左側のメニューから Voice menuの項目をクリックします。以下の4つのオプションが表示されます。 APPLICATIONS:

Voice menu options

をクリックしてください。 Create an applicationオプションをクリックすると、新しいNexmoアプリケーションを設定するページが表示されます。

以下の項目をフォームに記入してください:

  • Application nameテキストフィールド入力 conference-call-demo

  • Event URLテキストフィールドにngrokのURLを入力してください: https://[ngrok url here]/event

  • Answer URLテキスト・フィールドにもう一度ngrokのURLを入力してください: https://[ngrok url here]/webhooks/answer

完了したら、先に進んで青い Create Applicationボタンをクリックしてください。

これでNexmo Voiceアプリケーションが作成できました。次のステップは、Nexmoの電話番号を購入し、このアプリケーションにリンクさせることです。

Nexmoダッシュボードから左メニューの Numbersメニュー項目をクリックします。3つのオプションが表示されます:

Number menu options

オプションをクリックすると Buy numbersをクリックすると、国、機能、タイプ、4桁の番号を選択するページに移動します。

buy numbers

現在お住まいの国を選択し、市内通話になるようにします。 Voiceを選び、タイプは携帯電話か固定電話のいずれかを選ぶ。テキストフィールドには何も入力する必要はありません。 Numberテキストフィールドには何も入力する必要はありません。をクリックすると Searchをクリックすると、利用可能な電話番号のリストが表示されます。

オレンジ色の Buyボタンをクリックし、確認画面でもう一度オレンジ色の Buyボタンをクリックする。

一度番号を取得すれば、あとはその番号をあなたの conference-call-demoVoiceアプリケーションにリンクさせることができます。電話番号の横にある歯車のアイコンをクリックすると、以下のメニューが表示されます:

conference call

を選択します。 conference-call-demoドロップダウンリストからアプリケーションを選択し、青いボタンをクリックします。 Okボタンをクリックします。これでNexmoの電話番号がVoiceアプリケーションにリンクされ、ボイスプロキシ経由で着信電話を受けたり転送したりできるようになります。

アプリケーションを実行する前の最後のステップは、Railsコントローラのアクションとルーティングを定義することです。

Railsのコントローラとルートを作成する

という名前のControllerファイルを作成します。 conference_controller.rbという名前の /app/controllers/.Controllerの中にControllerのアクションを1つ定義します。アクションには Nexmo Call Control Object (NCCO)が含まれる。

# conference_controller.rb

class ConferenceController < ApplicationController
    skip_before_action :verify_authenticity_token
    
    def answer
        render json:
            [
                {
                    :action => 'talk',
                    :text => 'Welcome to the Nexmo powered conference call'
                },
                {
                    :action => 'conversation',
                    :name => 'nexmo-conversation'
                }
            ].to_json
    end

    def event
    end
end

上記のメソッドで定義されたNCCO命令には #answerメソッドには2つのアクションがある:

  1. 呼び出し元を talkアクション

  2. 電話会議とも呼ばれる。 conversation.

の名前はこの時点で定義される。 conversationの名前はこの時点で定義される。これはどのような名前でも呼ぶことができ、最初に定義されると、それ以降の呼び出しはすべてこの名前に振り向けられる。さらに、他のすべての NCCO conversationオプションオプションを参照することで、この電話会議に定義できる。 conversation名前を参照することで、この電話会議に他のすべてのNCCOオプショ ンを定義できる。

最後に、ルートを routes.rbでルートを定義する必要があります。 GETリクエストの送信先と POSTNexmo APIから受け取るステータスの更新を行う場所です。先に進んで /config/routes.rbを開き、以下を追加します:

# routes.rb

get '/webhooks/answer', to: 'conference#answer'
post '/event', to: 'conference#event'

のパスが GETPOSTリクエストのパスが、Nexmo DashboardでNexmo Voiceアプリケーションをセットアップしたときに指定したURLと同じであることに気づきます。

アプリケーションの実行準備が整いました!おめでとう!

アプリケーションの実行

アプリケーションを実行するには、コマンドラインから以下を実行すればよい:

rails s

これでRailsサーバーが起動する。別のターミナルウィンドウで、ngrokも起動していることを確認してください。Nexmoの電話番号に電話をかけると、アプリケーションから「Nexmoの電話会議へようこそ」というメッセージが聞こえます。電話番号を伝えることで、他の人を電話会議に招待することができます。

さらに読む

もっと知りたい、もっと読みたいという方は、以下を参考にしてほしい:

シェア:

https://a.storyblok.com/f/270183/384x384/e5480d2945/ben-greenberg.png
Ben Greenbergヴォネージの卒業生

ベンはセカンドキャリアの開発者で、以前は成人教育、コミュニティ組織化、非営利団体運営の分野で10年を過ごした。彼はVonageの開発者支援者として働いていた。コミュニティ開発とテクノロジーの交差点について定期的に執筆している。南カリフォルニア出身で、長年ニューヨークに住んでいたが、現在はイスラエルのテルアビブ近郊に在住。