#VS2017– Azure WebApi App, Amazon Alexa Skills and the error “I’m not sure what went wrong” (you get tired of listening!)

Hi!

Just over a month ago Amazon officially launched its Amazon Echo line in Canada. In Avanade we will host an event specially dedicated to Artificial Intelligence and Voice Interfaces. And now that the holiday season has finished, it’s time to share some of the lessons learned over the last few months working with Alexa Skills.

Using simple words to describe how an Alexa Skill works, we could say that the Skill allows us to connect the audio processing of Amazon Echo with an HTTP service. By default, Amazon proposes us to use an AWS Lambda. If we switch to the Azure world, we have several options, for example, Use a Azure Function or a website in a AppService.

I1

I choose the 2nd option and then it was time to configure my controllers to be compatible with the POST requests made by my Amazon Skill.

Note: If you work with .net there is a NuGet package for this, AlexaSkillsKit.Net

After configuring my Intents, Slots and the operation of my Skill, it’s time to test it. In the most minimalist tester in the history of the Internet, everything worked OK.

I2

The HTTP requests my Alexa skills performed communicated correctly with my App Service in Azure. Even in the new Test Simulator (Beta) everything worked properly.

I3

Note: The 2nd one is a really good Test environment. The default test interface is, like saying it without offending anyone, “very simple”.

Well, everything is working perfectly until the time to try it on the Amazon Echo. Every time I tested it, Alexa told me the following phrase:

“I’m not sure what went wrong”

I4

I spent a lot of time trying to find the error. I enabled all kinds of traces, both in Azure and in the Alexa Skills, and I could not find anything that works bad. At those moments I usually take advantage to go running and to clear my mind a little bit, but with the weather these days, I had to relax in other ways.

I5

The solution arrived to me when I was showing my girl and my children, how to program an Alexa Skill. I was thinking of creating something with Scratch so that my children can create their own conversations/skills with Alexa, when I realized that:

I had configured my device with Language English (Canada) and when you create a Skill, by default it is created in English (U. S).

I6

Note: It is still English, but you see that Amazon friends are sensitive about it 😀 Really, there are very clear reasons why skills have to be identified by country, legal issues, copyright and more.

Well, right now I have 2 solutions for my skills to work

  • Change the location of the device to United States
  • Add a new Language to my Alexa Skill

I7

Obviously the best is the 2nd option. And, while it is not as trivial as it seems, once my skill supports the new language, I no longer have to deal with the beautiful phrase

“I’m not sure what went wrong”

And finally I was able to continue testing my skills in the device!

In next posts I will comment on the quick way in which I have learned to have a Skill with multiple languages.

Happy Coding!

Greetings @ Toronto

El Bruno

References

Advertisements

#VS2017– Azure WebApi App, Amazon Alexa Skills y el error “I’m not sure what went wrong” (te cansas de escucharlo!)

Buenas!

Hace poco mas de un mes Amazon lanzo oficialmente su línea de Amazon Echo en Canada. En Avanade tendremos un evento especialmente dedicado a temas de Artificial Intelligence y Voice Interfaces. Y, ahora que ya ha pasado la época de fiestas, creo que es momento para compartir algunas de las lecciones aprendidas durante los últimos meses trabajando con Alexa Skills.

Simplificando mucho el funcionamiento de una Skill, podríamos decir que la misma es la que nos permite conectar el procesamiento de audio de Amazon Echo con un servicio HTTP. Por defecto Amazon nos propone utilizar una AWS Lambda. Si cambiamos al mundo de Azure, tenemos varias opciones, por ejemplo, utilizar una Azure Function o un website en una AppService.

I1

Yo opte por esta 2da opción y luego llegó el momento de configurar mis Controllers para que sean compatibles con las peticiones POST que realiza mi Amazon Skill.

Nota: Si trabajas con .Net hay un NuGet package para esto, AlexaSkillsKit.Net

Luego de configurar mis Intents, Slots y cerrar el funcionamiento de mi Skill, llego el momento de probarlo. En el tester mas minimalista de la historia de internet todo funcionaba OK.

I2

Las peticiones que realizaba mi Alexa Skills se comunicaban correctamente con mi App Service en Azure. Inclusive en el nuevo Test Simulator (Beta) todo funcionaba correctamente.

I3

Nota: El 2do es un simulador de test serio. La interfaz por defecto de test es, como decirlo sin ofender a nadie, “muy simple”.

Pues bien, todo funcionando perfectamente hasta el momento de probarlo en el Amazon Echo. Cada vez que lo probaba, Alexa me decía la siguiente frase:

“I’m not sure what went wrong”

I4

Estuve bastante tiempo intentando encontrar el error. Habilite todo tipo de trazas, tanto en Azure como en las Skills, y no pude encontrar nada que funcione mal. En esos momentos suelo aprovechar para salir a correr y despejarme un poco, aunque con el frio que hizo en estos días, tuve que relajarme de otras formas.

I5

La solución llego cuando estaba mostrándole a mi chica y a mis enanos, como programar una Skill. Estuve pensado crear algo con Scratch para que mis enanos puedan crear sus propias conversaciones / Skills con Alexa, cuando me di cuenta que:

Tenía configurado mi device con Language English (Canada) y que cuando se crea una Skill, por defecto la misma se crea en English (U.S).

I6

Nota: Sigue siendo English, pero se ve que los amigos de Amazon, son delicados al respecto 😀 Hay motivos muy claros del porque las Skills tienen que estar identificadas por país, cuestiones legales, de copyright y otros.

Pues bien, en este momento tengo 2 soluciones para que mis Skills funcionen

  • Cambiar la ubicación del device a United States
  • Agregar un nuevo Language a mi Alexa Skill

I7

Obviamente lo mejor es la 2da opción. Y, si bien no es tan trivial como parece, una vez que mi Skill soporta el nuevo lenguaje, ya no tengo que lidiar mas con la hermosa frase

“I’m not sure what went wrong”

¡Y por fin pude seguir probando mis Skills en el device!

En próximos posts comentare la forma rápida en la que he aprendido a tener una Skill con múltiples lenguajes.

Happy Coding!

Saludos @ Burlington

El Bruno

References