Comment capturer le texte reconnu d'Echo?

13

Je sais que certaines compétences peuvent capturer du texte parlé, comme lors de l'ajout de listes de tâches et de listes de courses, et des compétences tierces peuvent également le faire, par exemple. SMS avec Molly .

Alors, comment font-ils cela? Existe-t-il un appel API qui capture le texte reconnu et le stocke quelque part?

Graham Chiu
la source

Réponses:

8

Des compétences personnalisées peuvent capturer du texte et les envoyer à l'API de votre compétence.

Si vous n'êtes pas complètement familier avec le fonctionnement d'Alexa Skills, voici un bref résumé:

  • Tout d'abord, vous enregistrez votre compétence auprès d'Amazon , en fournissant un schéma d'intention et des exemples d'énoncés . Le schéma d'intention définit les actions qui peuvent être effectuées et les emplacements pour les données personnalisées à envoyer à votre API. Les exemples d'énoncés fournissent des exemples de la façon dont un utilisateur peut déclencher chaque intention.

  • Lorsque l'utilisateur active votre compétence, Alexa essaie de faire correspondre ce qu'il a dit à l'un des exemples d'énoncés de votre compétence. Si elle fait partie, il envoie une demande HTTPS à votre serveur pour demander une réponse.

  • Votre serveur fournit une réponse (si tout se passe bien), puis Alexa donnera un retour à l'utilisateur qui a déclenché votre compétence.

La AMAZON.LITERALfente vous permet d'accepter pratiquement n'importe quelle entrée. Notez qu'il n'est actuellement pris en charge que dans la région anglaise (États-Unis) - les compétences en anglais (Royaume-Uni) et en allemand ne peuvent pas être utilisées AMAZON.LITERAL.

Votre schéma d'intention pourrait ressembler à ceci:

{
  "intents": [
    {
      "intent": "SaveTodo",
      "slots": [
        {
          "name": "Todo",
          "type": "AMAZON.LITERAL"
        }
      ]
    }
  ]
}

Et vos exemples d'énoncés pourraient ressembler à ceci:

SaveTodo remind me to {fetch the shopping|Todo}
SaveTodo remind me to {write my English essay|Todo}
SaveTodo remind me to {buy some dog food tomorrow|Todo}

Lors de l'utilisation AMAZON.LITERAL, vous devez fournir de nombreux exemples d'énoncés - au moins un échantillon pour chaque longueur d'entrée possible, mais idéalement plus. La documentation d'Amazon suggère que vous devriez viser des centaines d'échantillons pour les emplacements où vous pourriez accepter différents types d'entrées.

Cela semble un peu fastidieux, mais si vous ne le faites pas, il est peu probable que votre compétence reconnaisse bien le texte. Vous pouvez peut-être générer des exemples d'énoncés à partir des données client (tant que les informations personnelles sont supprimées au préalable!) Afin que les énoncés les plus courants se trouvent dans vos échantillons.Je soupçonne qu'Alexa sera légèrement biaisée vers la reconnaissance d'énoncés similaires aux échantillons.

Amazon décourage AMAZON.LITERALcependant les emplacements et préférerait que vous utilisiez des types d'emplacements personnalisés , qui vous obligent à répertorier les entrées possibles. Il est important de se rappeler que:

Un type d'emplacement personnalisé n'est pas l'équivalent d'une énumération. Les valeurs en dehors de la liste peuvent toujours être renvoyées si elles sont reconnues par le système de compréhension de la langue parlée. Bien que l'entrée dans un type d'emplacement personnalisé soit pondérée en fonction des valeurs de la liste, elle n'est pas limitée aux seuls éléments de la liste. Votre code doit toujours inclure la validation et la vérification des erreurs lors de l'utilisation des valeurs d'emplacement.

Aurora0001
la source
1
Je crois qu'Amazon garde les créneaux littéraux car de nombreux développeurs ont protesté contre leur perte. Mais l'utilisation de l'emplacement littéral empêchera la publication de vos compétences, car Amazon ne veut pas que les développeurs puissent "écouter" les utilisateurs. Mais vous pouvez toujours l'utiliser dans une compétence privée.
Graham Chiu
1
@GrahamChiu: J'ai l'impression que les emplacements littéraux sont toujours autorisés même dans les compétences publiées (voir cet article de blog : "Sur la base des commentaires des développeurs, nous ne supprimerons pas le type d'emplacement LITERAL et vous pouvez continuer à soumettre des compétences qui incluent ses fonctionnalités.") . Je ne l'ai pas essayé moi-même, donc si vous pouvez confirmer dans les deux cas, cela pourrait être utile pour les futurs visiteurs.
Aurora0001