7 votes

Schéma d'intention d'Alexa : Les entrées aléatoires sont identifiées comme des intentions

J'ai deux intentions qui utilisent les mêmes types d'emplacements. Cependant, si l'entrée est une chaîne aléatoire, Alexa identifie automatiquement une intention dans sa requête JSON, même si elle ne fait pas partie des énoncés. Par exemple, dans l'exemple ci-dessous, si l'entrée de l'utilisateur était " bla bla bla ", GetAccountBalance est identifié comme l'intention sans valeur de slot, même s'il ne fait pas partie des énoncés fournis.

Comment vérifier ces cas d'erreur et quelle est la meilleure pratique pour éviter ce genre de cas lors du développement du schéma d'intention ? Existe-t-il un moyen de créer une intention capable de gérer toutes les entrées aléatoires ?

Exemple de schéma :

{
  "intents": [
    {
      "intent": "GetAccountBalance",
      "slots": [
        {
          "name": "AccountType",
          "type": "ACCOUNT_TYPE"
        }
      ]
    },
    {
      "intent": "GetAccountNumber",
      "slots": [
        {
          "name": "AccountType",
          "type": "ACCOUNT_TYPE"
        }
      ]
    }
  ]
}

Utterances :

GetAccountBalance what is my account balance for {AccountType} Account
GetAccountBalance what is my balance for {AccountType} Account
GetAccountBalance what is the balance for my {AccountType} Account
GetAccountBalance what is {AccountType} account balance
GetAccountBalance what is my account balance
GetAccountBalance what is account balance
GetAccountBalance what is the account balance
GetAccountBalance what is account balance

GetAccountNumber what is my account number for {AccountType} Account
GetAccountNumber what is my number for {AccountType} Account
GetAccountNumber what is the number for my {AccountType} Account
GetAccountNumber what is {AccountType} account number
GetAccountNumber what is my account number
GetAccountNumber what is account number
GetAccountNumber what is the account number
GetAccountNumber what is account number

3voto

Nidhish Points 56

Il existe un hack pour résoudre ce problème :

Si aucune correspondance n'est trouvée (chaîne aléatoire), Amazon prend toujours l'intention avec le plus grand nombre d'énoncés. J'ai donc créé une intention 'DidNotUnderstand' et ajouté autant d'énoncés aléatoires que possible (soyez assez modéré). Si aucune correspondance n'est trouvée, Alexa appellera l'intention 'DidNotUnderstand'.

Veuillez vous référer à la première réponse du lien ci-dessous : https://forums.developer.amazon.com/questions/4856/intent-triggering-without-utterance-match.html

2voto

user3508122 Points 634

Lors du développement d'une compétence Alexa, Alexa choisira toujours une intention de tir, même si l'utilisateur parle en pur charabia. Pour autant que je sache, il n'y a pas de moyen de définir une intention par défaut / fourre-tout.

En ce qui concerne la gestion des erreurs, le passage suivant de la documentation est très important.

Notez qu'un type de slot personnalisé n'est pas l'équivalent d'une énumération. Les valeurs hors de la liste sont toujours renvoyées si elles sont reconnues par le système de compréhension du langage parlé. Bien que l'entrée d'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 encore inclure la validation et la vérification des erreurs lors de l'utilisation des valeurs de slot.

Le lien ci-dessus contient également quelques liens de suivi qui approfondissent le sujet de la gestion des erreurs.

1voto

dd619 Points 1681

Conformément à la documentation :

En AMAZON.FallbackIntent (disponible en anglais (US) uniquement) est déclenché lorsque la saisie orale de l'utilisateur ne correspond à aucune des autres intentions de la compétence. AMAZON.FallbackIntent est mis en correspondance avec un modèle hors domaine généré automatiquement.

Extraits de code :

'AMAZON.FallbackIntent': function (intent, session, response) {
    response.ask("Optimus Prime didn't get that one....","");
}

0voto

Prasanth Kumar Points 4

Un slot de type SearchQuery pourrait vous aider, mais il devrait être accompagné de quelques phrases supplémentaires, par exemple

Fname->où Fname est un slot de type Amazon.SearchQuery

mon nom est {Fname}

cela fonctionnera pour l'exemple

mon nom est bffblselsk mon nom est snfdslnel etc...

visitez Amazon.SearchQuery Slot pour plus de références....

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X