Se você estiver usando o Amazon Lex V2, consulte o Guia do Amazon Lex V2.
Se você estiver usando o Amazon Lex V1, recomendamos atualizar seus bots para o Amazon Lex V2. Não estamos mais adicionando novos atributos à V1 e recomendamos o uso da V2 para todos os novos bots.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Etapa 1: Criar uma função do Lambda
Primeiro, crie uma função do Lambda que atenda a um pedido de pizza. Essa função é específica no bot do Amazon Lex, que será criado na próxima seção.
Como criar uma função do Lambda
Faça login no AWS Management Console e abra o console AWS Lambda em https://console.aws.amazon.com/lambda/
. -
Escolha Criar função.
-
Na página Create function, selecione Author from scratch.
Como você está usando um código personalizado fornecido neste exercício para criar uma função do Lambda, selecione essa opção.
Faça o seguinte:
-
Digite o nome: (
PizzaOrderProcessor
). -
Em Runtime (Tempo de execução), selecione a versão mais recente do Node.js.
-
Em Role, selecione Create new role from template(s).
-
Insira um novo nome de função (
PizzaOrderProcessorRole
). -
Escolha Criar função.
-
-
Na página function, faça o seguinte:
Na seção Function code, selecione Edit code inline e, em seguida, copie o código da função Node.js a seguir e cole-o na janela.
'use strict'; // Close dialog with the customer, reporting fulfillmentState of Failed or Fulfilled ("Thanks, your pizza will arrive in 20 minutes") function close(sessionAttributes, fulfillmentState, message) { return { sessionAttributes, dialogAction: { type: 'Close', fulfillmentState, message, }, }; } // --------------- Events ----------------------- function dispatch(intentRequest, callback) { console.log(`request received for userId=${intentRequest.userId}, intentName=${intentRequest.currentIntent.name}`); const sessionAttributes = intentRequest.sessionAttributes; const slots = intentRequest.currentIntent.slots; const crust = slots.crust; const size = slots.size; const pizzaKind = slots.pizzaKind; callback(close(sessionAttributes, 'Fulfilled', {'contentType': 'PlainText', 'content': `Okay, I have ordered your ${size} ${pizzaKind} pizza on ${crust} crust`})); } // --------------- Main handler ----------------------- // Route the incoming request based on intent. // The JSON body of the request is provided in the event slot. export const handler = (event, context, callback) => { try { dispatch(event, (response) => { callback(null, response); }); } catch (err) { callback(err); } };
-
Escolha Save (Salvar).
Testar a função do Lambda usando dados de eventos de exemplo
No console, teste a função do Lambda usando dados de eventos de exemplo para invocá-la manualmente.
Para testar a função do Lambda:
Faça login no AWS Management Console e abra o console AWS Lambda em https://console.aws.amazon.com/lambda/
. -
Na página da função do Lambda, escolha a função do Lambda (
PizzaOrderProcessor).
-
Na página da função, na lista de eventos de teste, selecione Configure test events.
-
Na página Configure test event, faça o seguinte:
-
Selecione Create new test event (Criar evento de teste).
-
No campo Event name, insira um nome para o evento (
PizzaOrderProcessorTest
). -
Copie o evento do Amazon Lex a seguir na janela.
{ "messageVersion": "1.0", "invocationSource": "FulfillmentCodeHook", "userId": "user-1", "sessionAttributes": {}, "bot": { "name": "PizzaOrderingApp", "alias": "$LATEST", "version": "$LATEST" }, "outputDialogMode": "Text", "currentIntent": { "name": "OrderPizza", "slots": { "size": "large", "pizzaKind": "meat", "crust": "thin" }, "confirmationStatus": "None" } }
-
-
Escolha Criar.
O AWS Lambda cria o teste, e você retorna à página da função. Escolha Testar para que o Lambda execute a função do Lambda.
Na caixa de resultados, selecione Details. O console exibe a saída a seguir no painel Execution result.
{ "sessionAttributes": {}, "dialogAction": { "type": "Close", "fulfillmentState": "Fulfilled", "message": { "contentType": "PlainText", "content": "Okay, I have ordered your large meat pizza on thin crust." } }