
Partager:
Guillaume est Senior Developer Advocate chez Vonage. Il travaille dans le domaine de .Net depuis près de 15 ans et s'est concentré sur la promotion du Software Craftsmanship au cours des dernières années. Ses sujets de prédilection sont la qualité du code, l'automatisation des tests, le mobbing et les katas du code. En dehors du travail, il aime passer du temps avec sa femme et sa fille, faire de l'exercice ou jouer.
Guide de migration pour .NET SDK v7.0.0
Bonjour les amis,
Notre SDK .NET a accueilli une nouvelle version majeure récemment - v7.0.0 est maintenant disponible !
S'agissant d'une version majeure, il se peut que vous rencontriez des effets secondaires lors de la mise à jour vers cette version. C'est l'objet de cet article de blog : vous aider à identifier et à résoudre ces problèmes.
L'objectif global de cette version est de prendre en charge les nouvelles fonctionnalités qui ont nécessité un changement radical et de commencer à désencombrer la base de code.
Conditions préalables
Ce guide de migration s'applique à la migration depuis la version 6.X.X - Si vous êtes toujours sur la version 5.X.X, nous vous recommandons vivement de mettre à jour vers la version v6.16.0 en utilisant le guide de migration.
Étapes de la migration
Tout ce qui a été marqué d'une annotation "obsolète" a été supprimé
Lors de la mise à jour vers une version plus récente, vous avez peut-être remarqué un avertissement indiquant que vous utilisez une méthode obsolète. En effet, nous avons signalé ces changements à l'aide d'une balise Obsolete pour signaler ces changements.
Veuillez noter qu'il y a toujours un substitut lorsque nous déclassons quelque chose.
Méthodes synchrones
Jusqu'à présent, de nombreuses fonctionnalités sont disponibles avec une implémentation à la fois synchrone et asynchrone. Toutes les méthodes synchrones ont été supprimées dans la v7.0.0. Si vous devez toujours appeler une API de Vonage dans un contexte synchrone, vous devrez appeler la version asynchrone avec soit .Result ou .Wait() pour attendre le résultat de manière synchrone.
// Using v6.X.X
applicationClient.DeleteApplication(applicationId);
// Using v7.X.X and above
await applicationClient.DeleteApplicationAsync(applicationId);
// Or
applicationClient.DeleteApplicationAsync(applicationId).Wait(); Subaccounts Features on 'AccountClient' (Caractéristiques des Subaccounts)
Les fonctionnalités de Subaccounts ont été initialement mises en œuvre par un contributeur sur le site Web de AccountClient alors que le produit était encore en version bêta. Avec la version GA, toutes les fonctionnalités de Subaccounts sont disponibles sur la page SubAccountsClientce qui rend les fonctionnalités précédentes obsolètes.
// 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' sur 'ApplicationClient'
La méthode actuelle contient une coquille.
// Using v6.X.X
var application = await applicationClient.CreateApplicaitonAsync(request);
// Using v7.X.X and above
var application = await applicationClient.CreateApplicationAsync(request); CreateCall" sur "VoiceClient".
Cette méthode propose trois signatures différentes. Seule celle avec un paramètre CallCommand sera conservée afin d'éviter l'obsession primitive et de s'appuyer sur un ValueObject approprié.
// 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); Constructeurs sur "Credentials
La création d'une instance de Credentials doit être effectuée à l'aide d'une méthode d'usine ou à partir d'une instance de Credentials. Configuration instance. Les constructeurs seront cachés et l'objet restera immuable.
Nous vous recommandons vivement d'utiliser nos méthodes d'extension pour initialiser dynamiquement Credentials à partir de votre fichier appsettings.json à partir de votre fichier
// 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>(); Accès aux URL de Vonage
Tous les URL ont été déplacés vers un objet imbriqué (VonageUrls) afin de simplifier la classe Configuration et de permettre l'utilisation d'URL multirégionales.
// 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); Supprimer l'objet Webhook 'Input
Cet article est devenu obsolète en raison de la nouvelle fonctionnalité d'entrée multiple. Veuillez ajouter les Dtmf à votre action de saisie et utilisez l'objet MultiInput comme le recommande notre documentation.
Supprimer la langue "portugais" dans l'API Meetings
Cette langue a été supprimée au profit du "portugais-brésilien".
// Using v6.X.X
var language = UserInterfaceLanguage.Pt;
// Using v7.X.X and above
var language = UserInterfaceLanguage.PtBr; Supprimer 'VoiceName' de 'TalkCommand' et 'TalkAction' dans Voice
Ce paramètre a été rendu obsolète par les champs de langue et de style.
Ajout de nouveaux délais d'attente pour les Webhooks Voice dans l'API d'application
Ajout de nouveaux délais demandés (connection_timeout, socket_timeout) sur les webhooks Voice. Création d'une structure spécifique, différente des autres webhooks, nécessaire pour briser l'héritage. Capability l'héritage.
Renommer la clé Settings de 'appSettings' à 'vonage'
Afin de rendre les paramètres plus explicites et de réduire les risques de conflit avec d'autres bibliothèques, la clé de base a été mise à jour.
En outre, "Vonage." a été supprimé de toutes les touches afin d'alléger la section. Enfin, quelques clés ont été complètement renommées :
| 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 |
Utilisation de la 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": "..."
}
}Utilisation de la version 7.X.X et supérieure
{
"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": "..."
}
} Rendre l'heure de début Nullable sur le Webhook répondu
Comme défini dans les spécificationsl'élément StartTime est désormais nullable.
Supprimer 'EventUrl' et 'EventMethod' de 'ConversationAction'.
Comme défini dans les spécificationsl'action Conversation n'a pas de EventUrl ou un EventMethod.
Rendre le mot "From" obligatoire dans le flux de travail WhatsApp de VerifyV2
La propriété From était facultative, elle est désormais obligatoire.
// 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); Conclusion
Le guide de migration est également disponible sur notre dépôt dépôt GitHub.
N'hésitez pas à signaler tout problème sur GitHub ou à nous rejoindre sur le Slack des développeurs de Vonageet nous vous répondrons. Vous pouvez également nous suivre sur X pour rester au courant de nos dernières nouvelles.
Bon codage et à bientôt !
Partager:
Guillaume est Senior Developer Advocate chez Vonage. Il travaille dans le domaine de .Net depuis près de 15 ans et s'est concentré sur la promotion du Software Craftsmanship au cours des dernières années. Ses sujets de prédilection sont la qualité du code, l'automatisation des tests, le mobbing et les katas du code. En dehors du travail, il aime passer du temps avec sa femme et sa fille, faire de l'exercice ou jouer.