The goal of this repository is to create a virtual assistant that will be used by a computer company, Fake IT Solutions, on a web page. The end customer must be able to make inquiries and be directed to human assistance when necessary.
- 1. Sobre Algar Tech
- 2. Desafío de negocio
- 3. Objetivo
- 4. Tecnologias aplicadas
- 5. Desarrollo de la Solución
- 5.1. Pre-requisitos
- 5.2. Resumen de Tareas
- 5.3. Desarollo
- 6. Envío
- 7. Sobre la evaluación
Desde hace 21 años repensamos la experiencia de sus clientes y la gestión del entorno tecnológico con un único propósito: conectar personas y organizaciones de forma única para ser el mejor socio para sus mejores resultados.
Operamos en toda Latinoamérica y nuestro mayor diferencial es: ¡nuestra Gente! Aquí todos se sienten como en casa. Nuestro entorno es COOL, la diversidad es nuestra especialidad y nuestro conocimiento es nuestra fuerza.
Nuestra misión es conectar personas y organizaciones de una manera única. Estamos hechos para quienes buscan resultados, por eso apostamos por transformar la relación entre clientes y empresas a través de soluciones inteligentes.
Las top 5 personas mejor puntuadas en el desafío recibirán un voucher de US$ 520 cada una.
Estamos en la cúspide de una revolución tecnológica que está cambiando la forma en que las empresas hacen negocios. Y el proceso de relación con el cliente no es diferente. La distancia social que impuso la pandemia aceleró la implementación de tecnologías, como la inteligencia artificial (IA), en la atención al cliente en los más diferentes canales digitales.
En este sentido, los chatbots son fundamentales para optimizar el servicio, brindando respuestas rápidas, estandarizadas, correctas, seguras y asegurando una sensación de conexión con el cliente durante el servicio. Nuestro desafío es integrar chatbots y servicio humano en una interacción de chat con un cliente, que será manejado por un servicio automatizado y transferido a un asesor cuando se requiera interacción humana.
El objetivo será crear un asistente virtual que será utilizado por una empresa de informática, Fake IT Solutions, en una página web. El cliente final debe poder realizar consultas y ser dirigido a la asistencia humana cuando sea necesario.
Durante el chat, el asistente debe responder información sobre los servicios de la empresa, ayudar al cliente a resolver algunos tipos de problemas y, al identificar que no fue posible resolver un problema, comunicar al usuario con un asistente humano.
Para este desafío se utilizarán los siguientes servicios disponibles en IBM Cloud:
- Watson Assistant, una plataforma para la creación de chatbots de manera fácil, a través de intenciones, entidades y flujo de diálogo, y varias posibilidades de integración.
Para realizar este desafío, debes cumplir con los siguientes requisitos previos:
- Registrarte en la Maratón Behind the Code y confirmar tu correo electrónico;
- Tener una cuenta de IBM Cloud, que puede ser Lite o Pay-As-You-Go (no es necesario registrarse para el evento con la misma dirección de correo electrónico utilizada para crear tu cuenta de IBM Cloud).
- Crear una instancia de los servicios de desafío en IBM Cloud: Watson Assistant (obligatorio);
- Crear una
skill
, de tipodialog
, en la instancia de Watson Assistant; - Crear
intents
yentities
neecesarias para el diálogo; - Implementar el flujo de diálogo propuesto, basado en las intenciones y entidades creadas;
- Probar y validar la solución, repitiendo los pasos 2 a 4 según sea necesario;
- Entregar la solución en la página del desafío.
El desafío es implementar un asistente virtual basado en Watson Assistant. Para aprender a usar esta herramienta puedes ver el siguiente video:
Crea una skill
para su asistente, del tipo Dialog skill
, en español. Dentro de la skill, debes implementar las funciones del asistente.
El flujo de conversación esperado es el siguiente:
1. Al iniciar una conversación, el asistente siempre debe presentarse y preguntar al cliente cómo quiere que lo llamen. No es necesario realizar ninguna validación en la respuesta.
2. Después de capturar el nombre, el asistente debe preguntar por la ciudad del cliente. No es necesario realizar ninguna validación en el nombre de la ciudad.
3. Después de capturar la ciudad, el asistente debería preguntar cómo puede ayudar.
3.1. Si el cliente dice que tiene un problema, el asistente debe preguntar qué problema tiene el cliente y pasar a las condiciones 3.2. y 3.3.
3.2. Si el cliente dice que tiene un problema al usar una impresora local, el asistente debe preguntar cuál es el modelo de impresora y responder de acuerdo con el modelo. Si es un modelo conocido, el asistente debe enviar el enlace del driver de la impresora, en caso contrario, el flujo debe ir a la condición 3.3, teniendo el modelo de la impresora como descripción del problema. Las referencias del modelo y los enlaces de drivers esperados se encuentran en la Tabla 1, a continuación.
3.3. Si el cliente dice que tiene algún otro problema, el asistente debe guardar esta descripción del problema y preguntar si puede transferir al cliente a un operador humano y, de ser así, pasar a la condición 3.3.1. De lo contrario, el asistente debería preguntar si puede ayudar con algo más y volver al flujo inicial.
3.3.1. Si el cliente quiere ser transferido a un asistente humano, el asistente debe realizar una llamada a una API a través de Webhook, enviando como parámetro el nombre del cliente, la ciudad y la descripción del problema. El Webhook responderá si hay un asistente humano disponible o no. Los detalles para comunicarse con esta API se encuentran en la siguiente sección.
3.3.1.1. Si hay un asistente humano disponible, el asistente debe decir que transferirá y finalizar la conversación.
3.3.1.2. Si no hay un asistente humano disponible, el asistente debería indicarle que vuelva a intentarlo pronto y finalizar la conversación.
4. Cuando se le pregunte sobre la empresa, o sobre los servicios que ofrece, el asistente debe hablar un poco sobre la empresa de informática y decir que por el momento sólo ofrecen ayuda para problemas con impresoras. Esta respuesta debe contener necesariamente el nombre "Fake IT Solutions" y "problemas con impresoras".
Modelo | Driver |
---|---|
A1201 | https://fake.drivers.example.com/printer/A1201 |
A1202 | https://fake.drivers.example.com/printer/A1202 |
A1203 | https://fake.drivers.example.com/printer/A1203 |
B904 | https://fake.drivers.example.com/printer/B904 |
B905 | https://fake.drivers.example.com/printer/B905 |
Otro | Desconocido. Vaya al paso 3.3. del flujo de la conversación, utilizando el modelo como descripción del problema. |
Tabla 1. Modelos de impresora y respuestas esperadas
Atención: El Asistente debe interactuar con el cliente solo usando texto, no usando Options, imágenes o cualquier otro tipo de respuesta.
Para verificar si hay un asistente humano disponible, se debe realizar una llamada API a la siguiente dirección: https://help.maratona.dev. Esta llamada debe ser de tipo POST y debe contener un JSON con los siguientes parámetros:
{
"name": "Nombre del cliente",
"city": "Ciudad del cliente",
"problem": "Descripción del problema"
}
La API responderá con el siguiente JSON, que puede tener el valor true
o false
:
{
"available": true
}
Esta llamada a la API se puede realizar a través de un Webhook en Watson Assistant. Para obtener más detalles sobre cómo hacer esto puedes ver este video sobre Webhooks.
Con la skill lista, debes ir al menú de Watson Assistant y crear un asistente, asociándole esta skill. El último paso es realizar el envío.
Sólo se aceptará un envío para el desafío, así que pruébalo bien antes de enviarlo.
Para resolver el desafío necesitarás cuatro valores, a saber:
API key
yURL
del Watson Assistant, que puedes encontrar en la página de inicio de Watson Assistant, dentro de IBM Cloud, como se muestra en la siguiente imagen:
Skill ID
, que se encuentra en los detalles de la habilidad, haciendo clic en el icono, como se muestra en la imagen siguiente:
Assistant ID
, presente en los detalles del asistente haciendo clic en el icono como se muestra en esta imagen:
Para enviar la solución debes acceder a la página de desafío: https://maratona.dev/challenge/4 y enviar las credenciales solicitadas.
Podrás realizar un seguimiento del estado de la entrega accediendo a la página del desafío, iniciando sesión en tu cuenta.
Una semana después del inicio del desafío, nuestro sistema de evaluación automatizado iniciará las evaluaciones. Utilizará los datos para calcular una puntuación numérica del 1 al 100, basada en el nível de asertividad de las respuestas del asistente, de acuerdo con el flujo de conversación esperado. Recuerda dejar tu servicio disponible hasta que la solución sea evaluada.
El desafío debe ser entregado hasta el 12 de diciembre, y el participante recibirá una bonificación del 10% de la puntuación total (10 puntos), independientemente del resultado de su desafío. Por tanto, la puntuación máxima posible es 110 (puntuación de 100 + bonificación de 10).
Atención: el tiempo de entrega es un criterio de desempate, en caso de dos soluciones con la misma puntuación. Nos reservamos el derecho de darle a um envío cero de puntuación si:
- Se detecta plagio, de uno o más participantes. En este caso, se dará cero puntos al desafio entregado por todos los participantes con la misma solución.
- Documentación de Watson Assistant
- Actualiza tu chatbot en WhatsApp con IBM Watson Assistant
- Crea un asistente de voz con Watson Assistant
- Cómo crear un chatbot utilizando Watson Assistant y Discovery.
Recuerda que puedes acceder al Discord oficial del Maratón 2021 para hacer preguntas y/o interactuar con otros participantes: Discord.
Copyright 2021 Maratona Behind the Code
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.