https://a.storyblok.com/f/270183/211663/6085144024/feature.png

Javaで音声合成電話をかける

最終更新日 May 12, 2021

所要時間:2 分

はじめに

以前のチュートリアルでは、以下の方法を紹介しました。 Javaで電話を受けるを使って応答する方法を紹介しました。 音声合成.電話を受けるだけでなく、電話を発信することもできます。

このチュートリアルでは、Javaを使用して音声合成電話を発信するアプリケーションを作成します。 Vonage Voice API を利用したアプリケーションを作成します。.

前提条件

使用するのは Gradleを使うことになるでしょう。さらに、JDKのコピーがインストールされていることを確認する必要があります。このチュートリアルでは、現在のLTSであるJDK 11を使用します。

最後に Vonage CLIをインストールする必要があります。このCLIを使ってVonageアカウントを新しいアプリケーションに設定します。

Javaで音声合成電話をかける

このチュートリアルでは、以下の手順を説明します:

  1. Vonageアカウントにサインアップして電話番号を取得し、アプリケーションを作成する。

  2. Gradleを使って新しいJavaアプリケーションを初期化する。

  3. Vonage Javaクライアント・ライブラリを使って電話をかけ、音声合成を実行する。

Vonageアカウントの設定

アプリケーションをお持ちでない場合は、Vonage CLIを使用して作成できます。アプリケーションの名前と、Voice APIがデフォルトで使用する応答とイベントのURLを定義する必要があります:

  • Vonage Voice APIは、あなたのアプリケーションにリンクされた電話番号に電話がかかってくると、あなたの応答URLにリクエストを行います。

  • Vonage Voice APIは、様々なステータスの変更が発生すると、イベントURLにリクエストを行います。

アプリケーションの詳細については、以下をご覧ください。 コンセプトガイド.

Vonage CLI を使用してアプリケーションを作成するには、次のコマンドを使用します:

vonage apps:create "Send TTS Call" --voice_answer_url=http://example.com/webhooks/answer --voice_event_url=http://example.com/webhooks/events

このコマンドは private.keyというファイルも作成されます。このファイルはVonage Voice APIで認証するために必要です。このファイルはコマンドを実行したディレクトリに保存されます。返されたアプリケーションIDもメモしておいてください。

App create

Gradleを使って新しいJavaプロジェクトをセットアップする

依存関係を管理し、Javaアプリケーションを作成して実行するためにGradleを使用します。

この gradle init --type=java-applicationコマンドを実行すると、必要なすべてのフォルダと、コードを記述するサンプル・クラスが作成されます。

コマンド・ラインから、以下のコマンドで新しいJavaプロジェクトを作成し、対話式プロンプトでデフォルト値を受け入れる:

mkdir make-tts-call cd make-tts-call gradle init --type java-application

Gradleは Appクラスを src/main/java/make/tts/callフォルダに作成します。このクラスの内部には getGreetingmainメソッドがあります。この 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();

NexmoClientExceptionをスローする。便宜上 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番号から電話がかかってくるはずです。

Phone ringing

この呼び出しに応答すると、Vonage Voice APIが "This is text-to-speech call from Vonage" というメッセージを話します。

結論

数行のコードで、あなたは受信者を呼び出してメッセージを話すことができるアプリケーションを作成した。

のドキュメントをご覧ください。 Vonageデベロッパーコールフローまたは Nexmoコールコントロールオブジェクト.当社の Java用Nexmoコード・スニペットを参照してください。 このチュートリアルをご覧ください。

シェア:

https://a.storyblok.com/f/270183/150x150/a3d03a85fd/placeholder.svg
Steve Crowヴォネージの卒業生

スティーブは自称数学者で、悪口の王様。グレイハウンド、曲がりくねったパズル、ヨーロッパのボードゲームをこよなく愛する。 非数学系の人には数学を、非Java系の人にはJavaの話をしていないときは、コーヒーを飲みながらコードをハックしている。