Logo Sopinet Software
  • Inicio
  • Servicios
  • Otros servicios
  • Proyectos
  • Quiénes somos
  • Nuestro ADN
  • Cómo trabajamos
  • Contacto
  • Calendario
  • Novedades

Suscríbete para saber qué se cuece en Sopinet

skill en alexa

Guia: Crea tu skill en Alexa

Daniel Meijer
Programación

Todos sabemos que ahora mismo hay un hype impresionante sobre el tema de los altavoces inteligentes, Sopinet no quiere quedarse detrás y como curiosos que somos, hemos empezado a darle voz a nuestra gata Azur (ahora si :D). Te contamos como lo hemos hecho y cómo puedes desarrollar tu propia Skill en Amazon Alexa.

Introducción

Todo empezó hace cosa de un mes y medio cuando Amazon me contactó comentando si me apetecía ser betatester de Amazon Echo (que aun no ha salido en España de manera oficial). Digamos que tardé como 0.1 segundos en decir “¡CLARO QUE SI!”. Un par de semanas después, tenia mi flamante Amazon Echo en casa. Después de probar el altavoz, pensé en lo chulo que podría ser preguntar al altavoz como vamos, quien esta trabajando, etc. De modo que me puse manos a la obra. Voy a compartir como hice mi primera skill en Alexa en este mismo post.

Recordaros que aunque no tengais un Amazon Echo, podeis usar el simulador que te ofrece Amazon para hacer las pruebas.

Pasos para desarrollar una Skill en Alexa

Esto es lo que hariamos
1.- Crear una cuenta en AWS
2.- Crear una cuenta de desarollador
3.- Instalación del ask-cli y configuración con AWS
4.- Crear nuevo proyecto y explicación de la estructura.
5.- Picar código
6.- ask deploy
7.- Testing y a certificación!

1. Crear una cuenta en AWS

Lo primero que tenemos que hacer es abrirnos una cuenta en Amazon Web Services (AWS), esto lo necesitaremos para usar la herramienta Lambda que nos permitirá incluir alli el código del backend de nuestra Skill. Usar Lambda es totalmente gratuito a menos que superemos las 1.000.000 peticiones al mes.

Para abrir una cuenta en AWS simplemente tenemos que ir a Amazon y seguir los pasos. Te pedirá los datos de la tarjeta, pero eso es simplemente para la verificación de la cuenta.

Cuando hayamos abierto una cuenta en AWS, empezará a contar un año de pruebas de otros servicios como por ejemplo EC2, que podrías usarlo para otras cosas 🙂

2. Crear una cuenta de desarollador

Una vez abierto una cuenta en AWS, tenemos que abrir una cuenta de desarrollador en amazon, lo puedes hacer en el siguiente enlace: developer.amazon.com

Estando logueado, veremos un panel para poder crear skills, alli nosotros NO le vamos a dar, ya que vamos a usar el ASK-CLI para hacer deploy de nuestro codigo de la Skill.

3. ASK-CLI

Para instalar ask-cli necesitamos tener instalado node, podemos comprobarlo ejecutando

node --version

Si ya lo tenemos instalado, podemos seguir con el siguiente paso, que es la instalacion de ask-cli, para ello:

npm install -g ask-cli

Ahora tenemos que configurarlo con el siguiente comando:

ask init

Una vez aqui, tenemos que seguir los pasos que sale en la web de desarrolladores de amazon para dar permisos a ask-cli para usar AWS y la cuenta de developer que hemos creado antes.

4. Crear nuevo proyecto y explicación de la estructura

Ha llegado el momento de crear (por fin) el proyecto, para ello tenemos que ejecutar:

ask new

Esto lo que te hace es crear un nuevo proyecto con el template de “hello world”.

Especificado un nombre para la skill, se nos empezará a descargar la plantilla sobre con lo que vamos a trabajar.

Esto sería la estructura que tendrían los archivos:

├── lambda
│   └── custom
│       ├── index.js
│       ├── node_modules
│       │   ├── ask-sdk-core
│       │   │   ...
│       │   └── ask-sdk-model
│       │       ...
├── models
│   └── en-US.json
└── skill.json
  • skill.json: aquí es donde se especifica en un archivo json el idioma que tendría la skill, el nombre de la skill, las descripciones, unos ejemplos de las frases que usaríamos, etc…
  • models/en-US.json: aqui es donde se configura para el idioma ingles los intents, si queremos hacer una skill en español, simplemente podríamos renombrar el archivo a ES-es.json. Aqui se define lo siguiente:
    • invocationName: aquí se define el nombre por la que la skill escuchará (Alexa, abre <nombre_skill>)
    • intents: son como rutas donde la skill puede ir, por ejemplo dentro de la skill de Sopinet podríamos preguntarle “Alexa, pregunta a <nombre_skill>¿Quienes están trabajando ahora mismo en remoto?”, aquí entraría en una intent que se podría llamarse “enLaOficinaIntent”, a su vez tambien le podriamos preguntar “Alexa, pregunta a <nombre_skill> ¿A quien le toca poner hoy el desayuno?” y en este caso entraria en otra intent dentro de la misma skill.
      Por defecto tenemos una HelloWorldIntent.Las intents suelen tener “samples”, que son las frases por las que entrará en esa intent.
      Para el ejemplo de antes, seria algo asi:

            "intents": [
      ...
      
              {
                "name": "enLaOficinaIntent",
                "slots": [
      
                ],
                "samples": [
                  "Quienes están trabajando ahora mismo en remoto"
                ]
              },
              {
                "name": "desayunosIntent",
                "slots": [
      
                ],
                "samples": [
                  "A quien le toca poner hoy el desayuno"
                ]
              }
            ]
      ...
      
  • lambda/custom/index.js: aquí es donde iría toda la lógica de las skills, como por ejemplo las respuestas a las preguntas que le haríamos a Alexa. Os comento mas abajo sobre este archivo
  • lambda/custom/node_modules: aqui como en cualquier proyecto con node, aqui es donde se guardan las librerias que usa el proyecto.

5. Picar código

Ahora toca la parte mas divertida de todo esto, picar código, vamos a empezar con abrir nuestro editor de texto preferido con el archivo index.js.

Vamos a centrarnos en este bloque:

const HelloWorldIntentHandler = {
  canHandle(handlerInput) {
    return handlerInput.requestEnvelope.request.type === 'IntentRequest'
      && handlerInput.requestEnvelope.request.intent.name === 'HelloWorldIntent';
  },
  handle(handlerInput) {
    const speechText = 'Hello World!';

    return handlerInput.responseBuilder
      .speak(speechText)
      .withSimpleCard('Hello World', speechText)
      .getResponse();
  },
};

El nombre del constante va a ser “<nombre_intent>Handler” a partir de ahora, todo lo que hay entre los corchetes es lo que se va a ejecutar cuando las samples coincidan con el intent. (A quien le toca poner hoy el desayuno –> desayunosIntentHandler). La variable speechText es lo que diría en voz alta (protip: puedes añadir entonaciones personalizados/mp3/…, mas info aqui).

.speak() -> esto es lo que te diria en voz alta Alexa.
.withSimpleCard(”,”) -> esto lo que hace es imprimir por pantalla la respuesta, ya que existen dispositivos alexa con pantalla (obligatorio a la hora de subirlo a la tienda). El primer parametro es el titulo y el segundo es el cuerpo del mensaje.

Cualquier pregunta que le hagas a tu skill que no este contemplado, te dira algo parecido a: “Perdona. No he podido encontrar la respuesta a lo que me has preguntado.”, si le preguntas “Alexa, abre ” sin mas, entonces entraria en una intent por defecto llamado “LaunchRequestHandler”.

Recuerda que esto es JS, que fluya la imaginación 😀

6. ask deploy

Cuando hayamos terminado con la skill, podemos subirlo ejecutando en la terminal:

ask deploy

Esto tardaría unos segundos y lo tendríamos subido a lambda y a la consola de desarrolladores de Amazon.

7. Testing

Una vez subido, podemos probarlo directamente en el panel de desarolladores de Amazon, en la pestaña “Test”, alli tienes un Chat donde puedes hablar con tu skill.

Como hacer una skill en alexa

Cuando hayas comprobado de que la skill funciona correctamente, puedes pasarlo para certificación, para ello hacemos clic en la pestaña “Distribution”, revisamos nuestra info y si esta todo correcto lo subimos a certificación. Una vez mandado, en cuestión de un par de días te responden diciendo que si lo han aceptado o rechazado, en caso de que lo han rechazado, te dirán donde has fallado para que lo soluciones.

Si tenéis vuestra skill publicada, ponedlo por los comentarios que le eche un ojo 😀

Deja un comentario Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿De qué hablamos?

  • Entorno Sopinet
  • Lean Startup
  • Más allá de Agile
  • Métricas
  • Ofertas de Trabajo
  • Programación
  • Proyectos Propios
  • Social Media
  • Talleres

Entradas recientes

  • Algo más que cultura, algo más que un adjetivo
  • Sysmana 2019 & LanParty de Sopinet
  • Validando en 7 horas | Validación de Guerrilla
  • Blockchain conceptual y por qué lo estamos usando | Más allá de Agile VIII
  • Métricas al detalle I – Perfiles de usuario en Mixpanel

Encuéntranos en

Córdoba (Córdoba)
C/ Maestro Priego López nº 43, CP 14004
Cardedeu (Barcelona)
C/ Montseny nº 10 1-1, CP 08440

Contáctanos a

900 831 133
[email protected]

Horario de oficina

Lunes a Viernes
De 8:00 a 14:30
© 2018 Sopinet Software S.L. | Aviso legal | Política de privacidad | Cookies | Claúsula protección datos