
Teilen Sie:
Guillaume ist ein Senior .Net Developer Advocate bei Vonage. Er arbeitet seit fast 15 Jahren in .Net und hat sich in den letzten Jahren auf die Förderung von Software Craftsmanship konzentriert. Zu seinen Lieblingsthemen gehören Codequalität, Testautomatisierung, Mobbing und Code Katas. Außerhalb der Arbeit verbringt er gerne Zeit mit seiner Frau und seiner Tochter, treibt Sport oder spielt Spiele.
Migrationsanleitung für .NET SDK v7.0.0
Hallo Freunde,
Unser .NET SDK hat kürzlich eine neue Hauptversion erhalten - v7.0.0 ist jetzt verfügbar!
Da es sich um eine Hauptversion handelt, können bei der Aktualisierung auf diese Version Nebenwirkungen auftreten. Genau darum geht es in diesem Blogbeitrag: Ihnen zu helfen, diese Probleme zu erkennen und zu beheben.
Der Hauptzweck dieser Version ist es, neue Funktionen zu unterstützen, die eine grundlegende Änderung erforderten, und die Codebasis zu entrümpeln.
Voraussetzungen
Diese Migrationsanleitung gilt für die Migration von v6.X.X - Wenn Sie noch mit v5.X.X arbeiten, empfehlen wir dringend ein Upgrade auf v6.16.0 zu aktualisieren, indem Sie die spezielle Migrationsanleitung.
Schritte der Migration
Alles, was mit dem Vermerk "veraltet" gekennzeichnet ist, wurde entfernt
Beim Upgrade auf eine neuere Version haben Sie vielleicht eine Warnung bemerkt, die Sie darauf hinweist, dass Sie eine veraltete Methode verwenden. In der Tat haben wir diese Änderungen mit einem Obsolete Tag gekennzeichnet.
Bitte beachten Sie, dass es immer einen Ersatz gibt, wenn wir etwas aus dem Verkehr ziehen.
Synchrone Methoden
Bislang sind viele Funktionen sowohl mit synchroner als auch mit asynchroner Implementierung verfügbar. Alle synchronen Methoden wurden entfernt in v7.0.0. Wenn Sie weiterhin eine Vonage-API in einem synchronen Kontext aufrufen müssen, müssen Sie die asynchrone Version entweder mit .Result oder .Wait() aufrufen, um synchron auf das Ergebnis zu warten.
// Using v6.X.X
applicationClient.DeleteApplication(applicationId);
// Using v7.X.X and above
await applicationClient.DeleteApplicationAsync(applicationId);
// Or
applicationClient.DeleteApplicationAsync(applicationId).Wait(); SubAccounts Funktionen auf 'AccountClient'
Die Funktionen von SubAccounts wurden ursprünglich von einem Mitwirkenden auf der Website AccountClient implementiert, als sich das Produkt noch in der Betaphase befand. Mit der GA-Version sind alle SubAccounts-Funktionen auf der SubAccountsClientverfügbar, wodurch frühere Funktionen überflüssig werden.
// 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); CreateApplicaitonAsync' auf 'ApplicationClient'
Die aktuelle Methode enthält einen Tippfehler.
// Using v6.X.X
var application = await applicationClient.CreateApplicaitonAsync(request);
// Using v7.X.X and above
var application = await applicationClient.CreateApplicationAsync(request); CreateCall' auf 'VoiceClient'
Bei dieser Methode werden drei verschiedene Signaturen angeboten. Nur diejenige mit einem CallCommand Parameter wird beibehalten, um Primitive Obsession zu vermeiden und sich auf ein richtiges ValueObject zu verlassen.
// 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); Konstrukteure auf 'Credentials'
Die Erstellung einer Credentials-Instanz sollte mit einer Factory-Methode oder aus einer Configuration Instanz. Konstruktoren werden ausgeblendet, und das Objekt bleibt unveränderlich.
Wir empfehlen Ihnen dringend die Verwendung unserer Erweiterungsmethoden zur dynamischen Initialisierung Credentials aus Ihrer appsettings.json Datei.
// 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>(); Zugang zu Vonage-URLs
Alle URLs wurden in ein verschachteltes Objekt (VonageUrls) verschoben, um die Configuration Klasse zu vereinfachen und URLs für mehrere Regionen zu ermöglichen.
// 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); Webhook-Objekt 'Eingabe' entfernen
Dieser Artikel ist aufgrund der neuen Multi-Input-Funktionalität überflüssig geworden. Bitte fügen Sie die Dtmf Argumente zu Ihrer Eingabeaktion hinzu und verwenden Sie das MultiInput Objekt, wie in unserer Dokumentation.
Portugiesische" Sprache in Meetings API entfernen
Diese Sprache wurde zugunsten von "Portugiesisch-Brasilianisch" gestrichen.
// Using v6.X.X
var language = UserInterfaceLanguage.Pt;
// Using v7.X.X and above
var language = UserInterfaceLanguage.PtBr; VoiceName" aus "TalkCommand" und "TalkAction" in Voice entfernen
Dieser Parameter wurde überflüssig durch die Felder Sprache und Stil.
Neue Timeouts für Voice Webhooks in der Application API hinzufügen
Hinzufügen neuer angeforderter Zeitüberschreitungen (connection_timeout, socket_timeout) bei Voice Webhooks. Erstellen einer spezifischen Struktur, die sich von anderen Webhooks unterscheidet, um die Capability Vererbung.
Umbenennen des Einstellungsschlüssels von 'appSettings' in 'vonage'
Um die Einstellungen eindeutiger zu machen und die Gefahr von Konflikten mit anderen Bibliotheken zu verringern, wurde der Basisschlüssel aktualisiert.
Außerdem wurde "Vonage." von allen Tasten entfernt, um den Abschnitt zu entrümpeln. Schließlich wurden einige Tasten komplett umbenannt:
| 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 |
Verwendung von 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": "..."
}
}Verwendung von v7.X.X und höher
{
"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": "..."
}
} Startzeit bei beantworteten Webhooks auf Null setzen
Gemäß der Definition in den Spezifikationendefiniert, ist die StartTime ist jetzt löschbar.
Entfernen Sie 'EventUrl' und 'EventMethod' aus 'ConversationAction'.
Gemäß der Definition in den Spezifikationenist die Conversation Aktion nicht über ein EventUrl oder eine EventMethod.
Absender" im VerifyV2-WhatsApp-Workflow obligatorisch machen
Die Eigenschaft From war früher optional - jetzt ist sie obligatorisch.
// 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); Schlussfolgerung
Die Migrationsanleitung ist auch in unserem GitHub-Repository.
Zögern Sie nicht, jedes Problem auf GitHub oder schließen Sie sich uns auf dem Vonage Entwickler-Slackund wir werden auf Sie zurückkommen. Sie können uns auch folgen auf X folgen, um über unsere neuesten Nachrichten auf dem Laufenden zu bleiben.
Viel Spaß beim Programmieren, und bis bald!
Teilen Sie:
Guillaume ist ein Senior .Net Developer Advocate bei Vonage. Er arbeitet seit fast 15 Jahren in .Net und hat sich in den letzten Jahren auf die Förderung von Software Craftsmanship konzentriert. Zu seinen Lieblingsthemen gehören Codequalität, Testautomatisierung, Mobbing und Code Katas. Außerhalb der Arbeit verbringt er gerne Zeit mit seiner Frau und seiner Tochter, treibt Sport oder spielt Spiele.