https://d226lax1qjow5r.cloudfront.net/blog/blogposts/announcing-vonage-java-sdk-v7-7-0/java-sdk-updates.png

Vonage Java SDK v7.7.0の発表

最終更新日 August 15, 2023

所要時間:1 分

Vonage Java SDKのバージョン7.7.0がリリースされました!この投稿では、変更点と近い将来に期待されることについて説明します。

はじめに

2023年3月から8月にかけて、Vonage Java SDKは7回リリースされ、35,000行以上のコード変更が行われました。 35,000行以上のコード変更2022年のv7.1.1以来。セマンティック・バージョニング・スキームとして セマンティック・バージョニング・スキームが示唆するように、最新バージョンへのアップデートは後方互換性がなければなりません。7.0.0より古いバージョンを使用している場合は、7.0.0のアナウンス記事を参照してください。 v7.0.0アナウンスポストを参照してほしい。この記事では、v7.0.0以降のアップデートをまとめることで、SDKを最新バージョンにアップグレードするよう説得できればと思います。

新しいAPI

最近のリリースの主なニュースは、新しいAPIがGeneral Availabilityステータスになり、サーバーSDKでサポートされるようになったことです。以下のAPIがJava SDKで完全にサポートされました:

  • Verify v2:Verify APIの新バージョンでは、アプリケーションに多要素認証を実装するために、従来のSMSだけでなく、WhatsApp(コードレスも可能)、Eメール、音声などのチャンネルが追加されました。さらに、認証ワークフローにフォールバック機能が追加され、各チャネルにタイムアウトを追加したり、バックアップとして別の認証方法や連絡先電話番号を試すことができるようになりました。

  • ミーティング:会議室を動的に作成・管理できるローコードソリューション。これまで VonageビジネスクラウドこのAPIを使用すると、組織のニーズに合わせてVBCアプリケーションをプログラムでプロビジョニングし、カスタマイズすることができます。

  • サブアカウント:このAPIでは、Subaccounts(サブアカウント)を作成・管理することができます。Subaccounts(サブアカウント)は、ビジネスユニットや部署ごとに使用量や請求書、割り当て番号を分けて管理するのに便利です。アカウントでこの機能が有効になっている必要があります。

Messages APIの強化

新しいAPIの他に、最も注目すべき改良点はMessages APIです。7.1.0からは メッセージAPIサンドボックスを使用できるようになりました。これにより、WhatsApp、Viber、Facebook Messengerの各プラットフォームでビジネスアカウントを設定することなく、メッセージの送信をテストできるようになりました。新しいメッセージタイプを追加しました:

WhatsApp専用のメッセージタイプにより、カスタムメッセージタイプを作成することなく、位置情報、ステッカー、商品を簡単に宣言的に送信できます。もちろんWhatsApp APIには豊富な機能があり、カスタムメッセージタイプを使用することも可能です。 例えば.

また、Viberのテキストメッセージや画像メッセージにアクションボタンを含めることができるようになりました。もう一つの特筆すべき追加機能は 受信メッセージ.Messages APIはメッセージを送信するだけでなく、受信することもできます。これらは ウェブフック.受信メッセージのリスナーをセットアップすると、アプリケーション・サーバーに送信されたデータ(API仕様に記載されている API仕様オブジェクトにデシリアライズできるようになります。 com.vonage.client.messages.InboundMessageオブジェクトにデシリアライズできるようになります。同じことが メッセージステータスクラスでデシリアライズできます。 com.vonage.client.messages.MessageStatusクラスでデシリアライズできます。すでにメッセージステータスの検査に webhook を使っているのであれば、タイムスタンプのデシリアライズが修正されたことを知って喜ぶことでしょう。

アプリケーションAPIアップデート

SDKの Applications APIの実装が更新され、ドキュメントが改善され、不足していたフィールドが追加されました。特に、Voice 機能が更新されました。 conversations_ttl, signed_callbacksおよび regionフィールドが追加されました。フィールドを設定できるようになりました。 connection_timeoutsocket_timeoutフィールドを Webhook- を設定できるようになりました。また fallback_answer_urlwebhookタイプも追加されました。利便性のために、新しい ApplicationClient::listAllApplications()メソッドを使って、すべてのアプリケーションを簡単に一覧できるようになりました。統一性を持たせるため、APIからの4xxまたは500エラーレスポンスは、他の新しいAPIと同様に ApplicationResponseExceptionでラップされ、より簡単にエラーの詳細を調査できるようになりました。

ユーザーAPI

ユーザは特定のアプリケーションと結びついているため、最近、アプリケーションAPIにユーザ管理エンドポイントを追加しました。 ユーザー管理エンドポイントをアプリケーションAPIに追加した。.API自体はとても簡単で、アプリケーションのユーザーを管理するためのCRUD操作を提供します。現在、これらは Conversation APIです。.SMS、WhatsApp、Viber、Facebook Messenger、PSTN、SIP、VBC、Websocketなどです。Java SDKは、新しく追加された com.vonage.client.usersパッケージを通じてユーザー管理をサポートします。

Voice APIの改善

Voice APIの実装(com.vonage.client.voice.*)にも注目すべき変更が加えられた。これには、フィールドのシリアライズ(具体的には randomFromNumberCall) のシリアライズや appエンドポイント型のデシリアライズなどです。

しかし、最大の変更点は、オブジェクトを構築するためにBuilderパターンを使用するようになったことだ。これは、他のAPIがどのようにリクエストボディを構築するのかに沿ったものである。特に VoiceClient#createCall(Call)メソッドによる)呼び出しの作成は、より簡単で、より宣言的であるべきです。 Callオブジェクトに Builderを持つようになったので、呼び出しのプロパティを設定するために使うことができます。また、初期呼び出しのプロパティに新しいパラメータや機能を追加するのも簡単になります。ビルダーの扱いを受けたもう1つのクラスは TalkPayload(で使用されている)。 VoiceClient#startTalk).同じ考え方が適用されます:必要なパラメータの組み合わせを持つメソッド・シグネチャを見つけようとするのではなく、現在では VoiceClient#startTalk(String uuid, TalkPayload properties)を使って TalkPayload.builder()を使って呼び出すことができます。

その結果 startTalkは非推奨となり、次のメジャーリリースで削除される予定です。そういえば Callクラスのセッターも非推奨となり、Builderを使うことになりました。さらに整理するために、いくつかの内部クラスはパッケージ・プライベートになり、潜在的に使われる可能性のあるもの (CallModifierModifyCallPayload) は非推奨になりました。

修正とリファクタリングに加えて、新機能もある。最も注目すべきは 高度なマシン検出(メソッドを使って設定できる)。 Call.Builder#advancedMachineDetectionメソッドを使って設定できる)。指定された場合、この機能は標準の機械検出機能を上書きします。ボイスメールの検出精度が大幅に向上し、プレミアム機能なので通話ごとに課金される。もうひとつの新機能は プレミアム音声合成これは TalkPayload.Builder#premium(boolean)true.これは TalkActionNCCOビルダーでも利用可能です。このプレミアムボイスは、より自然な音声で、文字数に応じて課金されます。詳しくは 開発者向けドキュメントを参照してください。

最後に、SDKのAPI実装に欠けていたものがいくつか追加されました。音声合成の音量レベルを調整する機能が TalkPayload(に追加されました(ビルダー経由で利用可能)。これは-1から1の範囲で設定でき、0がデフォルト、-1が最も小さく、1が最も大きくなります。また VBCエンドポイントもSDKに追加されました。

Verify(レガシー)アップデート

7.0.0またはそれ以前のバージョンからアップグレードする場合、従来のVerify v1 APIにいくつかのQoL改善が行われています。新しいVerify v2 APIに移行することをお勧めしますが、SDKは従来のVerify APIをサポートしています。Java SDK の最新バージョンは、以下の仕様に整合しています。 仕様.特に、欠落していたフィールドが追加され、Bring Your Own PIN がサポートされ、未使用のフィールドは非推奨となりました。

更新された依存関係

もちろん、SDKを最新バージョンにアップグレードするメリットの1つはセキュリティだ。Java SDKの依存関係は比較的少ないのですが、主な依存関係であるJacksonとApache HTTP Clientは特にCVEの影響を受けやすいため、これらを最新の状態に保つことが重要です。Java SDKのリリース前には、すべての依存関係のバージョンをチェックし、利用可能な最新のマイナー・バージョンまたはパッチ・バージョンであることを確認しています。とはいえ、セキュリティ脆弱性のリスクを減らすために、必要でない依存関係を削除することも良い習慣です。

最近のリリースでは javax.servletjavax.xml.bindの依存関係はSDKが必要としないため削除された。互換性のために jakarta.servletを置き換える)依存関係はオプションですが、理論的には決して必要ではありません。 javax.servlet)はオプションですが、理論的には決して必要ではありません。いくつかの内部クラスは javax.servlet.HttpServletRequest.しかし、これらは非推奨となっており、依存関係を完全に取り除くことができます。特に com.vonage.client.sms.callback.AbstractMOServletを使用している場合、これは非推奨となり、次のメジャー・バージョンで削除される予定です。

内部リファクタリング

SDKの次の大きな変更は、Apache HTTP Client 4から5へのアップグレードになる可能性が高い。現在、各サブクライアント(すなわち、各APIに使用されるクライアント、 VoiceClient)は複数のエンドポイントで構成されている。これらは、リクエストを正しいAPIエンドポイントに送り、デシリアライズされたレスポンスを返すロジックを処理する内部クラスです。このロジックは、基礎となるHTTPクライアントの実装と緊密に結合しているため、別のクライアントへの移行が非常に難しくなっています。私は現在、これらのエンドポイントの実装をデカップリングすることに取り組んでいる。v7.7.0では、いくつかのAPIがこの新しいアプローチに移行されました。そのため、以下のような新しいパブリック向けのインターフェイスにお気づきかもしれません。 JsonableQueryParamsRequestのような新しい公開インターフェースに気づくかもしれません。

この作業がSDKでサポートされているすべてのAPIで完了すれば、SDK内のすべてのAPIエンドポイント(そしてテストもお忘れなく!)とは対照的に、基本的なロジックを変更する場所が1つになるため、移行はよりシンプルになります。そうなれば、Apache HttpClient 5に移行できるようになります。これはセキュリティのためだけでなく、最も要求の多かった機能の1つのための基礎固めにもなります: ノンブロッキング(非同期)リクエスト.

サインオフ

今のところは以上です!もし何か問題が見つかったり、機能強化の提案があれば、遠慮なく GitHub で問題を提起するで問題を提起してください。 ツイッターまたは コミュニティ・スラック.Java SDKの最新バージョンでVonage APIを使用する素晴らしい体験ができることを願っています!

シェア:

https://a.storyblok.com/f/270183/400x400/46a3751f47/sina-madani.png
Sina MadaniVonage 元チームメンバー

シナはVonageのJavaデベロッパー・アドボケイト。アカデミックなバックグラウンドを持ち、自動車、コンピューター、プログラミング、テクノロジー、人間性など、あらゆることに好奇心旺盛。余暇には散歩をしたり、対戦型ビデオゲームをしたりしている。