Comment j'ai appris à Yandex Alice à parler de jouets sexuels

Nous intégrons Yandex.Alisa et les sex-shops via Spring Boot.

Le sujet des assistants vocaux prend de l'ampleur, et j'ai décidé de rejoindre cette tendance, en intégrant le plus grand fournisseur en gros de biens intimes et Yandex.Alisa.

Idée : le fournisseur a des comptes personnels des propriétaires de boutiques en ligne, et il est nécessaire de fournir des données analytiques du fournisseur via le canal vocal d'Alice.

L'intégration se composait de deux parties:

  • Intégration du service web et de l'API REST du fournisseur de marchandises.
  • Intégration de Yandex.Alice et d'un service Web pour le traitement des demandes des utilisateurs.

Intégration du service web et de l'API REST du fournisseur de marchandises


Le service doit comprendre exactement ce que l'utilisateur a demandé et demander ces données au serveur du fournisseur. Nous avons décidé d'écrire un service sur Spring Boot.

Configuration du projet


Nous créons un référentiel dans Git et en utilisant spring initializr nous déployons le projet sur spring boot (nous spécifions le web dans les dépendances).

La demande au service est au format JSON. Il a une structure bien documentée , donc générer des classes est assez simple:

image

De manière pratique, les mots clés sont mis en surbrillance dans la demande, comme une adresse reconnue. Ils sont situés dans le bloc “entities” :

image

Mais dans notre cas, il était plus pratique d'utiliser le champ Command . Il contient le texte dicté par l'utilisateur. Étant donné que le service d'intégration est engagé dans la reconnaissance du sens, nous devons analyser les demandes. Ils sont bien séparables les uns des autres (demandes de commandes passées, demandes de commandes en cours de traitement), nous avons donc décidé d'utiliser des expressions régulières pour les analyser.

L'intégration avec le fournisseur a été implémentée via la bibliothèque Apache httpclients et la désérialisation des réponses XML via jaxb.

Nous avons donc trié la demande et demandé des données au fournisseur. Mais Alice est une fille stricte et n'acceptera donc pas notre réponse au plus tard trois secondes plus tard. Et l'utilisateur peut souhaiter obtenir une description comparative de son magasin au cours des deux dernières années, ce qui prendra plus de temps. Pour résoudre ce problème, nous avons activé la mise en cache via la bibliothèque ehCache et configuré le chargement des données utilisateur. Face à une nouvelle nuance: Alice ne donne presque aucune donnée utilisateur personnalisée. Autrement dit, vous ne voyez même pas de courrier électronique dans la demande entrante. Il n'y a que userId qui affiche l'identifiant unique du périphérique. Il a été fait la clé pour identifier les utilisateurs.

La clé est là, le cache est, il reste à comprendre quand y charger des informations. L'utilisateur ne demande pas immédiatement de données, mais lance d'abord la compétence (c'est le terme utilisé dans Alice, j'en parlerai plus loin ci-dessous). Pour le serveur, cela ressemble à une demande avec une balise de Command vide. À ce stade, vous pouvez commencer à télécharger les données client, puis au moment de l'envoi de la première demande utilisateur, toutes les données ont déjà été téléchargées sur notre service.

Pour des tests complets et des travaux supplémentaires dans la prod, nous avons décidé de déployer l'application dans le cloud sur Heroku. Pour ce faire, accédez au site Web Heroku , inscrivez-vous, téléchargez heroku cli et installez-le. Ouvrez ensuite la console et entrez la heroku login . Allez dans le répertoire avec le projet cd ~ / myapp et exécutez heroku create .

Lorsque vous créez l'application, Git crée un référentiel distant nommé heroku, qui est associé à votre référentiel Git local. Par défaut, Heroku génère un nom aléatoire sur le serveur pour votre projet. Vous pouvez le remplacer en passant le nom de l'application à l'aide de heroku create myapp .

Pour vérifier le lancement de l'application, exécutez la commande.

heroku ps:scale web=1

Et si vous devez suivre le chemin «/», nous heroku open .
Le premier point d'intégration est prêt.

Intégration de Yandex.Alice et service de traitement des demandes


Nous mettons en œuvre l'intégration par la création de la soi-disant compétence sur la plateforme Yandex. Tout d'abord, inscrivez-vous dans Yandex, puis accédez à la page du développeur . Cliquez sur "créer un dialogue" et sélectionnez le type de dialogue:

image

Sur l'onglet "Paramètres" et vous devez remplir les champs:

image

  • Nom de la compétence - le nom qui sera affiché dans le catalogue d'Alice. Avec elle, l'utilisateur pourra activer la compétence, par exemple, "Lancer la compétence [Nom de la compétence]".
  • Nom d'activation - ici, vous pouvez spécifier diverses options pour accéder à la compétence. Par défaut, une option pour le nom d'activation est le nom de la compétence.
  • Un exemple de demande est une phrase par laquelle Alice active cette compétence. Les demandes seront présentées sous forme de boutons dans l'annuaire après publication.
  • URL du Webhook - vous devez spécifier l'URL de notre service Web qui traitera les demandes des utilisateurs.
  • Yandex.Cloud - Yandex peut accorder une subvention à son cloud, mais nous déploierons le service sur heroku, donc nous ne le cochons pas.
  • Voix - ici, vous pouvez choisir la voix que votre compétence parlera. Il existe différentes variantes d'hommes et de femmes. Mais cela vaut la peine de considérer que l'utilisateur dira très probablement: "Alice, lance la compétence", et si Alice répond avec le baryton masculin, cela peut être quelque peu déroutant.
  • Limitations sur les plates-formes utilisées - si un écran est nécessaire lorsque vous travaillez avec une compétence. Dans notre cas, non, alors ne cochez pas.
  • Confidentialité - cochez la case si vous ne voulez pas que la compétence soit reflétée dans le catalogue.
  • Site de vérification de la marque - L'adresse du site pour la compétence. La compétence pour laquelle vous avez rempli ce champ ne sera modérée que si vous avez confirmé les droits sur le site spécifié dans Yandex.Webmaster.
  • Catégorie - dans notre cas, c'est «affaires et finances».
  • Description - pourquoi avez-vous besoin de vos compétences. La description des compétences sera affichée dans le catalogue des compétences et sera disponible pour les utilisateurs.
  • Notes pour le modérateur - peut-être le domaine le plus intéressant. Pour entrer dans le catalogue, la compétence doit être modérée, ce qui signifie qu'elle doit respecter certaines règles décrites ici. Dans ce champ, vous pouvez décrire le processus de test. Par exemple, comment passer par l'autorisation et un scénario utilisateur typique.
  • Restrictions d'âge - malgré l'objet de la compétence, nous transmettrons des données adaptées à tout groupe d'âge. Par conséquent, ne cochez pas.
  • L'icône est un must :)

Enregistrez la boîte de dialogue. Toutes les modifications apportées au paramètre de compétence ne prennent effet qu'après avoir cliqué sur le bouton "Enregistrer".

Nous avons configuré l'intégration, écrit le service, vous pouvez maintenant le tester.

Accédez à l'onglet "Test".

image

Ici, vous pouvez vérifier les performances de la compétence. Pour des raisons de commodité, nous avons ajouté un accès rapide aux boutons de fonction à la compétence.

Il y a des limites: vous ne pouvez pas vérifier la compétence pour l'exactitude de la phrase de départ et vous ne pouvez pas vérifier l'entrée / sortie vocale. Et s'il ne devrait pas y avoir de problème avec la phrase, la prononciation correcte des réponses ne sera vérifiée qu'après la publication de la compétence.
Après tous les tests, la compétence peut être envoyée pour modération. Pour ce faire, allez dans l'onglet "Informations générales" et cliquez sur "Modération".

image

Après la modération, le bouton Publier apparaîtra à la place de ce bouton. Après la publication, la compétence apparaîtra dans le catalogue officiel Yandex.

Caractéristiques et limitations


Pour le moment, les compétences sont quelque peu distinctes d'Alice elle-même (je dois dire «lancer la compétence»), ce qui rend difficile de percevoir Alice comme une assistante vocale à part entière. Ce serait formidable de façonner votre contexte de compétences et de poser des questions directement à Alice. Il n'y a aucun moyen d'obtenir des informations utilisateur autres que userId, qui est l'identifiant du périphérique. Par conséquent, chaque appareil doit être ré-autorisé, ce qui rend difficile le stockage d'une seule session utilisateur. De plus, la compétence ne peut pas envoyer de messages push, elle ne fonctionnera donc pas pour créer la compétence de rappel.

D'un autre côté, les compétences peuvent être une bonne plate-forme pour mettre en œuvre la commande vocale, par exemple, les appareils électroménagers. En outre, la compétence peut être utile pour la formation ou la réalisation d'expériences, pour clarifier les informations sur les commandes, les prix, etc. En général, où les utilisateurs peuvent poser une question exacte courte ou donner une commande courte.

Source: https://habr.com/ru/post/fr466021/


All Articles