https://d226lax1qjow5r.cloudfront.net/blog/blogposts/conference-call-node-red-dr/conference-call-node-red-featured.png

Node-REDで電話会議を構築する

最終更新日 May 24, 2021

所要時間:6 分

注:この記事で説明されているツールや方法の中には、サポートが終了しているものや最新のものではないものがあります。最新の内容やサポートについては、最新の投稿をご確認いただくか、Vonage Community Slackの VonageコミュニティSlack

これまでの これまでのチュートリアルでを使って電話をかけたり、受けたりしました。 Voice APIを使った電話の発信や着信、そしてできればこれらの体験のカスタマイズなど、Nexmo APIの世界に足を踏み入れる機会を得たことでしょう。

今日のチュートリアルでは、さらに一歩進んで、Voiceベースの会議サービスを構築してみましょう。

ユーザーは事前に設定されたバーチャル番号に電話をかけ、ダイヤルパッドを使って会議IDを入力すると、同じIDを入力した他の全員と同じ電話会議に参加する。

ステップ

  1. 前提条件

  2. ローカルサーバーをインターネットに公開する

  3. インバウンドコール用Webhookエンドポイントの定義

  4. 入力イベントのWebhookエンドポイントを定義する

  5. Nexmo Voiceアプリケーションの作成

  6. 電話番号の設定

  7. コール・イベント

  8. お試しあれ!

前提条件

始める前に必要なものがいくつかある:

  • Node.jsそして Node-REDマシンにインストールされている

  • サーバーをインターネットに公開する方法。これは、Node-REDのホスティングバージョンを実行しているか、ローカルで開発している場合は、次のようなトンネリングサービスを使用していることを意味します。 ngrok-これでスピードアップ Node-RED で Ngrok を始めるチュートリアル

    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.

資格の取得

Voice APIと対話するには、いくつかの点に注意する必要があります。Nexmoアカウントを作成したら、次のページにアクセスする。 ダッシュボードにアクセスし、APIキーとシークレットを見つけてください。

次に必要なのは Voice対応バーチャル番号が必要です。Numbers(ナンバーズ)>」に進みます。 Numbersを購入するをクリックしてください。

Buy number Nexmo dashboardBuy number Nexmo dashboard

Node-REDエディタのセットアップ

まず インストールする必要があります。ランタイムとエディターをインストールする必要がある。これは、ローカルマシン、シングルボードコンピュータ(Raspberry Piなど)、またはいくつかのクラウドホストオプションで行うことができます。この例ではローカルマシンを使用するので、Node-REDをグローバルにインストールしたら、ターミナルに以下のコマンドを入力して開始してください。

node-red

Node-REDエディタにアクセスするには、ブラウザの http://localhost:1880.

エディタを開いたら、Nexmoノードをインストールする必要があります。インストールは パレットの管理メニューから node-red-contrib-nexmoパッケージを検索し、インストールをクリックします。

これでNexmoのすべてのノードが、画面の左側のノードパレットに、他のデフォルトノードに混じって表示されるはずです。

ローカルサーバーをインターネットに公開する

Nexmo APIはWebhookに対して呼び出しを行うためにアクセスする必要があります。 公衆インターネット経由でアクセスできるようにしましょう。.Node-REDをローカルマシンではなく、パブリックウェブサーバー上で動作させている場合は、これで準備完了です。 Nexmoボイスアプリケーションの作成ステップに進みます。

そうでなければ、次のようなトンネリングサービスを使うのが便利だ。 ngrok.

まず、ngrokノードをインストールする必要がある。そのためには 管理パレットを開き、パッケージを検索して node-red-contrib-ngrokパッケージを検索し、インストールをクリックします。エディタを再起動すると ngrokノードがノードパレットに表示されます。

ngrok manage palettengrok manage palette

この ngrokノードは文字列 またはまたは offを入力として受け取り、トンネルの開始/停止を行い、ngrok ホストアドレスを msg.payload.

これを設定する最も簡単な方法は、2つのノードを injectノードを ngrokノードの入力として2つのノードを配線することだ。 オフ.使いやすくするために、ノード・プロパティで Nameノード・プロパティで、これらのノードがどのような機能を持つかを明確にすることができます。次に、デバッグ・サイドバーにホスト・アドレスを表示するために debugノードを ngrok.

を押す前の最後のステップとして デプロイを押す前の最後のステップとして ngrokノードのプロパティを開き、ポート番号を指定します。Node-REDの場合、デフォルト値は 1880.デフォルトの ngrok Region は US ですが、Europe や Asia に設定することもできます。また、ngrokアカウントのオートトークンがあれば、それを追加することもできます。なくても心配しないで、今はこのステップを飛ばしてください。ノードが完全に設定されていないと警告が出ますが、これは問題ではありません。

ngrok node propertiesngrok node properties

これで準備完了だ!一度 デプロイをクリックして をクリックします。 injectノードのボタンをクリックしたら、デバッグエリアに表示されたURL(今後の参考のためにYOUR_URL)に移動して、公開アドレスにあるNode-REDエディタを探します。

ngrok node-redngrok node-red

インバウンドコール用Webhookエンドポイントの定義

Nexmoコールは Nexmoコール・コントロール・オブジェクトNCCOとも呼ばれる。NCCOは、コールが処理されるときに実行されるアクションのリストを定義します。Node-REDエディタのNexmoパレットで対応するノードを見つけるか、NCCOリファレンスを参照してください。 NCCOリファレンスを参照してください。

インバウンドコールに対応する場合、NCCOは以下のURLでホストされている必要があります。 アンサーURL.この場合、会議IDを尋ねるために talkアクションで会議IDを尋ね、次に inputアクションを使います。

キャンバスに voice webhook入力ノードをキャンバスに追加し、続いて talkノード inputノードと return NCCO出力ノードを追加します。

次に voice webhookノードで GETMethodを選択し /answerを入力します。

ノードのプロパティで talkノードのプロパティで Text{}フィールドに、通話に応答したときに読み上げたいメッセージを設定します。例:「会議IDを入力してください。を選択することもできます。 Voice Nameを選択することもできます。 音声合成ガイドをご覧ください。

最後に inputノードエディタを開き YOUR_URL/inputURL {}POSTMethod.

このとき、さらに経験をカスタマイズするために、他のパラメーターをいくつか設定することもできる:

Name Description
Submit On Hash: Set to true so the caller's activity is sent to your webhook endpoint at YOUR_URL/input after they press #. If # is not pressed the result is submitted after Time Out seconds. The default value is false.
Time Out: The result of the caller's activity is sent to the YOUR_URL/input webhook endpoint Time Out seconds after the last action. The default value is 3. Max is 10.
Max Digits: The number of digits the user can press. The maximum value is 20, the default is 4 digits.

これらの詳細については NCCOリファレンス.

conference answer urlconference answer url

入力イベントのWebhookエンドポイントを定義する

また、ユーザーからのDTMF入力をキャプチャし、ユーザーが送信したコードに基づいて、その入力を 会話.

別の voice webhook入力ノードをキャンバスに追加します。 talkノード conversationノードと return NCCO出力ノードを追加します。

voice webhook

ノードのプロパティで voice webhookノードのプロパティで POSTを選択し /inputを入力します。

もし debugノードを接続した場合、フローを終了して実行した後、パラメータが次のように返される。 /inputURLに返されます:

Name Description
uuid The unique ID of the Call leg for the user initiating the input.
conversation_uuid The unique ID for this conversation.
timed_out Returns true if this input timed out based on the value of Time Out.
dtmf The numbers input by your caller, in order.

このユースケースでは、呼び出し元から提供されたミーティングIDである dtmf値を取得しようとしている。

完了のデバッグ・サイドバーをよく見てみると、完了のサイドバーの dtmfプロパティの callオブジェクトの中にネストされた msgオブジェクトの中にネストされたオブジェクトのプロパティにあることがわかります。 {{msg.call.dtmf}}として参照できます。

dtmf debugdtmf debug

talk

次に talkノードエディタを開き Text{}フィールドに、発信者がミーティングIDを入力したときに読み上げたいメッセージを設定します。

をご覧ください。 {}ラベルの横にある Textラベルの横にある記号に注目してください。 テンプレートで動的に設定できることを示しています。 Joining meeting {{msg.call.dtmf}}.

を選択することで、さらにパーソナライズすることができます。 Voice Nameまたは SSMLタグ

conversation

私たちは conversationアクションを使って標準的なカンファレンスを作成します。 Name {}.同じ名前の会話アクションを使用すると、同じ永続化された会話を再利用するので、会議IDの後に名前を付けると便利です。 {{msg.call.dtmf}}会話に割り当てられたバーチャル番号に最初に電話をかけた人が、その会話を作成します。

conference conversation nodeconference conversation node

将来的には、さらに一歩進んで、音声を選択的にコントロールできるモデレートされたカンバセーションを作成することもできます。以下の NCCOリファレンスを参照してください。

このパスが完了したら、以下のようになるはずだ:

conference input urlconference input url

Nexmo Voiceアプリケーションの作成

Voice APIを含むNexmoのAPIの一部は、Nexmoのエンドポイントに接続するために必要なセキュリティ情報と設定情報を保持するために、Nexmo Applicationsを使用しています。

Nexmo Node-REDパレットでは、いくつかのノードがこれらのアプリケーションを作成する機能を持っています: getrecording, earmuff, mute, hangup, transfer, createcall, playaudio, playttsそして playdtmf.

これらのノードをワークスペースにドラッグし、ダブルクリックしてノードのプロパティを開きます。

の横にある Nexmo Credentialsの横にあるドロップダウンメニューから "Add new nexmovoiceapp... "を選択し、編集ボタンをクリックします。以下の詳細を入力し Create New Application.

KEY DESCRIPTION
Name Choose a name for your Voice Application, for example Conference Call.
API Key Your Nexmo API key, shown in your account overview.
API Secret Your Nexmo API secret, shown in your account overview.
Answer URL YOUR_URL/answer, you'll be hosting a Nexmo Call Control Object (NCCO) here. - more about this later on.
Event URL YOUR_URL/event, you'll need to reference this when setting up the event handler.

Node-REDはあなたのアカウントに新しいNexmo Applicationsを作成し、App IDと秘密鍵のフィールドに入力して保存します。このステップの後、使用したNexmoノードを削除してください。 nexmovoiceappコンフィグノードが作成され、このフローに必要なすべてのNexmo認証情報が含まれているからです。

conference create voice appconference create voice app

電話番号の設定

次に、バーチャル・ナンバーをこのアプリケーションにリンクさせる必要がある。

Nexmoダッシュボードで、作成したVoice Applicationsを検索します。 ボイス> アプリケーション.

このアプリケーションの名前をクリックし、その下にある Numbersタブをクリックし リンクボタンをクリックしてください。

使用したい電話番号がすでに他のアプリにリンクされている場合は、以下をクリックする。 番号の管理をクリックし、着信をあなたのアプリに転送するように設定します。

conference link numberconference link number

ボーナスのヒントノードを使います。 commentノードを使い、アプリケーションにリンクされているNexmo番号をメモしておく。

コール・イベント

通話の進行状況に関するイベントを受信したい場合は、イベントウェブフックを設定することもできます。

入力ノードを http入力ノードを http responseノードに接続する。 debugノードに接続し、デバッグ・エリアでコール・イベントを表示できるようにします。

入力ノードで http入力ノードで POSTMethodを選択し URLフィールドを /event.

ノードは http responseノードには 200として設定されていなければならない。 Status codeと設定されているはずだが、これはデフォルト値なので気にしなくてよい。

conference final flowconference final flow

お試しあれ!

これで一段落!友達を誘ってぜひ試してみてください!デバッグエリアを覗いて、あなたのコールイベントをフォローするのをお忘れなく。お楽しみください!

次はどこだ?

リソース

別のチュートリアルを試してみてください:

シェア:

https://a.storyblok.com/f/270183/372x373/36054b72d0/julia-biro.png
Julia Biroデベロッパー・アドボケイト

Juliaは、チュートリアル、ガイド、実用的なリソースを作成することで、仲間の開発者に力を与えることに尽力しています。アウトリーチと教育のバックグラウンドを持つ彼女は、テクノロジーをより身近なものにし、開発者の経験全体を向上させることを目指しています。地域のコミュニティイベントでもよく見かける。