https://a.storyblok.com/f/270183/1368x665/ae383d9f1c/java_sdk-updates_24.png

Vonage Java SDK v8.0.0の発表

最終更新日 December 14, 2023

所要時間:1 分

はじめに

Java SDKは、前回の発表記事 前回の発表記事- 17,000行以上のコード行以上です!その多くは内部的なリファクタリングとクオリティ・オブ・ライフの改善ですが、メジャー・バージョンであるため注意すべき重要な変更もあります。さっそく見ていこう!

Video API

大きなニュースから始めましょう。 Video APIが正式にリリースされました。からの移行は OpenTokからVonageへの移行は以前から進められていた。APIが安定した今、それは com.vonage.client.videoパッケージの JavaサーバーSDK.

新しいアーティファクトID

この記事から得られるものが1つあるとすれば、それはSDKが現在、Maven Centralの新しい artifactIdに移行したという事実だ。これは2022年以来のロードマップであった。 新しい場所への様々なベータリリース.SDKは groupIdはまだ同じ (com.vonage)だが artifactIdserver-sdkの代わりに client.この移行はメタデータに明記されているため、ツールやウェブサイトによっては新しいアーティファクトを指す場合もあります。この通知は mvnrepository.comなどで見ることができます。

この変更の動機は?主な理由は の下で公開されている他のツーリングとの混同を避けるためです。 com.vonageグループ.私たちはAndroid開発用のクライアントサイドSDKも提供しているので、この名称は混乱を招くかもしれません。 clientというネーミングは混乱を招くかもしれません。

依存関係のアップデートは、まだ簡単なはずだ。 com.vonage:client:7.11.1(または現在使っているバージョン)を com.vonage:server-sdk:8.0.0.特定のビルドシステム用の手順は、次の右側にあります。 の右側にあります。.

変化への対応

意味バージョンとして セマンティックバージョンという数字が示すように、このリリースではSDKのパブリックAPIにいくつかの後方互換性のない変更が加えられている。SDKはまだJava 8をサポートしており、すべてのパッケージ名とクラスはそのままです。しかし、SDKの非推奨メンバーのほとんどは、予定通り削除されました。たとえば WAPPushSMSメッセージ・タイプはAPIでサポートされなくなりました。以下は削除とその代替のリストです。

SNSを削除

歴史のあるプロジェクトでは、使われなくなったりサポートされなくなったりしたコードが必然的に存在する。Java SDKでは、古くて使われていないためにメンテナンスされなくなったパッケージがいくつかあった。SNSクライアントもその一つで(APIはとっくに死んでいる)、いくつかのXMLユーティリティに依存していた。これは legacyutils, snsloggingパッケージはすべて削除された。のSNS URI設定も含まれます。 HttpConfigのSNS URI設定も含まれます。

不要な依存関係

どのようなライブラリを使用する場合でも、最も一般的な問題のひとつに依存関係の衝突がある。 これを解決する方法についてはしかし、一般的にライブラリのメンテナは、可能な限り依存関係のフットプリントを最小限にすることが賢明です。

SDKにおけるそのような例のひとつは には javax.servlet依存関係.これは現在Jakarta名前空間に移動しているため、新しいバージョンのJakarta ServletでJava SDKを使用することが難しくなっています。さらに、この依存関係の使用はかなり不要であり、これを使用していたクラスはもはや保守されていません。したがって、これを参照していたすべてのメソッドとクラス、特に、 HttpServletRequest- は削除されました。これには com.vonage.client.voice.servletパッケージと com.vonage.client.sms.callback.AbstractMOServlet.クラスを使用していた場合は RequestSigningクラスを使用していた場合、SMS API からの受信メッセージの署名を Verify するために代替の verifySignatureメソッドが使えるようになりました。 コード・スニペット・レポを参照してください。

削除された他の依存関係は jackson-dataformat-hal.これは、HAL レスポンスをデシリアライズするための Jackson ライブラリの拡張機能を提供していましたが、Account API - 具体的には ListSecretsResponseクラスでのみ使用されていました。SDKの残りの部分との一貫性を保つため、これはリファクタリングされ、依存関係は不要になりました。

Verify API

Verify APIから削除されたのは、ステータスコードだけで、他のSDKでは使われていない BaseResultクラス(ステータス・コードを持つだけで、SDKの他の部分では使われていなかった)と LineType以前は非推奨だったを使用していたメソッドも含まれます。 LineTypeを使用していたメソッドも含まれる。を使用していたメソッドも含まれます。 ipAddressフィールドも AdvancedInsightRequest(Numbers Insight)と CheckRequest.からも削除された。 verify2パッケージの代わりに verifyパッケージは Verify v2 APIはより多くのサポートを受けることになる。そういえば、Verify v2には数多くのロケールが追加されており、それを維持するのはメンテナンスの負担になっているほどだ。このため、カスタム com.vonage.client.verify2.Locale列挙は削除された。代わりに、組み込みの java.util.Locale.を使用してください。 VerificationRequest.Builder#locale(String)を使うと便利で、2文字の言語タグと地域タグを提供することができます (例えば、、 en-gb).

Voice API

Voice API の実装の品質がいくつか改善され、以前非推奨だったメソッド、例えば com.vonage.client.voice.Callクラスのセッターを削除し、v7.3.0で追加されたビルダーを使用するようにしました。最もインパクトのある2つの変更は VoiceClient.

まず modifyCallメソッドは ModifyCallResponse.実装では、メソッドを直接呼び出すことで、通話の変更アクションを簡略化できるようになった。たとえば、通話を終了する(電話を切る)には terminateCall(String)メソッドを使用する。同様のメソッドは、他のアクション (earmuff/ unearmuff, mute/ unmute).

もうひとつの変更は downloadRecordingメソッドである。これは Recordingオブジェクトを返しますが、このオブジェクトでできることは2つだけです。 InputStreamとして取得するか save(Path)メソッドを呼び出してファイルに保存することだった。このメソッドの内部的な実装はきれいなものではなかった。 VoiceClient: void saveRecording(String recordingUrl, Path destination)byte[] downloadRecordingRaw(String recordingUrl).前者はその名前が示すように、指定されたURL (recordingUrl)から目的のファイル(destination).後者は、録画のバイナリの内容( recordingUrlからダウンロードしたもの) のバイナリ内容をバイト配列で返すので、ファイルに保存したくない場合はそれをどうするか決めることができます。したがって、以前の Recording downloadRecording(String recordingUrl)メソッドは com.vonage.voice.client.Recordingクラスとともに削除されました。

最後に PayActionクラスとともに PaymentPromptクラスとともに削除された。これらはAPIでサポートされなくなったからだ。

その他の最新情報

技術的負債に対処するためのレガシーコードの削除の他に、以下に説明するいくつかの新機能がある。例えば、非同期リクエストをサポートできるようにするなどです。テストも JUnit 5 に移行されました。

設定可能なリクエストタイムアウト

バージョン7.8.0では、SDKから送信されるすべてのリクエストに対してカスタムタイムアウトを設定する機能が追加されました。当社のREST APIは通常タイムリーに応答しますが(秒単位ではなくミリ秒単位で測定されます)、必要な処理の量やネットワークの状態によっては、より時間がかかるエンドポイントもあります。時間にシビアなアプリケーションの場合、レスポンスにハードデッドラインを設定することで、別スレッドを作成することなく、必要以上に待たされることがなくなるので便利かもしれません。v7.8.0以前では、デフォルトのタイムアウトはApache HTTPクライアントのデフォルト値(通常60秒)であったため、システム依存でした。現在は HttpConfig.Builder#timeoutMillis(int)メソッドを使ってミリ秒単位で設定できるようになりました。また、システムの設定に関係なく、デフォルトで60秒になりました。

サイレント認証

Verify v2 API の Silent Auth ワークフローに、いくつかのフィールドが追加されました。すなわち sandboxredirect_urlパラメータ SilentAuthWorkflow, check_urlVerificationResponse.我々のドキュメントには 同期サイレント認証ワークフローそして サイレント認証サンドボックスについての詳しい情報があります。

AccountClient改善点

JavaSDKの AccountClientクラスは、Pricing APIとAccount APIの両方のエンドポイントを持っています。しかし エンドポイントの実装がなかったので、v7.9.0から追加されました。このエンドポイントは AccountClient#listPriceAllCountries(ServiceType)メソッドで呼び出すことができます - 利用可能なすべての国のサービス価格情報を取得します。

さらに、秘密管理のための便利なメソッド・オーバーロードが追加されました。サブアカウントではなく)メインアカウントのシークレットを管理したい場合、メソッドにAPIキーを提供する必要はありません。 VonageClient.

JWT検証

VonageからWebhookを受信する場合、トークンの署名を検証することでペイロードの真正性を確認することをお勧めします。これまでは手作業でしたが、v7.11.0 からは verifySignature(String jwt, String secret)ヘルパーメソッド VoiceClientMessagesClient.の新しい Jwt.verifySignatureメソッドに委譲するだけです。 com.vonage:jwtアーティファクトの新しいメソッドに委譲するだけです。JWTと共有シークレットを提供するだけです。トークンが与えられたシークレットによって署名された場合、このメソッドはtrueを返します。

サインオフ

Java SDKのバージョン8.0.0で知っておくべき変更は以上です。今後のアップデートについては com.vonage:server-sdkの下のリリースに注目してください!もし何か問題が見つかったり、機能強化の提案があれば、遠慮なく GitHubで問題を提起するまたは ツイッターまたは コミュニティ・スラック.Java SDKの最新バージョンでVonage APIを使用する素晴らしい体験ができることを願っています!

シェア:

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

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