Débutant

Et si l’on créait notre Skill Alexa avec Microsoft Azure et .Net ?

Introduction

Amazon présente dans sa documentation comment créer ses premiers skills avec AWS et les lambdas, mais si vous êtes comme moi fan des technologies Microsoft, vous vous posez peut-être la question “est-ce possible de faire la même chose avec ces technos ?”.
La réponse est bien sûr oui !
Dans cet article, nous allons voir comment créer une Skill Alexa avec .Net et Microsoft Azure.

Pourquoi Azure Functions ?

Pour développer une Skill Alexa, il est indispensable d’avoir un endpoint vers un service. En effet, c’est le service qui est responsable du traitement des données reçues par le serveur.

Prenons l’exemple d’une Skill qui fait le calcul de deux chiffres : c’est notre service qui fait le calcul et retourne le résultat vers le serveur, celui-ci traduit le résultat et l’envoie vers le device.

Dans notre cas, Azure Functions est idéal pour héberger notre service. En effet, nous pouvons tirer plusieurs avantages de ce service.

Sa flexibilité nous permet de développer directement dans le portail Azure ou avec un IDE, de notre choix.

Son modèle de tarification est intéressant, vu qu’il nous offre deux choix :

  • Consumption Plan : Les instances sont ajoutées de façon dynamique en fonction du besoin. Le prix est basé sur le nombre d’exécutions, la durée d’exécution et la mémoire utilisée.
  • App Service Plan : Comme pour les Web Apps, les fonctions sont exécutées sur des VM dédiées, et le prix est basé sur les SKU utilisés.

De plus, il supporte plusieurs langages comme le C#, F# et Javascript qui sont déjà disponibles, et d’autres langages qui sont en cours d’expérimentation. On peut également intégrer nos dépendances Nuget et NPM directement dans la fonction.

Dans notre cas, l’utilisation de ce service cloud nous simplifie la tâche, puisqu’une Skill Alexa ne demande qu’un endpoint pour envoyer la requête et recevoir la réponse.

En général, Azure Functions est idéal pour les scénarios simples.

Play it !

Afin de commencer à jouer avec Alexa et ses magnifiques compétences, on doit procéder à quelques étapes.

Alors, commençons par créer la Skill !

Créer la Skill Alexa

Nous allons créer une Skill pour SOAT qui, en l’invoquant nous donnera quelques informations à propos de cette magnifique boîte.

Pour commencer, il faut aller sur la console Alexa :

Cliquons sur « Create Skill » et sélectionnons « Français » comme langue.

Dans notre cas, nous choisissons le modèle Custom afin de personnaliser les actions de notre Skill.

Cette dernière est créée. Il nous manque quelques configurations pour la faire marcher.

Nous créons un Intent nommé PresentationIntent qui accepte les requêtes concernant la présentation de SOAT.

Cet Intent sera invoqué lorsque l’utilisateur utilisera les mots « culture » ou « présentation » dans sa demande.

Notre Skill est maintenant prête à recevoir et à identifier les requêtes.

Créer la fonction Azure

Dans cette deuxième partie, nous allons créer le cerveau de notre solution. C’est la fonction Azure qui va traiter la requête et qui renverra le résultat sous forme de texte.

Commençons par aller sur le portail Azure.

Sélectionner le service « Function App » dans la partie « Compute ». Sur la page suivante, remplir les champs requis.

 

 

Pour le « Hosting Plan », il faut choisir entre le « Consumption Plan » ou le « App Service Plan » :

Après la création de la fonction dans le portail, nous recevons le lien à utiliser ultérieurement.

Développer la fonction dans Visual Studio

Passons maintenant à la troisième partie, qui est le développement de la fonction.

Pour commencer, on crée un projet de type « Azure Functions » dans Visual Studio.

Pour avoir cette option dans l’IDE, il nous faut installer le workload “Azure Development” lors de l’installation/modification de Visual Studio.

Et on sélectionne « Http Trigger » en tant que trigger par défaut et « Function » pour limiter les droits d’accès (cela peut être modifié dans le code).


Afin de faciliter le développement de notre fonction, on utilise la bibliothèque Alexa.Net qui implémente déjà les entités qui vont nous aider à recevoir et à traiter les requêtes, puis à renvoyer la réponse.

Ci-dessous, notre fonction. Elle contient trois grandes parties :

  • Identification du type de la requête :
    • Launch Request : lors du lancement de la Skill
    • Intent Request : action demandée par l’utilisateur. Dans ce cas, on a déjà créé un Intent nommé PresentationIntent.
  • Préparation de la réponse
  • Envoi de la réponse


Avant de publier la fonction dans Azure, on peut la tester en local grâce à Postman :

Dans notre cas, nous avons essayé d’invoquer la fonction avec une Launch Request, c’est-à-dire que l’on simule le lancement de l’application. Ci-dessus le résultat.

Finalement, on publie la fonction dans Azure. On choisit la fonction créée précédemment.

  

Et on publie !

Maintenant, notre fonction est prête à recevoir et à traiter les requêtes.

Faire le lien entre les deux

Dans cette dernière partie, on fait le lien entre les deux acteurs de notre solution :

  • La Skill
  • La fonction Azure

Nous avons maintenant besoin de l’endpoint de la fonction, qui sera appelé par la Skill.

Retournons alors vers la fonction dans Azure. Dans la partie « Manage », on trouve la clé de la fonction.


L’endpoint est composé du lien du service, concaténé au nom de la fonction et à sa clé :

https://{service}.azurewebsites.net/api/{FunctionName}?code={FunctionKey}

Dans la console Amazon, dans la partie « Endpoint » :

  • On sélectionne HTTPS
  • On insère le lien composé précédemment
  • On sélectionne « My development endpoint is a sub-domain of a domain that has a wildcard certificate from a certificate authority »

Finalement, il faut sauvegarder le modèle, puis cliquer sur « Build Model ».



Notre solution est maintenant prête !

Pour la tester, nous avons deux choix :

  • Si l’on possède une enceinte Amazon Echo, la Skill sera disponible dans notre compte
  • Le cas échéant, Amazon met à notre disposition une partie de test en ligne comme montré ci-dessous



 

Notes

[1]  Amazon Developer

[2]  Blog Azure

 

Pour aller plus loin :

Informatique Serverless

Documentation Azure Functions

Learn What You Can Build – Alexa Skills Kit

© SOAT
Toute reproduction interdite sans autorisation de l’auteur

Nombre de vue : 175

COMMENTAIRES 1 commentaire

AJOUTER UN COMMENTAIRE