Client mystère de CityMobile

Salut Je m'appelle Narek Markosyan et je suis développeur backend chez Citimobil. Je veux vous parler de notre bot Telegram fermé "Client mystère" .

Prologue


Personne ne porte de lunettes roses dans CityMobile, nous comprenons bien que notre service n'est pas parfait, donc nous travaillons toujours pour l'améliorer. Les problèmes clients peuvent être associés à l'application, au calcul du prix, mais le plus souvent au chauffeur.

Nous aimons nos chauffeurs et essayons de rendre leur travail plus agréable et rentable, mais à cause d'un chauffeur sans scrupules, nous pouvons perdre plusieurs clients et ainsi priver des chauffeurs qui font honnêtement leur travail.

Pour cette raison, nous avons décidé de développer un outil pour répondre rapidement aux réclamations liées aux conducteurs.

Pourquoi avons-nous besoin d'un bot


Absolument toutes les plaintes de nos clients sont prises en compte par les employés du service d'assistance, mais nous ne pouvons pas nous fier entièrement aux statistiques reçues des clients pour plusieurs raisons:

  • tous les clients ne laissent pas de commentaires en cas de problème;
  • nous ne pouvons pas toujours être sûrs de l' objectivité des clients;
  • nous ne voulons pas et ne pouvons pas obtenir des clients un tas de questions de clarification pour obtenir l'image complète.

Alors que faire? Demandez à nos collègues de vous aider!

  • Les employés n'oublieront probablement pas de signaler un problème;
  • Les employés sont plus objectifs . Pas avant la fin, mais quand même :)
  • Vous pouvez aller voir un collègue et découvrir tous les détails nécessaires.

Bien sûr, lorsque des problèmes surviennent, vous pouvez toujours appeler la salle de répartition et vous passer d'intermédiaires, mais le bot aide à effectuer deux tâches importantes: il vous rappelle ce à quoi vous devez faire attention et vous permet de signaler un problème en cliquant sur un bouton .

Comment fonctionne le bot?


image

Le client mystère est très simple. Il se compose de seulement deux gestionnaires:

Le premier gestionnaire prend de nos voyages API qui ont récemment terminé ou sont dans l'état "En transit", et envoie la première question de voyage au chat.

Le deuxième gestionnaire accède à l'API Telegram et récupère les messages non lus, passe en revue chaque message tour à tour et envoie une réponse au chat.

Bien sûr, il était possible que notre serveur envoie automatiquement des messages au robot du voyage et les réponses des utilisateurs du télégramme ne venaient pas par lots, mais au moment de l'envoi, mais après discussions, nous avons décidé de faire le mécanisme décrit ci-dessus. Il y avait plusieurs raisons à cela:

  • avec cette implémentation, le service est complètement fermé pour les demandes entrantes sur tous les ports, nous ne pouvons donc pas avoir peur des tentatives de piratage ou des attaques DDOS;
  • si de nombreux messages proviennent d'utilisateurs en même temps, Telegram ne nous bombardera pas de demandes ;
  • si le bot devient terne, cela n'affectera pas notre serveur principal et n'affectera pas les processus métier.

Nous avons choisi MySQL comme base pour le bot. Toute base de données nous conviendrait, même noSQL, mais nous avons choisi MySQL pour faciliter le traitement des données nécessaires par le département analytique.

Quant au langage, nous avons choisi ici entre PHP et GoLang. Nous nous sommes arrêtés à PHP, car "pourquoi pas". Avec l'implémentation que nous avons, nous n'utiliserions pas les principaux avantages de Go, mais compliquerions le développement ultérieur - tous nos développeurs n'écrivent pas sur Go. Si vous avez une idée de ce qui serait mieux que PHP dans cette implémentation de Go, je serai heureux de lire dans les commentaires.

Améliorations


Il n'y a pas eu beaucoup d'améliorations depuis la première version. Après le lancement officiel, nous avons commencé à recueillir des commentaires et, par conséquent, nous n'avons trouvé que deux problèmes.

Le premier problème est la mémoire courte . Dans la première mise en œuvre, le bot a commencé à interroger l'employé 5 minutes après le voyage. Il s'est avéré que pendant ce temps, le passager a réussi à oublier certains détails, par exemple le numéro d'immatriculation de la voiture. Après raffinement, le bot a commencé l'enquête une minute après que le passager soit monté dans la voiture. Le bot a posé des questions dont la réponse est déjà connue avec certitude (propreté de la voiture, si la voiture a les bons numéros, etc.). Après le voyage, le bot est revenu avec un autre paquet de questions, dont les réponses ne deviennent claires que pendant le voyage.

Le deuxième problème est que tout va presque toujours bien avec nous . Peu importe à quel point cela peut sembler étrange, mais du point de vue du bot, c'est devenu un problème. Nos collègues sont fatigués 10 fois après chaque voyage pour répondre «tout va bien». Nous avons résolu ce problème en regroupant les questions: nous avons combiné toutes les questions posées pendant le voyage et toutes les questions posées après en deux questions identiques: «Tout va bien?» Avec un ensemble de réponses différent.

image

Dans un avenir proche, nous prévoyons d'augmenter le nombre de clients de confiance et ainsi rendre le bot plus efficace. Pour ce faire, vous devrez refaire l'autorisation et ajouter une surveillance aux événements critiques. S'il y aura des changements intéressants, j'écrirai un article séparé à leur sujet ...

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


All Articles