Construire une compétence Alexa multi-streaming avec le kit de compétences Alexa

Construire une compétence Alexa multi-streaming avec le kit de compétences Alexa | de Yi Ai | HackerNoon.com | Moyen





Construire une compétence Alexa multi-streaming avec le kit de compétences Alexa

J'ai reçu mon appareil Echo la semaine dernière et j'ai pensé que ce serait cool de développer une compétence Alexa personnalisée. J'ai donc pris tout le samedi pour développer une compétence de stations de radio, c'est excitant de demander à Alexa de jouer mes stations de radio préférées pendant que je programme 🙂.

Dans cet article, je montre un exemple de compétence de création de compétences personnalisées pour Echo à l'aide du kit de compétences Alexa (ASK) v2+ pour Nodejs. Le projet est dérivé et modifié à partir de Skill Sample NodeJS Audio Player .

Cas d'utilisation

Ma compétence radio est la façon d'écouter vos multiples stations de radio, vous pouvez dire "Alexa, jouez <nom de la station de radio>" et Alexa commencera à diffuser la station de radio. Vous pouvez ajouter ou supprimer des stations, les stations de radio sont stockées dans DynamoDB. afin que vous ayez une expérience de lecture de musique complètement personnalisée.

Conditions préalables

Nous avons besoin d'un compte AWS et d'un compte développeur Amazon pour créer une compétence Alexa.

  1. Nous devons installer AWS CLI avecnpm install -g ask-cli.
  2. Configurez l' AWS CLI avec $ ask init.
  3. Nous devons installer et initialiser ASK CLI .

Il s'agit d'un démarrage rapide de l'interface de ligne de commande Alexa Skills Kit .

Créer une table DynamoDb

Nous avons besoin de 2 tables DynamoDB, MyRadiosSession stocke les sessions utilisateur et MyRadios stocke l'URL de diffusion des stations de radio.

$ aws dynamodb create-table --table-name MyRadios --attribute-definitions AttributeName=id,AttributeType=S --key-schema AttributeName=id,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5$ aws dynamodb create-table --table-name MyRadiosSession --attribute-definitions AttributeName=id,AttributeType=S --key-schema AttributeName=id,KeyType=HASH --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5

Ensuite, nous devons insérer les URL des stations de radio en streaming dans la table MyRadio.

aws dynamodb batch-write-item --request-items file://./request-stations.json

Voici le contenu de request-stations.json.

Créer une politique

Nous avons besoin d'une stratégie avec les autorisations DynamoDb et Cloud Watch. Créons-le.

$ aws iam create-policy --policy-name my-radio-skill-policy --policy-document file://./policy.json

La stratégie de fichier est un document JSON dans le dossier actuel qui accorde des autorisations aux tables Dynamodb et à la journalisation Cloudwatch :

Notez que vous devez remplacer ACCOUNT_ID par votre identifiant de compte AWS .

Une fois la stratégie créée, nous obtenons l'ARN de la stratégie à partir de la sortie, copiez l'ARN, nous devrons l'attacher à notre fonction lambda après le déploiement de la compétence à la dernière étape.

Créer une nouvelle compétence

Une fois votre compte configuré, nous allons maintenant créer notre compétence Alexa personnalisée.

$ ask new -n mesradios --lambda-name ask-custom-mradio-default

Sélectionnez Node.js V8 comme runtime et hello world comme modèle.

Cette commande crée un répertoire de projet "myradios" avec tous les fichiers requis. Nous avons également configuré le nom d'une fonction lambda pour qu'il soit "ask-custom-mradio-default".

Le myradiosrépertoire contient les fichiers suivants :

  • skill.json- La configuration de la compétence
  • models/en-US.json- Un modèle d'interaction de la compétence pour les paramètres régionaux en-US.
  • lambda/custom/index.js- Une fonction lambda de la compétence
  • lambda/custom/package.json- Le fichier de package npm
  • .ask/config- déployer le fichier de configuration des paramètres

Configurer le manifeste des compétences

Le manifeste de compétence est la représentation JSON de votre compétence et fournit à Alexa toutes les métadonnées requises. Commençons à éditer skill.json , changeons examplePhrases en :

"examplePhrases": [ 
"Alexa, ouvre Mes Radios",
"Alexa, demande à Mes Radios de jouer ABC NEWS",
"Alexa, dis à Mes Radios de jouer Fox FM"
],

Nous devons également modifier le résumé et les descriptions qui s'affichent lors de la visualisation de la liste des compétences.

Passons ensuite au modèle d'interaction models/en-US.json , l'exemple de modèle devrait ressembler à ce qui suit :

Notez que la "STATION" est un emplacement personnalisé, vous pouvez ajouter autant de noms de stations de radio dans les valeurs d'emplacement. Des exemples d'énoncés pour la structure de la phrase devraient vous plaire

"commencer la {STATION}",             
"commencer la lecture de la {STATION}",
"démarrer la {STATION}",
"commencer la lecture de la {STATION}"

Les machines à sous sont un accessoire très puissant pour créer une compétence Alexa personnalisée. Par exemple, la déclaration "Parlez-moi de {joueur}" signifie que l'utilisateur peut demander notre compétence sur n'importe quel joueur d'échecs du joueur de machine à sous. De plus, plusieurs emplacements offrent la possibilité d'utiliser des boîtes de dialogue dans lesquelles la compétence Alexa invite l'utilisateur à remplir toutes les valeurs d'emplacement afin de réaliser l'intention.

Création de la fonction AWS Lambda

Une fois le modèle d'interaction créé, nous devons créer et configurer la fonction AWS lambda lambda/custom/index.js.

En haut du fichier, nous importons le SDK et lui attribuons une Alexaconstante pour une utilisation ultérieure :

const Alexa = require('ask-sdk');

Déplacez-vous ensuite vers le bas du fichier, nous pouvons voir le code suivant :

const skillBuilder = Alexa.SkillBuilders.standard();     exports.handler     = 
skillBuilder . ,
CanFulfillIntentRequestHandler ) _ _ _ _ _ _ _ _ _ _ _ _

















.addRequestInterceptors(LoadPersistentAttributesRequestInterceptor) .addResponseInterceptors(SavePersistentAttributesResponseInterceptor).addErrorHandlers(ErrorHandler)
.withAutoCreateTable(false)
.withTableName(constants.skill.dynamoDBTableName)
.lambda();

C'est ici que nous enregistrons vos intercepteurs, en ajoutant requestHandler au skillBuilder en utilisant .addRequestInterceptorsLa .lambda()méthode sérialise l'objet en JSON prêt à être lu par la compétence Alexa.

Passons maintenant aux gestionnaires d'intention, les intercepteurs de requête et de réponse d'Alexa Skill reçoivent une instance HandlerInput lorsqu'ils sont invoqués. Prenons LaunchRequestHandlerun exemple :

Lorsqu'un client lance une skill en disant « Alexa, ouvre ma radio », notre skill reçoit une requête de type « LaunchRequest ». handlerInput.requestEnvelope.request.type === “LaunchRequest”dans la fonction "canHandle" s'assure qu'il ne ferait que gérer les demandes de lancement.

Tous les autres gestionnaires d'intention sont assez similaires, certaines des intentions utilisent reprompt(speechText)Cela donne la commande à Alexa d'attendre une réponse d'un utilisateur, Alexa prononce la nouvelle invite si le microphone a été ouvert pendant huit secondes sans intervention de l'utilisateur.

Maintenant que vous avez vu tous ces détails sur Alexa Skill Development, nous sommes prêts à déployer et tester la compétence.

Déployer la compétence

Pour déployer la compétence, exécutez la commande suivante .

$ask déployer

La commande ask deploy active automatiquement votre compétence déployée, elle crée une fonction lambda, un rôle IAM et les relie.

Attacher la stratégie au rôle IAM

Le kit de compétences Alexa créerait un rôle IAM par défaut "ask-lambda-myradio" pour notre fonction lambda après le déploiement de la compétence. Nous pouvons maintenant attacher notre stratégie créée à l'étape précédente au rôle IAM de la fonction lambda.

$ aws iam attach-role-policy --role-name ask-lambda-myradio --policy-arn "arn:aws:iam::ACCOUNT_ID:policy/my-radio-skill-policys"

C'est à peu près ça! nous pouvons maintenant utiliser nos compétences depuis votre appareil ou votre simulateur.

J'espère que vous avez trouvé cet article utile, vous pouvez trouver le projet complet dans mon référentiel GitHub .

Commentaires

Posts les plus consultés de ce blog

💥 TOP Best Chat GPT Prompts for Marketers - 2024

La liste de contrôle SEO

Meilleurs outils de référencement 🛠 organisée par Saijo George

Insérer un formulaire de contact - Zbooing : Astuces pour Google Sites

100 outils pour lancer sa startup sans argent (mais pas sans talent)

30 prompts marketing ChatGPT à utiliser d'urgence ! | Conseils Rédaction Web

💥Top BEST invites ChatGPT pour le succès du dropshipping *° 2024

Questions et réponses sur l'évaluation de la certification YouTube Music en 2021 + examen final Certification Ateliers Numériques 2022

La liste de contrôle SEO complète en 51 points pour 2024

Les meilleurs GPTs pour vous aider dans votre travail de rédaction