Cómo monitorear errores en una skill de Alexa con AWS

¿Por qué deberías monitorear tu skill después de haberla publicado en la Tienda Alexa?

Nicolò Gasparini
4 min readJun 24, 2019

--

Después de desarrollar una skill de Alexa, necesitas saber y analizar qué les sucede a tus usuarios.

La Amazon Alexa Developer Console proporciona una herramienta de análisis que te permite controlar cuántos usuarios tiene, cómo se están acercando y usando tu skill, qué expresiones pronuncian, pero ¿cómo administramos los errores?

Alexa Developer Console

Si ya has publicado una skill utilizando una función lambda, sabrás que no se aprobará en caso de errores, pero pueden ocurrir de todos modos si no administras un parámetro o si olvidas un caso especial.

Lo que tendrías que hacer en estos casos es insertar en tu código un Exception Handler, que interceptará todos estos errores y le devolverá un mensaje personalizado al usuario, como “Oops, algo salió mal, inténtelo de nuevo más tarde”.

Este es el enfoque recomendado, sin embargo, para la mayoría de los servicios, incluidas las funciones Lambda, significa que tu código realmente no fallará, sino que tendrá éxito y simplemente registrará un error. Esta es la razón por la cual los sistemas de seguimiento de fallos convencionales pueden fallar en estos casos.

¿Por qué no puedo enviar una alarma a un servicio externo desde mi código?

La respuesta es simple, puedes pero quizás no deberías.

La integración de una biblioteca de seguimiento de errores puede ser la primera opción para las compañías y los desarrolladores que ya poseen algunos sistemas y cuentan con dicho sistema, pero al hacerlo puede ralentizar su función en un entorno donde, con la interacción de voz y los usuarios impacientes, el tiempo lo es todo.

Además de eso, la forma más común de desarrollar el núcleo de una Skill de Alexa es usar las funciones de AWS Lambda. Gracias a esta tecnología sin servidor, no tenemos que pensar en la implementación y la disponibilidad de nuestro servicio, pero sí tienen algunas desventajas. Independientemente de tu elección del lenguaje de programación, puede ser difícil incluir diferentes bibliotecas o servicios en tu código.

Estas son las razones por las que voy a compartir contigo una forma sencilla de crear una alarma que, a través del correo electrónico u otros canales, puede informarte cuándo ocurre un error en tu función lambda y el usuario se queda sin respuesta.

Cómo configurar la alarma

Utilizaremos el sistema principal de gestión de alarmas proporcionado por AWS: Cloudwatch.

Para ello, basaremos nuestra alarma en los registros de Cloudwatch, que se conectan automáticamente a cada función lambda que tengas, puedes encontrarlos siguiendo este enlace en la página de Lambda desde la consola de AWS, o simplemente navega a la página de servicio de Cloudwatch. Bajo. Registros.

Monitoring > View logs in CloudWatch

Aquí encontrarás cada uno de los Log Group para cada servicio que estés utilizando

  • Selecciona el grupo de registro para tu skill lambda y haz clic en Crear filtro métrico.
  • Ingresa un patrón para un registro que significa que ocurrió un error en Tu código, por ejemplo, “? Error? ERROR”. Aquí puedes encontrar un conjunto de reglas sobre cómo crear un patrón.
  • Prueba el patrón con diferentes datos de registro para ver si funciona como se espera.
  • Introduce un Nombre de filtro, que lo identificará en el caso de varios filtros, y un Nombre de métrica y un Espacio de nombres. (Sugiero abrir las opciones avanzadas, establecer 1 en caso de que ocurra un evento, 0 en caso de que no ocurra el evento).

Ahora haz clic en Create Alarm:

  • Configura la alarma para que se dispare cuando el evento sea> 0 y trate los datos faltantes como buenos (no infringiendo la retención).
  • Selecciona una acción para que ocurra cuando se active la alarma, como un simple correo electrónico.

¡Eso es todo! Ahora recibirás un correo electrónico cada vez que se registre un error en su función lambda conectada a tu Skill de Alexa.

Versión en inglés.

--

--

Nicolò Gasparini

Software Engineer and full stack developer 💻 based in Italy — /in/nicologasparini/