
シェア:
スティーブは自称数学者で、悪口の王様。グレイハウンド、曲がりくねったパズル、ヨーロッパのボードゲームをこよなく愛する。 非数学系の人には数学を、非Java系の人にはJavaの話をしていないときは、コーヒーを飲みながらコードをハックしている。
Javaで音声合成電話をかける
所要時間:2 分
はじめに
以前のチュートリアルでは、以下の方法を紹介しました。 Javaで電話を受けるを使って応答する方法を紹介しました。 音声合成.電話を受けるだけでなく、電話を発信することもできます。
このチュートリアルでは、Javaを使用して音声合成電話を発信するアプリケーションを作成します。 Vonage Voice API を利用したアプリケーションを作成します。.
前提条件
使用するのは Gradleを使うことになるでしょう。さらに、JDKのコピーがインストールされていることを確認する必要があります。このチュートリアルでは、現在のLTSであるJDK 11を使用します。
最後に Vonage CLIをインストールする必要があります。このCLIを使ってVonageアカウントを新しいアプリケーションに設定します。
Javaで音声合成電話をかける
このチュートリアルでは、以下の手順を説明します:
Vonageアカウントにサインアップして電話番号を取得し、アプリケーションを作成する。
Gradleを使って新しいJavaアプリケーションを初期化する。
Vonage Javaクライアント・ライブラリを使って電話をかけ、音声合成を実行する。
Vonageアカウントの設定
アプリケーションをお持ちでない場合は、Vonage CLIを使用して作成できます。アプリケーションの名前と、Voice APIがデフォルトで使用する応答とイベントのURLを定義する必要があります:
Vonage Voice APIは、あなたのアプリケーションにリンクされた電話番号に電話がかかってくると、あなたの応答URLにリクエストを行います。
Vonage Voice APIは、様々なステータスの変更が発生すると、イベントURLにリクエストを行います。
アプリケーションの詳細については、以下をご覧ください。 コンセプトガイド.
Vonage CLI を使用してアプリケーションを作成するには、次のコマンドを使用します:
このコマンドは private.keyというファイルも作成されます。このファイルはVonage Voice APIで認証するために必要です。このファイルはコマンドを実行したディレクトリに保存されます。返されたアプリケーションIDもメモしておいてください。

Gradleを使って新しいJavaプロジェクトをセットアップする
依存関係を管理し、Javaアプリケーションを作成して実行するためにGradleを使用します。
この gradle init --type=java-applicationコマンドを実行すると、必要なすべてのフォルダと、コードを記述するサンプル・クラスが作成されます。
コマンド・ラインから、以下のコマンドで新しいJavaプロジェクトを作成し、対話式プロンプトでデフォルト値を受け入れる:
Gradleは Appクラスを src/main/java/make/tts/callフォルダに作成します。このクラスの内部には getGreetingと mainメソッドがあります。この getGreetingメソッドは必要ないので、自由に削除してください。
あなたの Appクラスはこのようになるはずだ:
/*
* This Java source file was generated by the Gradle 'init' task.
*/
package make.tts.call;
public class App {
public static void main(String[] args) {
// Future Code Goes Here
}
} 依存関係の追加
Vonage Java Libraryを使ってVonage Voice APIと通信します。以下を dependenciesブロックに以下を追加します。 build.gradleファイルのブロックに以下を追加します:
// Nexmo Java Client
implementation 'com.nexmo:client:4.2.0' Nexmoクライアントの初期化
Vonage Javaライブラリには NexmoClientクラスが含まれています。アプリケーションIDと、前のステップで作成した private.keyファイルへのパスを使用します。このクラスは NexmoClientはこの情報を使って Vonage Voice API を認証します。
の mainクラスの Appクラスのメソッドに以下を追加する:
NexmoClient nexmoClient = NexmoClient.builder()
.applicationId(APPLICATION_ID)
.privateKeyPath(PRIVATE_KEY_PATH)
.build();
VoiceClient voiceClient = nexmoClient.getVoiceClient();は NexmoClientは Exceptionをスローする。便宜上 mainメソッドのシグネチャを修正してください。あなたの mainメソッドは次のようになります:
public static void main(String[] args) throws Exception {
NexmoClient nexmoClient = NexmoClient.builder()`
.applicationId(APPLICATION_ID)
.privateKeyPath(PRIVATE_KEY_PATH)
.build();
VoiceClient voiceClient = nexmoClient.getVoiceClient();
} Nexmoコール・コントロール・オブジェクトの構築
Vonage Voice API の制御には以下を使用します。 Nexmoコールコントロールオブジェクト (NCCO).NCCOは、Voice APIが実行する一連のアクションを含むJSON配列です。
以下のNCCOは、Vonage Voice APIに、相手が電話に出たときに話しかけるように指示します:
[
{
"action": "talk",
"text": "This is a text-to-speech call from Vonage"
}
]Vonage Javaクライアント・ライブラリには、NCCOを構築するためのクラスが用意されています。このクラスでは Nccoクラスと TalkActionクラスを使用して NCCO を構築します。
メソッドに以下を追加する。 mainメソッドに以下を追加する:
TalkAction intro = TalkAction.builder("This is a text-to-speech call from Vonage").build();
Ncco ncco = new Ncco(intro); 電話をかける
には VoiceClientというメソッドがあります。 createCallというメソッドがあり com.nexmo.client.voice.Call..NCCOオブジェクトは、どの番号から電話をかけるか、電話をかけたい相手先、電話を制御するNCCOを定義するために使われる。 Callオブジェクトは、どの番号から電話をかけるか、電話をかけたい相手、そして電話を制御するNCCOを定義するために使われる。
新しい Callオブジェクトを mainメソッドで新しいオブジェクトを作成し createCallメソッドを呼び出す:
Call call = new Call(TO_NUMBER, NEXMO_NUMBER, ncco);
voiceClient.createCall(call); アプリケーションのテスト
アプリケーションを gradle runアプリケーションを make-tts-callディレクトリ内にあるコマンドでアプリケーションを起動します。Vonage番号から電話がかかってくるはずです。

この呼び出しに応答すると、Vonage Voice APIが "This is text-to-speech call from Vonage" というメッセージを話します。
結論
数行のコードで、あなたは受信者を呼び出してメッセージを話すことができるアプリケーションを作成した。
のドキュメントをご覧ください。 Vonageデベロッパーで コールフローまたは Nexmoコールコントロールオブジェクト.当社の Java用Nexmoコード・スニペットを参照してください。 このチュートリアルをご覧ください。