Estoy usando una función Lambda para mi Skill de Alexa. Para mi intento de lanzamiento, consulto DynamoDB y devuelvo una cadena que primero quiero convertir en un QRCode y luego quiero devolverla al dispositivo Alexa como una imagen dentro de responseBuilder .
Alexa funciona bien mostrando imágenes de direcciones URL externas como
const rabbitImage = "https://i.imgur.com/U6eF0oH.jpeg";
return responseBuilder .speak(say) .withStandardCard("Welcome to Alexa", "description", rabbitImage, rabbitImage) .reprompt('try again, ' + say) .getResponse(); Pero estoy atascado en cómo enviar el QRCode de vuelta al dispositivo Alexa en el responseBuilder .
Estoy usando una biblioteca nodejs llamada qrcode que puede convertir String en QRCode y luego en base64 .
https://www.npmjs.com/package/qrcode
Pero de acuerdo con los documentos de Alexa para enviar una "card" aka image , de vuelta al usuario, tiene que ser una URL.
The Alexa Skills Kit provides different types of cards: A Standard card also displays plain text, but can include an image. You provide the text for the title and content, and the URL for the image to display. Así que no estoy seguro de si el base64 generado por la biblioteca qrcode funcionaría en este caso.
¿Cuál es la mejor manera de enviar el código QR generado dinámicamente al dispositivo Alexa como respuesta en este escenario?
const LaunchRequest_Handler = { canHandle(handlerInput) { const request = handlerInput.requestEnvelope.request; return request.type === 'LaunchRequest'; }, handle(handlerInput) { const responseBuilder = handlerInput.responseBuilder; //Perform query to DynamoDB var stringToCreateQRWith = "8306e21d-0c9e-4465-91e9-0cf86fca110d"; //Generate qr code and send back to user here //???Unsure how to do and what format to send it in var qrImageToSendToUser = ??? return responseBuilder .speak(say) .withStandardCard("Welcome to Alexa", "description", qrImageToSendToUser , qrImageToSendToUser ) .reprompt('try again, ' + say) .getResponse(); }Como propuso @kopaka, este es el camino a seguir. No hay manera de evitarlo.
Según la documentación
Son algunas de las cosas que debes tener en cuenta.
En las imágenes en sí, querrás crear 2 imágenes con 720px x 480px y 1200px x 800px . Para asegurarse de que se muestren bien en varios tamaños de pantalla. De lo contrario, no garantizan la mejor experiencia para su usuario, ya que pueden escalar hacia arriba o hacia abajo la imagen para que quepa.
En cuanto a la elección de almacenamiento, debe asegurarse de poder servir esas imágenes a través de Https y con un certificado SSL válido de confianza de Amazon .