Cómo le enseñé a Yandex.Alice a hablar sobre juguetes sexuales

Integramos Yandex.Alisa y sex shops a través del arranque Spring.

El tema de los asistentes de voz está ganando impulso, y decidí unirme a esta tendencia integrando el mayor proveedor mayorista de productos íntimos y Yandex.Alisa.

Idea : el proveedor tiene cuentas personales de propietarios de tiendas en línea, y es necesario proporcionar datos analíticos del proveedor a través del canal de voz de Alice.

La integración constaba de dos partes:

  • Integración del servicio web y REST API del proveedor de bienes.
  • Integración de Yandex.Alice y un servicio web para procesar solicitudes de usuarios.

Integración de servicio web y API REST de proveedor de bienes


El servicio debe comprender exactamente qué solicitó el usuario y solicitar estos datos al servidor del proveedor. Decidimos escribir un servicio en Spring Boot.

Configuración del proyecto


Creamos un repositorio en Git y usando spring initializr implementamos el proyecto en el arranque de primavera (especificamos web en dependencias).

La solicitud al servicio viene en formato JSON. Tiene una estructura bien documentada , por lo que generar clases es bastante simple:

imagen

Convenientemente, las palabras clave se resaltan en la solicitud, como una dirección reconocida. Están ubicados en el bloque “entities” :

imagen

Pero en nuestro caso fue más conveniente usar el campo Command . Contiene el texto dictado por el usuario. Dado que el servicio de integración se dedica al reconocimiento de significado, necesitamos analizar las solicitudes. Se pueden separar entre sí (solicitudes de pedidos realizados, solicitudes de pedidos en proceso), por lo que decidimos usar expresiones regulares para analizarlas.

La integración con el proveedor se implementó a través de la biblioteca httpclients de Apache y la deserialización de la respuesta XML a través de jaxb.

Entonces, resolvimos la solicitud y los datos solicitados al proveedor. Pero Alice es una chica estricta y, por lo tanto, no aceptará nuestra respuesta después de tres segundos. Y el usuario puede querer obtener una descripción comparativa de su tienda en los últimos dos años, lo que llevará más tiempo. Para resolver este problema, habilitamos el almacenamiento en caché a través de la biblioteca ehCache y configuramos la carga de datos del usuario. Enfrentó un nuevo matiz: Alice no da casi ningún dato personalizado de usuario. Es decir, ni siquiera ve el correo electrónico en la solicitud entrante. Solo hay userId que muestra el identificador único del dispositivo. Se convirtió en la clave para identificar a los usuarios.

La clave está allí, el caché está, queda por entender cuándo cargar información en él. El usuario no solicita datos de inmediato, pero primero inicia la habilidad (este es el término utilizado en Alice, hablaré más sobre esto a continuación). Para el servidor, esto parece una solicitud con una etiqueta de Command vacía. En este punto, puede comenzar a descargar los datos del cliente y, para cuando se envíe la primera solicitud del usuario, todos los datos ya se han cargado en nuestro servicio.

Para realizar pruebas completas y seguir trabajando en el producto, decidimos implementar la aplicación en la nube en Heroku. Para hacer esto, vaya al sitio web de Heroku , regístrese, descargue heroku cli e instálelo. Luego abra la consola e ingrese heroku login . Vaya al directorio con el proyecto cd ~ / myapp y ejecute heroku create .

Cuando crea la aplicación, Git crea un repositorio remoto llamado heroku, que está asociado con su repositorio local de Git. Por defecto, Heroku genera un nombre aleatorio en el servidor para su proyecto. Puede reemplazarlo pasando el nombre de la aplicación usando heroku create myapp .

Para verificar el inicio de la aplicación, ejecute el comando.

heroku ps:scale web=1

Y si necesita ir por el camino "/", ejecutamos heroku open .
El primer punto de integración está listo.

Integración de Yandex.Alice y servicio de procesamiento de solicitudes


Implementamos la integración a través de la creación de la llamada habilidad en la plataforma Yandex. Primero, regístrese en Yandex, y luego vaya a la página del desarrollador . Haga clic en "crear diálogo" y seleccione el tipo de diálogo:

imagen

En la pestaña "Configuración" y necesita completar los campos:

imagen

  • Nombre de la habilidad : el nombre que se mostrará en el catálogo de Alice. Con él, el usuario podrá activar la habilidad, por ejemplo, "Lanzar la habilidad [Nombre de la habilidad]".
  • Nombre de activación : aquí puede especificar varias opciones para acceder a la habilidad. Por defecto, una opción para el nombre de activación es el nombre de la habilidad.
  • Un ejemplo de una solicitud es una frase mediante la cual Alice activa esta habilidad. Las solicitudes se presentarán como botones en el directorio después de la publicación.
  • URL de Webhook : debe especificar la URL de nuestro servicio web que procesará las solicitudes de los usuarios.
  • Yandex.Cloud: Yandex puede otorgar una subvención a su nube, pero implementaremos el servicio en heroku, por lo que no lo marcaremos.
  • Voz : aquí puede elegir la voz que hablará su habilidad. Hay diferentes variaciones de hombres y mujeres. Pero vale la pena considerar que el usuario probablemente dirá: "Alice, lanza la habilidad", y si Alice responde con el barítono masculino, esto puede ser algo confuso.
  • Limitaciones en las plataformas utilizadas : si se requiere una pantalla cuando se trabaja con una habilidad. En nuestro caso, no, así que no marques.
  • Privacidad : marque la casilla si no desea que la habilidad se refleje en el catálogo.
  • Sitio de verificación de marca : la dirección del sitio para la habilidad. La habilidad para la que completó este campo se moderará solo si ha confirmado los derechos del sitio especificado en Yandex.Webmaster.
  • Categoría : en nuestro caso, es "negocios y finanzas".
  • Descripción : ¿por qué necesitas tu habilidad? La descripción de la habilidad se mostrará en el catálogo de habilidades y estará disponible para los usuarios.
  • Notas para el moderador , quizás el campo más interesante. Para ingresar al catálogo, la habilidad debe ser moderada, lo que significa que debe cumplir con ciertas reglas que se describen aquí. En este campo puede describir el proceso de prueba. Por ejemplo, cómo pasar por la autorización y un escenario de usuario típico.
  • Restricciones de edad : a pesar del tema de la habilidad, transmitiremos datos adecuados para cualquier grupo de edad. Por lo tanto, no ponga una marca.
  • El icono es imprescindible :)

Guarda el diálogo. Todos los cambios en la configuración de habilidades tienen efecto solo después de hacer clic en el botón "Guardar".

Configuramos la integración, escribimos el servicio, ahora puedes probarlo.

Vaya a la pestaña "Pruebas".

imagen

Aquí puedes comprobar el rendimiento de la habilidad. Por conveniencia, hemos agregado acceso rápido a los botones de función a la habilidad.

Hay limitaciones: no puede verificar la habilidad de la frase inicial y no puede verificar la entrada / salida de voz. Y si no debería haber problemas con la frase, la pronunciación correcta de las respuestas se verificará solo después de la publicación de la habilidad.
Después de todas las pruebas, la habilidad se puede enviar para moderación. Para hacer esto, vaya a la pestaña "Información general" y haga clic en "Moderación".

imagen

Después de la moderación, aparecerá el botón Publicar en lugar de este botón. Después de la publicación, la habilidad aparecerá en el catálogo oficial de Yandex.

Características y limitaciones.


Por el momento, las habilidades están algo separadas de la propia Alice (tengo que decir "lanzar la habilidad"), lo que hace difícil percibir a Alice como una asistente de voz completa. Sería genial moldear el contexto de tus habilidades y hacerle preguntas directamente a Alice. No hay forma de obtener información del usuario que no sea userId, que es el identificador del dispositivo. Por lo tanto, cada dispositivo debe ser reautorizado, lo que dificulta el almacenamiento de una única sesión de usuario. Además, la habilidad no puede enviar mensajes push, por lo que no funcionará para hacer la habilidad de recordatorio.

Por otro lado, las habilidades pueden ser una buena plataforma para implementar el control por voz, por ejemplo, electrodomésticos. Además, la habilidad puede ser útil para entrenar o realizar experimentos, para aclarar información sobre pedidos, precios, etc. En general, donde los usuarios pueden hacer una pregunta breve exacta o dar un comando breve.

Source: https://habr.com/ru/post/466021/


All Articles