Je souhaite utiliser une fonction AWS Lambda d’initialisation/validation ou d’exécution pour modifier le flux de dialogue de mon bot Amazon Lex.
Résolution
Remarque : L’exemple présenté dans cet article utilise la version 2 de la console Amazon Lex. Si vous utilisez la version 1, choisissez Passer à la nouvelle console Lex v2 dans le volet de navigation.
La syntaxe de réponse Lambda indique dans quel format Amazon Lex attend la réponse de la fonction Lambda. Veillez à inclure les champs obligatoires dans la réponse.
Modification du flux de dialogue à l’aide du type ElicitSlot
Pour modifier le flux de dialogue à l’aide du type ElicitSlot, transmettez la réponse du hook de code Lambda au format suivant :
{
"sessionState": {
"dialogAction": {
"slotToElicit": "<slot-name-to-elicit>",
"type": "ElicitSlot"
},
"intent": {
"name": "<intent-name-to-elicit>",
"state": "InProgress"
}
}
}
Amazon Lex envoie la réponse puis génère un emplacement appelé slot-name-to-elicit qui appartient à l’intention intent-name-to-elicit.
Par exemple, l’emplacement d’une intention CreateUser demande un nom d’utilisateur. Utilisez une fonction Lambda pour vérifier si le nom d’utilisateur existe déjà. Si le nom d’utilisateur existe, demandez à nouveau l’emplacement du ** nom d’utilisateur** pour la même intention.
Modification du flux de dialogue à l’aide du type ElicitIntent
Pour modifier le flux de dialogue à l’aide du type ElicitIntent, transmettez la réponse du hook de code Lambda au format suivant :
{
"sessionState": {
"dialogAction": {
"type": "ElicitIntent"
}
},
"messages": [{
"contentType": "<content-type>",
"content": "<message>"
}]
}
Une fois qu’Amazon Lex a renvoyé la réponse, l’utilisateur voit le message indiqué dans l’espace réservé au message. La saisie suivante de l’utilisateur est considérée comme un énoncé d’intention et invoque l’intention dont le score nluConfidence est le plus élevé.
Par exemple, si votre bot répond à une intention pour votre utilisateur, mettez-le en état d’Écoute. L’utilisateur peut ensuite fournir un autre énoncé pour invoquer une autre intention.
Modification du flux de dialogue à l’aide du type Delegate
Le type Delegate permet de modifier le début d’une intention lorsque vous indiquez la nouvelle intention. Pour utiliser le type Delegate, transmettez la réponse du hook de code Lambda au format suivant :
{
'sessionState': {
'dialogAction': {
'type': 'Delegate'
},
'intent': {
'name': '<intent-name-to-elicit>',
'state': 'InProgress'
}
}
}
Par exemple, votre bot a les intentions A, B et C. Si l’utilisateur fournit une réponse à un emplacement dans l’intention A, la fonction Lambda vérifie l’entrée utilisateur. Ensuite, la fonction invoque soit l’intention B, soit l’intention C.
Informations complémentaires
amazon-lex-v2-dialogation sur le site GitHub