He actualizado el template de skill Alexa en github. Ahora es compatible con micropagos por voz dentro de la skill (in-skill purchases, isp, en inglés). Está probado en skills con micropagos de tipo «pago único» (one-time purchase) y tipo «suscripción» (subscription product); en castellano (es-US) y en inglés (en-US y en-UK).

El template soporta los siguientes intents relacionados con micropagos:

  • WhatCanIBuyIntent, que responde al usuario con el listado de productos disponibles para comprar en esa skill.
  • TellMeMoreAboutProductIntent, que responde con la descripción del producto.
  • BuyIntent, inicia el flujo de compra del producto, ya sea de tipo one-time o suscripción.
  • PurchaseHistoryIntent, dice las compras realizadas en la skill.
  • RefundProductIntent, inicia el flujo para la devolución de una compra.

Además, la skill recupera el control después del proceso de compra o devolución:

  • BuyResponseHandler, se ejecuta tras cada compra.
  • CancelProductResponseHandler, se ejecuta tras cada solicitud de devolución.

El template sirve de ayuda para otras muchas características de Alexa (APL, solicitud de permisos, etc…), pero ahora me centro en los ficheros relacionados con los in-skill purchases:

  • En la carpeta /models encontrarás los modelos de voz, en es-ES y en-US, para dichos intents.
  • En la carpeta /lambda/custom/strings están todas las cadenas de texto que se utilizan en las respuestas.
  • En /lambda/custom/settings.js está el identificador del producto que se puede comprar en el ejemplo del template.
  • En /lambda/custom/handlers/purchaseHandlers.js están todos los manejadores necesarios para las compras y los métodos auxiliares isEntitledByProductId()isPurchasableByProductId().
  • No olvides la carpeta /lambda/custom/apl. Si el dispositivo Alexa soporta APL, las respuestas se mostrarán también por pantalla.
  • Y por último, para soportar micropagos, en el fichero /lambda/custom/index.js se han hecho los cambios explicados en el siguiente párrafo.

Cómo incluir micropagos en tu index.js:

  • Importar purchaseHandlers e inicializar con los strings y los métodos que deben ejecutarse tras una compra/devolución.

  • Usar «custom()» en SkillBuilders, añadir los manejadores, incluir «initPurchaseHandlers» en «addRequestInterceptors» y añadir la línea «.withApiClient(new Alexa.DefaultApiClient())».

Abre tu modelo (en-US.json, etc…) y edita el type «LIST_OF_PRODUCT_NAMES» para incluir los productos comprables de tu skill. El id de cada producto deberá coincidir con el de los productos creados en el panel de desarrolladores de Alexa.

Un ejemplo de cómo sugerir una compra desde un manejador de intent en index.js:

Por último y no menos importante 🙂 no olvides crear los productos que vas a vender. Puedes crearlos desde cli o a través de la consola web de desarrolladores Alexa:

El template completo está gratis aquí: https://github.com/javichur/alexa-skill-clean-code-template. En el fichero Readme del repositorio hay más información sobre cómo crear una skill usando el template. Si necesitas más ayuda sobre otras funcionalidades del template o si tienes sugerencias, por favor escríbeme 🙂

Ejemplo de skill en producción que utiliza este código para los micropagos: Nevera Estado / Don’t Waste Food.