Hola Mi nombre es Narek Markosyan y soy desarrollador de backend en Citimobil. Quiero contarles sobre nuestro
bot cerrado de
Telegram "Mystery shopper" .
Prologo
Nadie usa lentes rosas en CityMobile, entendemos bien que nuestro servicio no es perfecto, por lo tanto, siempre estamos trabajando para mejorarlo. Los problemas del cliente pueden estar asociados con la aplicación, con el cálculo del precio, pero con mayor frecuencia con el controlador.
Amamos a nuestros conductores e intentamos que su trabajo sea más agradable y rentable, pero debido a un conductor sin escrúpulos podemos perder varios clientes y privar a los conductores que honestamente hacen su trabajo.
Por esta razón, decidimos desarrollar una herramienta para responder rápidamente a las quejas relacionadas con los conductores.
¿Por qué necesitamos un bot?
Absolutamente todas las quejas de nuestros clientes son consideradas por los empleados del departamento de soporte, pero no podemos confiar plenamente en las estadísticas recibidas de los clientes por varias razones:
- no todos los clientes dejan comentarios si algo salió mal;
- no siempre podemos estar seguros de la objetividad de los clientes;
- no queremos y no podemos hacer que los clientes tengan muchas preguntas aclaratorias para obtener una imagen completa.
Entonces que hacer? ¡Pide ayuda a nuestros colegas!
- Es muy probable que los empleados no se olviden de informar un problema;
- Los empleados son más objetivos . No hasta el final, pero aún así :)
- Puede ir a un colega y conocer todos los detalles necesarios.
Por supuesto, cuando surgen problemas, siempre puede llamar a la sala de despacho y prescindir de intermediarios, pero el bot le ayuda a realizar dos tareas importantes: le
recuerda a qué debe prestar atención y le permite informar un problema con solo hacer clic en
un botón .
¿Cómo funciona el bot?

El comprador misterioso es muy simple. Consta de solo dos controladores:
El primer controlador toma de nuestros viajes API que se han completado recientemente o están en el estado de "En tránsito", y envía la pregunta del primer viaje al chat.
El segundo controlador accede a la API de Telegram y recoge los mensajes no leídos, revisa cada mensaje por turno y envía una respuesta al chat.
Por supuesto, fue posible hacer que nuestro servidor enviara automáticamente mensajes al bot del viaje y las respuestas de los usuarios de Telegram no llegaron en lotes, sino al momento del envío, pero después de las discusiones decidimos hacer el mecanismo descrito anteriormente. Hubo varias razones para esto:
- Con esta implementación, el servicio está completamente cerrado para las solicitudes entrantes en todos los puertos, por lo que no podemos temer los intentos de piratería o los ataques DDOS;
- Si muchos mensajes provienen de los usuarios al mismo tiempo, Telegram no nos bombardeará con solicitudes ;
- Si el bot se vuelve aburrido, no afectará a nuestro servidor principal y no afectará los procesos comerciales.
Elegimos MySQL como base para el bot. Cualquier base de datos sería adecuada para nosotros, incluso noSQL, pero elegimos MySQL para facilitar que el departamento de análisis procese los datos necesarios.
En cuanto al lenguaje, aquí elegimos entre PHP y GoLang. Nos detuvimos en PHP, porque "por qué no". Con la implementación que tenemos, no usaríamos las principales ventajas de Go, pero complicaríamos el desarrollo posterior, no todos nuestros desarrolladores escriben en Go. Si tienes una idea de qué sería mejor que PHP en esta implementación de Go, estaré encantado de leer en los comentarios.
Mejoras
No ha habido muchas mejoras desde la primera versión. Después del lanzamiento oficial, comenzamos a recopilar comentarios y, como resultado, solo encontramos dos problemas.
El primer problema es la poca memoria . En la primera implementación, el bot comenzó a interrogar al empleado 5 minutos después del viaje. Resultó que durante este tiempo el pasajero logró olvidar algunos detalles, por ejemplo, el número de registro del automóvil. Después del refinamiento, el bot comenzó la encuesta un minuto después de que el pasajero se subiera al automóvil. El bot hizo preguntas, la respuesta a la cual ya se sabe con certeza (limpieza del automóvil, si el automóvil tiene los números correctos, etc.). Después del viaje, el bot regresó con otro paquete de preguntas, cuyas respuestas se aclaran solo durante el viaje.
El segundo problema es que casi siempre todo está bien con nosotros . No importa cuán extraño pueda sonar, pero desde el punto de vista del bot, esto se ha convertido en un problema. Nuestros colegas están cansados después de cada viaje 10 veces para responder "todo está bien". Resolvimos este problema agrupando preguntas: combinamos todas las preguntas que se hicieron durante el viaje y todas las preguntas que se hicieron después en dos preguntas idénticas: "¿Está todo bien?" Con un conjunto diferente de respuestas.

En un futuro cercano, planeamos aumentar el número de clientes de confianza y, por lo tanto, hacer que el bot sea más eficiente. Para hacer esto, deberá rehacer la autorización y agregar monitoreo a los eventos críticos. Si habrá cambios interesantes, escribiré un artículo separado sobre ellos ...