https://d226lax1qjow5r.cloudfront.net/blog/blogposts/migration-guide-for-net-sdk-v7-0-0/net_sdk_updates.png

.NET SDK v7.0.0移行ガイド

最終更新日 April 9, 2024

所要時間:1 分

こんにちは、友人たち、

私たちの .NET SDKは最近、新しいメジャー・リリースを迎えました。 v7.0.0が利用可能になりました!

メジャーリリースということで、このバージョンへのアップデート中に副作用に遭遇するかもしれません。そのような問題を特定し、解決する手助けをするのがこのブログ記事です。

このリリースの全体的な目的は、ブレークチェンジを必要とする新機能をサポートし、コードベースの整理を始めることだ。

前提条件

この移行ガイドは、v6.X.Xから移行する場合に適用されます。 v6.16.0にアップグレードすることを強くお勧めします。 移行ガイド.

移行ステップ

廃止」のフラグが付けられたものはすべて削除された

新しいリリースにアップグレードする際、古いメソッドを使用していることを示す警告に気づいたかもしれません。実際、これらの変更には Obsoleteタグを付けました。

私たちが何かを廃止する際には、常に代用品があることに注意してください。

同期方式

これまでのところ、多くの機能が同期/非同期の両方の実装で利用できる。すべての同期メソッドは v7.0.0.まだ同期コンテキストでVonage APIを呼び出す必要がある場合は、非同期バージョンで .Resultまたは .Wait()で非同期バージョンを呼び出し、同期的に結果を待つ必要があります。

// Using v6.X.X
applicationClient.DeleteApplication(applicationId);

// Using v7.X.X and above
await applicationClient.DeleteApplicationAsync(applicationId);
// Or
applicationClient.DeleteApplicationAsync(applicationId).Wait();

AccountClient」のSubAccounts機能

SubAccountsの機能は、まだベータ版であった頃、SubAccountsの開発者によって実装されました。 AccountClientによって実装された。GAリリースでは、SubAccountsのすべての機能は、SubAccountsで利用可能です。 SubAccountsClientで利用できるようになりました。

// Using v6.X.X
var subAccount = await vonageClient.AccountClient.RetrieveSubAccountAsync(subAccountKey);
// Using v7.X.X and above
var request = GetSubAccountRequest.Parse(subAccountKey);
var subAccount = await vonageClient.SubAccountClient.GetSubAccountAsync(request);

'ApplicationClient'の'CreateApplicaitonAsync'

現在のメソッドにはタイプミスがあります。

// Using v6.X.X
var application = await applicationClient.CreateApplicaitonAsync(request);

// Using v7.X.X and above
var application = await applicationClient.CreateApplicationAsync(request);

VoiceClient'の'CreateCall'

この方法には3種類のサインがある。パラメータを持つものだけが残ります。 CallCommandパラメータを持つものだけが残り、プリミティブ・オブセッションを回避し、適切なValueObjectに依存します。

// Using v6.X.X
var callResponse = voiceClient.CreateCallAsync(toNumber, fromNumber, ncco);
var callResponse = voiceClient.CreateCallAsync(toEndpoint, fromNumber, ncco);
var callResponse = voiceClient.CreateCallAsync(callCommand);


// Using v7.X.X and above
var callResponse = voiceClient.CreateCallAsync(callCommand);

資格情報」のコンストラクタ

Credentials インスタンスの作成は、ファクトリメソッドまたは Configurationインスタンスから行う必要があります。コンストラクタは非表示になり、オブジェクトは不変のままになります。

を使用することを強くお勧めします。 拡張メソッドを使って動的に初期化することをお勧めします。 Credentialsファイルから appsettings.jsonファイルから動的に初期化することをお勧めします。

// Using v6.X.X
var credentials = new Credentials()
{
    ApiKey = apiKey,
};
var credentials = new Credentials(apiKey, apiSecret);
var credentials = Credentials.FromApiKeyAndSecret(apiKey, apiSecret);
var credentials = Credentials.FromAppIdAndPrivateKey(apiKey, apiSecret);


// Using v7.X.X and above
var credentials = Credentials.FromApiKeyAndSecret(apiKey, apiSecret);
var credentials = Credentials.FromAppIdAndPrivateKey(apiKey, apiSecret);
var credentials = configuration.BuildCredentials();
// Recommended
var credentials = serviceCollection.GetRequiredService<Credentials>();

Vonage URLへのアクセス

すべてのURLは、ネストされたオブジェクト(VonageUrls) に移動しました。 Configurationクラスの簡素化と複数リージョンのURLの使用を可能にするためです。

// Using v6.X.X
var url = configuration.NexmoApiUrl;
var url = configuration.RestApiUrl;
var url = configuration.VideoApiUrl;
var url = configuration.EuropeApiUrl;

// Using v7.X.X and above
var url = configuration.VonageUrls.Nexmo;
var url = configuration.VonageUrls.Rest;
var url = configuration.VonageUrls.Video;
var url = configuration.VonageUrls.Get(VonageUrls.Region.EMEA);

Input」Webhookオブジェクトの削除

この項目は、新しいマルチ入力機能により廃止されました。入力アクションに Dtmf引数を入力アクションに追加し MultiInputオブジェクトを使用してください。 ドキュメント.

Meetings APIにおける「ポルトガル語」の削除

この言語は削除され、「ポルトガル語-ブラジル語」となった。

// Using v6.X.X
var language = UserInterfaceLanguage.Pt;


// Using v7.X.X and above
var language = UserInterfaceLanguage.PtBr;

Voiceの'TalkCommand'と'TalkAction'から'VoiceName'を削除する。

このパラメータは廃止されました。 廃止されたによって廃止されました。

アプリケーションAPIのVoice Webhookに新しいタイムアウトを追加する

新しいタイムアウトの追加connection_timeout, socket_timeout) を追加した。他のウェブフックとは異なる特定の構造を作成するには、継承を解除する必要があります。 Capabilityを継承する。

設定キーの名前を'appSettings'から'vonage'に変更する。

設定をより明確にし、他のライブラリとの衝突の可能性を減らすため、ベースキーが更新された。

また、"Vonage. "がすべてのキーから削除され、セクションがすっきりした。最後に、いくつかのキーの名前が完全に変更されました:

Old Key New Key
Vonage.Vonage_key Api.Key
Vonage.Vonage_secret Api.Secret
Vonage.Vonage.Url.Api.Europe Url.Api.EMEA
N/A Url.Api.AMER
N/A Url.Api.APAC

v6.X.Xを使用

{
  "appSettings": {
    "Vonage.UserAgent": "...",
    "Vonage.Url.Rest": "...",
    "Vonage.Url.Api": "...",
    "Vonage.Url.Api.Europe": "...",
    "Vonage.Url.Api.Video": "...",
    "Vonage.Vonage_key": "...",
    "Vonage.Vonage_secret": "...",
    "Vonage.Application.Id": "...",
    "Vonage.Application.Key": "...",
    "Vonage.Security_secret": "...",
    "Vonage.Signing_method": "...",
    "Vonage.RequestsPerSecond": "...",
    "Vonage.RequestTimeout": "..."
  }
}

v7.X.X以上を使用

{
  "vonage": {
    "UserAgent": "...",
    "Url.Rest": "...",
    "Url.Api": "...",
    "Url.Api.EMEA": "...",
    "Url.Api.AMER": "...", 
    "Url.Api.APAC": "...",
    "Url.Api.Video": "...",
    "Api.Key": "...",
    "Api.Secret": "...",
    "Application.Id": "...",
    "Application.Key": "...",
    "Security_secret": "...",
    "Signing_method": "...",
    "RequestsPerSecond": "...",
    "RequestTimeout": "..."
  }
}

回答したWebhookで開始時刻をNull可能にする

で定義されているように スペックで定義されているように StartTimeは null 可能になりました。

ConversationAction' から 'EventUrl' と 'EventMethod' を削除する。

で定義されているように スペックで定義されているように Conversationアクションには EventUrlEventMethod.

VerifyV2 WhatsApp ワークフローで「差出人」を必須にする

この Fromプロパティは以前はオプションだったが、現在は必須となっている。

// Using v6.X.X
var workflow =  WhatsAppWorkflow.Parse(ValidToNumber);
var workflow =  WhatsAppWorkflow.Parse(ValidToNumber, ValidFromNumber);

// Using v7.X.X and above
var workflow =  WhatsAppWorkflow.Parse(ValidToNumber, ValidFromNumber);

結論

移行ガイドは GitHub リポジトリ.

何か問題があれば、遠慮なく GitHubまたは Vonage Developer Slackにご参加ください。また Xでフォローすることもできます。

それではまた!

シェア:

https://a.storyblok.com/f/270183/384x384/fdffb72c8b/guillaume-faas.png
Guillaume Faasシニア.Netデベロッパー

ギヨームはVonageのシニア.Netデベロッパー・アドボケイト。.Netで15年近く働いているが、ここ数年はSoftware Craftsmanshipの提唱に注力している。好きなトピックは、コード品質、テスト自動化、モビング、コード・カタなど。仕事以外では、妻や娘と過ごす時間、ワークアウト、ゲームを楽しんでいる。