En este apartado veremos como crear un skill para amazon echo multilenguaje para eso usaremos nuestro skill que hemos creado desde cero llamado Adivina el numero, inicialmente fue creado en español, pero como todavía no lo podemos probar en un amazon echo real, solo lo podemos probar en la plataforma de amazon developer, entonces vamos a agregar el idioma ingles para poder así poder probarlo en un Amazon echo real.
He creado un video explicando como hacerlo y qui voy a resumirlo en pocas palabras lo que tenemos que hacer.
agregando otro idioma para nuestro skill
en la plataforma developer agregamos un idioma mas yo elegi ingles americano, la sigla es [ en-US ] existen varias mas, como :
'en-US': english, 'en-GB': english, 'en-CA': english, 'en-IN': india english, 'en-AU': english, 'fr-FR': Frances, 'de-DE': Aleman, 'es-ES': espanol, 'it-IT': italiano,
esto tenemos que tener en cuenta porque cuando en lambda tenemos que controlar el idioma con la cual el usuario esta haciendo la llamada y en base a ese idioma nuestro skill va a trabajar.
el siguiente paso en el de copiar desde el idioma español lo que esta JSon editor, y copiarlo en el idioma ingles.
después de eso tenemos que verificar y hacer los cambios necesarios, por ejemplo en nuestro caso, en el slot restart decía tenia el valor reinicia. en este caso vamos a decir restart, entonces cambiamos el valor reinicia con restart.
Tambien tenemos que cambiar el Invocation name (porque sera en Ingles) yo le puse guess the number.
después de cada cambio tenemos que hacer click en build model para que los cambios tengan efecto.
Ahora nos vamos a lambda a nuestra función, qui debemos copiar nuestro principal handler y pegarlo
Asi va quedar nuestro handler
exports.handler = function (event, context, callback) { const alexa = Alexa.handler(event, context, callback); var locale = event.request.locale; if (locale == 'en-US'){ alexa.registerHandlers(UShandlers); } else { alexa.registerHandlers(EShandlers); } alexa.execute(); };
y ahora vamos a tener 2 handler
uno en Espanol y uno en Ingles
y vamos a sostituir const handlers = { --> con este const EShandlers = {
y creamos otro handler const UShandlers ={ y aqui pegamos el anterior, solo tenemos que traducir donde Alexa responde.
y donde controla el valor reinicia y lo cambiamos con restart.
para mas información pueden ver el video:
Corrigiendo error en el código [números mayores de 100]
En el código he hecho un cambio por que gracias a un usuario que comento en youtube me preguntaba que si decía un numero mas alto de 100 daba error con ?
entonces para resolver ese problema en la parte donde controlamos y si el numero que ha dicho el usuario es o no el numero que Alexa esta pensando agregamos un if donde controlamos si el numero es mayor de 100 debe repetir.
así quedaría mi if
if(this.attributes['guessNumber']==getNumber){ this.emit(':tell','Ganaste, El numero era '+ this.attributes['guessNumber'] + ', Muy bien sigue asi '); }else if(getNumber>100){ this.emit(':ask','el numero es mayor de 100 porfavor di un numero entre 1 y 100'); } else if(this.attributes['countContainer']==7){ // aqui controla si hemos llegado al maximo de nuestros intentos this.emit(':tell',' Perdiste, el numero era '+this.attributes['guessNumber']+ ' lo siento vuelve a intentar, di alexa empieza adivina el numero '); } else if (this.attributes['guessNumber']<getNumber){// la condicion si el numero que hemos dicho es menor this.emit(':ask', getNumber+ ', es muy alto, prueba un numero menor'); } else{//la condiciopn si el numero que hemos dicho es mayor this.emit(':ask', getNumber+ ', es muy bajo, prueba un numero mas alto.'); } },