
シェア:
Juliaは、チュートリアル、ガイド、実用的なリソースを作成することで、仲間の開発者に力を与えることに尽力しています。アウトリーチと教育のバックグラウンドを持つ彼女は、テクノロジーをより身近なものにし、開発者の経験全体を向上させることを目指しています。地域のコミュニティイベントでもよく見かける。
Node-REDで音声プロキシ経由で電話を転送する
所要時間:3 分
注:この記事で説明されているツールや方法の中には、サポートが終了しているものや最新のものではないものもあります。最新の内容やサポートについては 最新記事または ドキュメンテーション
このチュートリアルでは、Nexmo Voice APIを使って音声プロキシ経由で電話を転送し、プライベート通話をする方法を説明します。
ライドシェアのドライバーやAirbnbのホスト、宅配業者の番号を知らなくても連絡できる方法を不思議に思ったことがある人、あるいは単に個人的な電話をかけることに興味がある人は、この方法に従ってください!
依存関係
前提条件
始める前に必要なものがいくつかある:
サーバーをインターネットに公開する方法。これは、Node-REDのホスティングバージョンを実行しているか、以下のようなトンネリングサービスを使用していることを意味します。 ngrok- これを使いましょう Node-RED で Ngrok を始めるチュートリアル
資格の取得
Node-REDでNexmoノードを使用するには、認証情報を提供する必要があります。あなたの ダッシュボードにアクセスし、APIキーとシークレットを見つけてメモしてください。
次に必要なのは Voice対応バーチャル番号が必要です。Numbers(ナンバーズ)>」に進みます。 Numbersを購入するをクリックしてください。
Buy Number Nexmo Dashboard
Node-REDエディタのセットアップ
Node-REDエディタにアクセスするには、ブラウザを次の場所に移動します。 http://localhost:1880.
エディタを開いたら、Nexmoノードをインストールする必要があります。インストールは パレットの管理メニューから node-red-contrib-nexmoパッケージを検索し、インストールをクリックします。
これでNexmoノードが画面の左側、ノードパレットに他のデフォルトノードと一緒に表示されるはずです。
ローカルサーバーをインターネットに公開する
Node-REDのホスティングバージョンを使用していない場合、Nexmo Voice APIはWebhookエンドポイントにアクセスする別の方法を必要とします。 ローカルサーバーを公衆インターネットからアクセスできるようにする.Node-REDをローカルマシンではなく、パブリックウェブサーバーで実行している場合、準備は完了です。 Nexmoボイスアプリケーションの作成ステップに進みます。
これを行う便利な方法は、次のようなトンネリングサービスを使うことだ。 ngrokのようなトンネリングサービスを使うことである。 ノードがあります。があり、エディタから直接インストールできます。
のチュートリアルもご覧ください。 Node-REDでNgrokを始めようをご覧ください。
ngrokノードをインストールしてエディタを再起動すると、ノードパレットに ngrokノードがノードパレットに表示されるはずです。このノードは文字列 にまたは offを入力として取り、トンネルの開始/停止を行い、ngrok ホストアドレスを として出力する。.
輸入インポート クリップボード下記のスニペットからインポートするか、自分でこのパスを作ってみてください。
[
{
"id": "faed0f7.1e524f",
"type": "inject",
"z": "5b8bbfc3.1a9f18",
"name": "",
"topic": "",
"payload": "on",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 190,
"y": 100,
"wires": [
[
"8a01baeb.6756d"
]
]
},
{
"id": "11051fa9.75bd1",
"type": "inject",
"z": "5b8bbfc3.1a9f18",
"name": "",
"topic": "",
"payload": "off",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"x": 190,
"y": 160,
"wires": [
[
"8a01baeb.6756d"
]
]
},
{
"id": "8a01baeb.6756d",
"type": "ngrok",
"z": "5b8bbfc3.1a9f18",
"port": "1880",
"creds": "5a9e2b8c.173a2c",
"region": "ap",
"subdomain": "",
"name": "",
"x": 400,
"y": 140,
"wires": [
[
"93fd5675.743c1"
]
]
},
{
"id": "93fd5675.743c1",
"type": "debug",
"z": "5b8bbfc3.1a9f18",
"name": "",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"x": 620,
"y": 140,
"wires": []
},
{
"id": "5a9e2b8c.173a2c",
"type": "ngrokauth",
"z": ""
}
]この時点で、あなたのエディターはこのように見えるはずだ:
ngrok path
を押す前の最後のステップとして デプロイを押す前の最後のステップとして ngrokノードのプロパティを開き、ポート番号 (1880Node-REDの場合)とリージョンを指定する。
ngrokアカウントのオートトークンがあれば、それを追加することもできます。なくても心配しないで、今はこのステップを飛ばしてください。ノードが完全に設定されていないと警告が出ますが、これは問題ではありません。
ngrok properties
ヒット デプロイをクリックし をクリックします。 injectノードのボタンをクリックし、デバッグエリアに表示されたURL(今後の参考のためにYOUR_URL)に移動して、公開アドレスにあるNode-REDエディタを探します。
ngrok node-red
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... "を選択し、編集ボタンをクリックします。以下の詳細を入力し 新規アプリケーションの作成.
| KEY | DESCRIPTION |
|---|---|
Name |
Choose a name for your Voice Application, for example "Nexmo Voice Application". |
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アプリケーションを作成し、App IDと秘密鍵のフィールドに入力します。このステップの後、使用したNexmoノードを削除してください。 nexmovoiceappコンフィグノードが作成され、このフローに必要なすべてのNexmo認証情報が含まれているからです。
create voice app
電話番号の設定
次に、バーチャル・ナンバーをこのアプリケーションにリンクさせる必要がある。
Nexmoダッシュボードで、作成したVoice Applicationsを検索します。 ボイス> アプリケーション.
このアプリケーションの名前をクリックし、その下にある Numbersタブをクリックし リンクボタンをクリックしてください。
使用したい電話番号がすでに他のアプリにリンクされている場合は、以下をクリックする。 番号の管理をクリックし、着信をあなたのアプリに転送するように設定します。
link number
ボーナスのヒントノードを使います。 commentノードを使い、アプリケーションにリンクされているNexmo番号をメモしておく。
インバウンドコールの処理
着信コールを受けると、Nexmo Voice APIは定義したエンドポイントにリクエストを行います。 GETを定義したエンドポイントにリクエストします、 YOUR_URL/answerにリクエストを行い、コールを処理するための一連の指示を要求します。
これらの命令は Nexmoコール・コントロール・オブジェクトNCCOとしても知られています。Node-REDエディタのNexmoパレットで対応するノードを見つけるか、NCCOリファレンスを参照してください。 NCCOリファレンスを参照してください。
このチュートリアルでは connectアクションを使って、着信コールがあったときに指定した新しい電話番号に接続されるようにします。
インバウンドコール用Webhookエンドポイントの定義
を追加する。 voice webhookと return nccoノードをワークスペースに追加し、それらを配線してウェブフックのエンドポイントを定義します。
次に voice webhookノードのプロパティを開き GETを Methodを選択し /answerを入力します。 URLフィールドに入力し デプロイ.
inbound webhook
素晴らしい!これでNexmoのAPIにNCCOを返すWebhookができました。この時点ではアクションが含まれていないので、アクションを追加しましょう!
Nexmoコール・コントロール・オブジェクトの構築
着信コールを転送するには、新しいエンドポイントに接続する必要がある。そのためには connectアクションが必要です。
ノードの間に connectと voice webhookと return nccoノードを追加する。これでNCCOに接続アクションが追加される。
ノードエディタを開き connectノードエディタを開き Phoneを Endpointフィールドに電話したい番号を入力する。 Number {}フィールドに入力する。
発信者番号 From {}を空欄にするか、Nexmoのバーチャル番号を入力してください。

その他のパラメーターやアクションの詳細については connectアクションについては NCCOリファレンス.
通話イベントのログ
最後に http inノードを http responseノードと debugノードに接続し、デバッグ・エリアでコール・イベントを表示できるようにします。
入力ノードで http入力ノードで POSTを Methodを選択し URLフィールドを /event.
ノードは http responseノードには 200として設定されていなければならない。 Status codeに設定されているはずだが、これはデフォルト値でもあるので心配はいらない。
forward flow
Nexmo番号に電話をかけ、デバッグサイドバーで通話イベントを確認する!
forward call events
録音機能の追加
ビジネス電話をかけるとき、録音オプションがあると便利です。そこで、上記のフローをどのように変形させれば、会話の録音が可能になるか見てみましょう。
NCCOの更新
まず recordアクションを追加します。
記録は、NCCOで記録アクションが実行されたときに開始され、アクションの同期条件が満たされたときに終了する。つまり End On Silence, timeOutまたは endOnKey.
同期条件を設定しない場合、Voice APIは録音せずに次のNCCOを即座に実行します。
今回の使用例では recordノードの前に connectノードの前に End On Silence, Time Outや End On Key値は設定されない。
フローに recordノードをフローに追加する。 voice webhookと connectノードの間に
プロパティを開き URL {}フィールドに YOUR_URL/recordを選択します。 POSTを Methodを選択し Formatを選んでください。 MP3.また Beep Startをつけると、録音がいつ始まるかが一目瞭然です。
forwrad record node
録画用ハンドラの追加 eventURL
次に、録画イベントURLのハンドラを追加します。 YOUR_URL/record.こうすることで、録画が完了したときにイベントを受け取り、その録画をマシンにダウンロードできるようになる。
ノードと http inノードと http responseノードを追加し、それらを配線する。また debugノードも追加することを検討する。
入力ノードで http入力ノードで POSTを Methodとして選択し URLフィールドに /record.
ノードは http responseノードには 200として設定されていなければならない。 Status codeに設定されていなければならないが、これはデフォルト値でもある。
forward record event
ダウンロード録音
録画が完了すると、Nexmoは録画イベントのWebhookで録画URLを送信します。最後のステップは、録画を取得してダウンロードすることです。
このステップでは getrecordingノードが必要です。 fileノードが必要です。
ノードの後ろに getrecordingノードを追加します。 /record http inノードの後にノードを追加し、そのノードのプロパティでドロップダウンから先ほど作成した Voice アプリケーションを選択します。 Nexmo Credentialsを選択し、絶対パスを Filename {}.
forward get recording
そして最後に fileノードを追加する。 getrecording.ノード・エディターで ディレクトリが存在しない場合は作成しますか?オプションがチェックされていることを確認し 上書きまたは ファイルに追加のどちらかを Actionを選択します。フィールドは空のままにしてください。 Filenameフィールドは空のままにしておきます。 getrecordingノードの {{msg.filename}}.
forward file node
これで終わりです!2台目のデバイスを用意するか、友達にNexmoの番号に電話してもらい、会話をしてください。録音が終わると、録音ファイルはすでにあなたのマシンにドムンロードされて待っています。お楽しみください!
forward recording download