Voice

Amazon Echo

Cuando uno forma parte del mundo de la tecnología, ya sea por afición o por trabajo, la familia, conocidos y amigos suelen dejarte dispositivos que han comprado o que les han regalado, para que los configures y les digas qué pueden hacer, cómo pueden hacerlo y cuando lo pueden hacer.

En una de estas, cayó en mis manos una «Echo Dot 3.ª» también llamada Alexa. Durante algunos días estuve jugueteando con el dispositivo al que no le encontraba ninguna utilidad vital o curiosa…

Echo Dot3

De hecho la única utilidad que se me ocurrió en su momento, no la ofrecía, ni la ofrece hoy en día al menos al 100%.  Mi idea del altavoz inteligente, además de preguntar cosas a internet, poner música (si pagas el Amazon Prime ó Music), ver si te llega un paquete y poco más, era poder llamar por teléfono. Es decir, usar el dispositivo como un micrófono y altavoz en una llamada, la verdad es que el dispositivo se oye francamente bien, pero esa funcionalidad solo se permite entre dispositivos Alexa… por lo que no funciona como manos libres de tu móvil, una lástima.

Visto que la funcionalidad que me había imaginado no era posible, encontré otra que sí me interesaba y pude integrar en mi ecosistema. La funcionalidad consiste en decirle algo (previamente configurado) al dispositivo y que este realice la acción programada. Resumiendo lo mismo que el «dash button» de Amazon que hago con la app de HTTP push desde mi Pebble Time Round pero por voz.

¿Como conseguí implementar esto?  Es muy difícil tener una idea y que no haya nadie que no la haya tenido antes y la haya implementado. Efectivamente en este enlace encontré la respuesta, alguien ha había creado una librería en PHP, que con un poco de configuración y la creación de una SKILL (obviamente privada, modo desarrollador) en la nube de Amazon, permitía decirle algo al dispositivo y que dicha orden llegara tu ENDPOINT configurado en el servidor web en este caso un NGINX para este acabar ejecutando la orden previamente configurada ya que se trataba de un servidor local.

La verdad es que tardé algunas semanas en entender lo mínimo para poder realizar la implementación. Había muchas partes, temas recientes como lo de las SKILLS, el uso de la librería PHP, se necesitaba que el ENDPOINT funcionara por HTTPS y toda la configuración que rodeaba eso, pero finalmente hice cuadrar las piezas del puzzle y a día de hoy todavía sigue funcionando.

Posteriormente se ha encontrado la forma de enviar comandos desde la terminal para que el dispositivo reaccione y los emita por voz. Como siempre lo primero es instalar las dependencias:

sudo apt-get install oath tool jq

A continuación podremos descargarnos desde https://blog.loetzimmer.de/2017/10/amazon-alexa-hort-auf-die-shell-echo.html los dos ficheros sh:

https://loetzimmer.de/patches/alexa_remote_control.sh (usaremos este)
https://loetzimmer.de/patches/alexa_remote_control_plain.sh

Con ellos podremos una vez completados los datos de la cuenta, y las credenciales en:

SET_EMAIL=""
SET_PASSWORD=""
SET_MFA_SECRET=""

SET_LANGUAGE=’es,es-ES;q=0.7,en;q=0.3’
SET_TTS_LOCAL=’es-ES’
SET_AMAZON=’amazon.es’
SET_ALEXA=’alexa.amazon.es’
SET_CURL=’usr/bin/curl’
SET_OATHTOOL=’/usr/bin/oathtool’
SET_SPEAKVOL="0"
SET_NORMALVOL="10"
SET_DEVICEVOLNAME=""
SET_DEVICEVOLSPEAK=""
SET_DEVICEVOLNORMAL=""

Podremos ejecutar comandos como:

[SPEECH]
./alexa_rc.sh -d Dispositivo-Alexa -e speak:’De Perico. Soy Perico de los palotes’

[SPEECH+]
./alexa_rc.sh -d Dispositivo-Alexa -e speak:’De Perico.’ -e sound:amzn_sfx_scifi_alarm_04 -e speack:’Alerta, Alerta.’

[MUSICA]
./alexa_rc.sh -d Dispositivo-Alexa -e playmusic:AMAZON_MUSIC:’Beethoven Sinfonie No.9′
./alexa_rc.sh -d Dispositivo-Alexa -e playmusic:AMAZON_MUSIC:’Despacito’
./alexa_rc.sh -d Dispositivo-Alexa -e pause

[OTROS]
./alexa_rc.sh -d Dispositivo-Alexa -e weather
./alexa_rc.sh -d Dispositivo-Alexa -e traffic
./alexa_rc.sh -d Dispositivo-Alexa -e flashbriefing
./alexa_rc.sh -d Dispositivo-Alexa -e goodmorning
./alexa_rc.sh -d Dispositivo-Alexa -e singasong
./alexa_rc.sh -d Dispositivo-Alexa -e goodmorning
./alexa_rc.sh -d Dispositivo-Alexa -e tellstory