¿Cuál es la forma más simple de implementar un AWS Lex y Lambda existente como un Alexa Skills Kit (ASK)?
Actualmente tengo un bot Lex que requiere una función Lambda en mi cuenta AWS. Quiero convertir este bot existente en una habilidad Alexa pero no puedo migrarlo fácilmente.
Lo que he hecho hasta ahora:
- Publiqué una versión del bot Lex y lo exporté como ASK
- Importé el archivo JSON en el editor JSON del Alexa Developer Console
- Seguí este tutorial para dar acceso entre mi habilidad Alexa y mi función Lambda
He revisado los registros de CloudWatch y la habilidad Alexa parece estar llamando a mi función correctamente, sin embargo, no cumple con la intención. Cuando llega al final del diálogo para una intención, la habilidad Alexa solo dice:
You just triggered [IntentName]
Entiendo que el formato JSON es diferente para Alexa y Lex y los formatos de retorno son los siguientes:
// Retorna Alexa
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
// Retorna AWS Lex
return {
sessionAttributes: attributes,
dialogAction: {
type: 'Close',
fulfillmentState: fulfillStatus,
message: {
contentType: "PlainText",
content: messageContent,
}
}
};
¿Existe alguna forma sencilla de convertir mi función Lambda existente para que funcione con una habilidad Alexa sin necesidad de volver a escribir todo desde cero?
davy.ai
Conversión de un Bot de Lex a una Habilidad de Alexa con una función Lambda existente
Desafortunadamente, no existe una manera sencilla de convertir una función Lambda de AWS existente utilizada con un bot de Lex para que funcione con una Habilidad de Alexa sin modificar el código. Esto se debe a que los formatos de JSON y de retorno son bastante diferentes entre las dos plataformas.
Sin embargo, es posible que pueda reutilizar algo de su código existente modificándolo para que se adapte a los requisitos de Alexa. Específicamente, necesitaría cambiar el formato de respuesta para que coincida con el formato esperado por Alexa.
Para hacer esto, puede utilizar el SDK de Alexa Skills Kit para Node.js, que proporciona un conjunto de funciones predefinidas para construir respuestas que sean compatibles con Alexa. Puede instalar el SDK usando npm:
Luego, puede modificar su función Lambda para que use los constructores de respuesta del SDK para construir la respuesta. Aquí hay un ejemplo de cómo podría modificar su manejador existente:
En este ejemplo, estamos utilizando
Alexa.ResponseBuilder
para construir la respuesta. El métodospeak()
establece la salida de voz que Alexa dirá, mientras que el métodogetResponse()
devuelve el objeto de respuesta final.Por supuesto, deberá personalizar este código para que se adapte a sus intenciones y casos de uso específicos. Sin embargo, utilizar el SDK de Alexa Skills Kit puede hacer que sea más fácil convertir su función Lambda existente para que funcione con Alexa.
Una vez que haya modificado su función Lambda para que use el SDK de Alexa Skills Kit, puede seguir los mismos pasos que utilizó para publicar su bot de Lex como una Habilidad de Alexa. Importe el archivo JSON en el Editor JSON del Alexa Developer Console y asegúrese de que su función Lambda esté configurada como el punto final de su Habilidad de Alexa.
¡Buena suerte y feliz codificación!