
シェア:
Vonageのデベロッパー・アドボケイト、作家、ストーリーテラー。AI/ML、ユニファイド・コミュニケーション、教育技術、クラウド技術、オープンソースに関心を持つ。
Pythonで電話の音声ストリームを再生する方法
所要時間:7 分
通話中にオーディオストリームを再生したい理由は様々です。日常的な使用例としては、開発者が通話相手を保留にしてリラックスさせたい場合、相手のストレスレベルを下げる音楽を流すことができます。
シナリオの例をいくつか挙げよう:
保留音楽を再生する。
電話会議 - 定数に達するまで、電話会議に音楽を流す。
録音済みメッセージ - Vonageが音声合成エンジンであなたの言語をサポートしていない場合に便利です。
ボイスメール - 電話でメッセージを残すと、そのボイスメッセージを後で再生することができます。
以下では、シナリオ1と2の実装方法を紹介する。その他のシナリオについては、今後のブログ記事で取り上げる予定である。
また、通話中にオーディオストリームを再生するには、2つの方法があります:
呼制御オブジェクト(NCCO)の使用
Voice API (VAPI)の使用方法
シナリオ1には方法1を、シナリオ2には方法2を使用する。
呼制御オブジェクト(NCCO)は、着信呼を制御する便利な方法を提供する。NCCOは、呼の処理方法を記述するJSONコンフィギュレーションで構成される。詳細な NCCOに関する詳細なリファレンスガイドに詳細なリファレンスガイドがあり、実行可能な多くのアクションが説明されている。私たちのシナリオで関心のあるアクションは1つだけである、 stream.アクションには同期と非同期の2つの使い方がある。 stream同期と非同期である。非同期とは、発信者が電話のキーパッドを使って音声を中断できることを意味します。 streamを中断できることを意味します。興味のあるストリームアクションオプションがいくつかあります:
オプション 内容
| Syntax | Description |
|---|---|
streamUrl |
An array containing a single URL to an MP3 or WAV (16-bit) audio file to stream to the Call or Conversation. |
level |
Set the audio level of the stream in the range -1 >=level<=1 with a precision of 0.1. The default value is 0. |
bargeIn |
If set to true, this action is terminated when the user presses a button on the keypad. Use this feature to enable users to choose an option without having to listen to the whole message in your Interactive Voice Response (IVR) system. If you set bargeIn to true on one more Stream actions then the next action in the NCCO stack must be an input action. The default value is false. |
loop |
The Number of times audio is repeated before the Call is closed. The default value is 1. Set to 0 to loop infinitely. |
通話に音声を流すためのPython NCCOの例:
[
{
"action": "stream",
"streamUrl": ["https://acme.com/music/relaxing_music.mp3"]
}
]対応オーディオファイル形式はMP3と16ビットWAV。
2つのシナリオを使用して、通話を受信し、通話に音楽を再生するスターターVonageアプリケーションを開発済みです。スターター・アプリケーションでは、.envファイルに認証情報を追加し、Github Codespacesを使ってアプリをデプロイする必要があります。コードスペースとは、GitHubクラウドでホストされている開発環境のことだ。GitHub Codespacesはプロジェクトごとにカスタマイズ可能で、ユーザーは使用するLinuxベースのオペレーティングシステムを設定したり、よく使われるポートを転送したり、環境変数を設定したりすることができる。また、スターター・アプリケーションを編集して実験することもできる。
はじめにフォークする このリポジトリ.コードスペースで "Create codespace on main" をクリックして開きます。
あるいは、以下のようにアプリをデプロイすることもできます。 Pythonと ngrok.
新しいVonageアプリを作成する
サインイン/無料登録 developer.vonage.comVonage Voice APIを使用するには、開発者ポータルからVonageアプリケーションを作成する必要があります。Vonage Voice APIへのリクエストには全て認証が必要です。APIキーとprivate.keyを使用します。
左のメニュー ここでをクリックします。APIキーのタブの下に、あなたのAPIキーがあります。開く アプリケーションを開き、"Create a new application "ボタンをクリックして新しいアプリを作成します。

そして、"Generate public and private key "ボタンをクリックする。キーを private.keyファイルに貼り付ける。Voice機能をオンにします。
Codespaseのターミナルで、以下のコマンドを実行する:
そして
これをコピーして、Vonageアプリケーション設定のフィールドに従って、アンサーURLとイベントURLに貼り付けます。

そして一番下にある "Generate new application "ボタンをクリックする。
このチュートリアルでは、バーチャル電話番号も使用します。
アプリで電話を受けるためのバーチャル番号を購入する必要があります:
バーチャル電話番号の検索と購入 Vonageダッシュボード.
ドロップダウンメニューから
Voice機能をドロップダウンメニューから選択します。Vonage Dashboardを使用して番号をリンクし、アプリケーションに移動し、関連するアプリケーション(例:VoiceApp)を開き、番号のリストで「リンク」ボタンをクリックします。

NCCOを使用した通話へのストリーミング・オーディオ
このシナリオでは、ユーザーはVonageの番号に電話をかけ、音楽はNCCOを使用してユーザーの通話にストリーミングされます。 streamアクションを使います。次のようにします。 scenario-1.pyファイルを使います:
from dotenv import load_dotenv
from flask import Flask, request, jsonify
from os import environ as env
# Load environment variables from a .env file:
load_dotenv('.env')
# Load in configuration from environment variables:
VONAGE_APPLICATION_ID = env['VONAGE_APPLICATION_ID']
CONF_NAME = env['CONF_NAME']
STREAM_URL = env['STREAM_URL']
app = Flask(__name__)
ncco = [
{
"action": "stream",
"streamUrl": [
STREAM_URL
]
}
]
@app.route("/webhooks/answer")
def answer_call():
return jsonify(ncco)
@app.route("/webhooks/event", methods=['POST'])
def events():
return ("200")
if __name__ == '__main__':
app.run(host="localhost", port=9000)試してみる
Codespaceでコードを実行することができます。以下のコマンドを実行してください:
依存関係をインストールする
以下のコマンドでアプリを起動する。
ターミナルで Portタブを開く。タブの Privateをクリックして Visibility列をクリックし Public.

このシナリオの一連の流れは以下の通りである:
Vonage番号をダイヤルしてください。
Vonageはコールを受信する。
指定したアンサーウェブフックURLにコールバックが生成されます。
アプリケーションはコールバックを受け取り、NCCOで応答する。
音楽が通話に流れます。
Voice APIを使用した通話音声のストリーミング
このシナリオでは、Vonage番号に電話し、会議(ここではSoothing会議)に参加します。その後 /streamURLに移動し、会議へのストリーミングを開始します。その後、Voice APIを使って音楽が再生されます。
試してみる
Codespaceでコードを実行するには、以下の手順を実行します:依存関係をインストールする
以下のコマンドでアプリを起動する。
ターミナルで Portタブを開く。タブの Privateをクリックして Visibility列をクリックし Public.

オーディオをストリーミングする準備が整いました!
余計なことはするな:
Vonage番号をダイヤルしてください。
新しいターミナル・ウィンドウで次のコマンドを実行する。
echo "https://${CODESPACE_NAME}-9000.preview.app.github.dev/stream".リンク(ローカルマシンで実行する場合、localhost:9000/stream)、音楽があなたの会議に流れます。
以下のアクションが起こる:
Vonageはコールを受信する。
コールバックは、指定したアンサーウェブフックURLに生成されます。
アプリケーションはコールバックを受け取り、NCCOで応答する。
通話者が会議に参加。
会議で演奏された音楽
まとめ
おめでとう!ワークフローとコードサンプルを使って、関連するオーディオを通話にストリーミングし、通話保留時に関連する音楽を再生することができます。
あなたの作品を披露してください!私たちの VonageコミュニティSlackまたは ツイッター.