Quero usar uma função de inicialização/validação ou cumprimento do AWS Lambda para alterar o fluxo de diálogo do meu bot do Amazon Lex.
Resolução
Observação: o exemplo neste artigo usa a versão 2 do console do Amazon Lex. Se você usar a versão 1, escolha Mudar para o novo console Lex v2 no painel de navegação.
A sintaxe de resposta do Lambda especifica o formato esperado pelo Amazon Lex para a resposta da função do Lambda. Certifique-se de incluir os campos obrigatórios na resposta.
Use o tipo ElicitSlot para alterar o fluxo de diálogo
Para usar o tipo ElicitSlot para alterar o fluxo de diálogo, passe a resposta do hook do código do Lambda no seguinte formato:
{
"sessionState": {
"dialogAction": {
"slotToElicit": "<slot-name-to-elicit>",
"type": "ElicitSlot"
},
"intent": {
"name": "<intent-name-to-elicit>",
"state": "InProgress"
}
}
}
Depois de retornar a resposta, o Amazon Lex gera um slot chamado slot-name-to-elicit que pertence à intenção intent-name-to-elicit.
Por exemplo, você tem uma intenção CreateUser com um slot que solicita um nome de usuário. Use uma função do Lambda para verificar se o nome de usuário já existe. Se o nome de usuário existir, elicite o slot username novamente para a mesma intenção.
Usar o tipo ElicitIntent para alterar o fluxo de diálogo
Para usar o tipo ElicitIntent para alterar o de diálogo, passe a resposta do hook do código do Lambda no seguinte formato:
{
"sessionState": {
"dialogAction": {
"type": "ElicitIntent"
}
},
"messages": [{
"contentType": "<content-type>",
"content": "<message>"
}]
}
Depois que o Amazon Lex retornar a resposta, o usuário verá a mensagem especificada no espaço reservado da mensagem. A próxima entrada do usuário é considerada uma declaração de intenção e invoca a intenção com maior pontuação de nluConfidence.
Por exemplo, se o seu bot cumprir uma intenção para o seu usuário, coloque esse bot em um estado Listen. O usuário pode então fornecer outra expressão para invocar outra intenção.
Usar o tipo Delegate para alterar o fluxo de diálogo
Você pode usar o tipo Delegate para alterar o início de uma intenção ao especificar a nova intenção. Para usar o tipo Delegate, passe a resposta do hook do código do Lambda, no seguinte formato:
{
'sessionState': {
'dialogAction': {
'type': 'Delegate'
},
'intent': {
'name': '<intent-name-to-elicit>',
'state': 'InProgress'
}
}
}
Por exemplo, seu bot tem intenções A, B e C. Se o usuário fornecer uma resposta a um slot na intenção A, a função do Lambda verificará a entrada do usuário. Em seguida, essa função invoca a intenção B ou C.
Informações relacionadas
amazon-lex-v2-dialogation no site do GitHub