Si utiliza Amazon Lex V2, consulte la guía de Amazon Lex V2.
Si utiliza Amazon Lex V1, le recomendamos que actualice los bots a Amazon Lex V2. Hemos dejado de agregar nuevas características a V1, por lo que recomendamos encarecidamente utilizar V2 para todos los nuevos bots.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Paso 1: Crear una función Lambda
En primer lugar, cree una función de Lambda que pida una pizza. Deberá especificar esta función en el bot de Amazon Lex que creará en la siguiente sección.
Para crear una función Lambda
Inicie sesión en la AWS Management Console y abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/
. -
Elija Crear función.
-
En la página Create function, elija Author from scratch.
Dado que está utilizando el código personalizado que se le ha proporcionado en este ejercicio para crear una función Lambda, debe seleccionar la opción para crear la función desde cero.
Haga lo siguiente:
-
Escriba el nombre (
PizzaOrderProcessor
). -
En Runtime, elija la última versión de Node.js.
-
En Role, elija Create new role from template(s).
-
Escriba un nombre nuevo para el rol (
PizzaOrderProcessorRole
). -
Elija Crear función.
-
-
En la página function, haga lo siguiente:
En la sección Function code, elija Edit code inline y, a continuación, copie el siguiente código de función de Node.js y péguelo en la ventana.
'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); } };
-
Seleccione Save.
Prueba de la función de Lambda con datos de eventos de ejemplo
En la consola, pruebe la función de Lambda con datos de eventos de ejemplo para invocarla de manera manual.
Para probar la función de Lambda:
Inicie sesión en la AWS Management Console y abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/
. -
En la página Función de Lambda, elija la función de Lambda (
PizzaOrderProcessor).
-
En la página de la función, en la lista de eventos de prueba, elija Configure test events.
-
En la página Configure test event, haga lo siguiente:
-
Elija Create new test event.
-
En el campo Event name, escriba un nombre para el evento (
PizzaOrderProcessorTest
). -
Copie el siguiente evento de Amazon Lex en la ventana.
{ "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" } }
-
-
Seleccione Create (Crear).
AWS Lambda crea la prueba y vuelve a la página de la función. Elija Probar y Lambda ejecutará la función de Lambda.
En el cuadro de resultados, elija Details. La consola muestra la salida siguiente en el panel Execution result.
{ "sessionAttributes": {}, "dialogAction": { "type": "Close", "fulfillmentState": "Fulfilled", "message": { "contentType": "PlainText", "content": "Okay, I have ordered your large meat pizza on thin crust." } }