你好 我叫Narek Markosyan,我是Citimobil的后端开发人员。 我想告诉您有关我们封闭的
Telegram机器人“神秘购物者”的信息 。
序言
在CityMobile中,没有人戴着粉红色眼镜,我们深知我们的服务并不完美,因此我们一直在努力改善它。 客户问题可能与应用程序,价格计算相关,但最常见的是与驾驶员相关。
我们热爱我们的司机,并努力使他们的工作更愉快,更有利可图,但是由于一位不道德的司机,我们可能会失去几位客户,从而剥夺了诚实地工作的司机。
因此,我们决定开发一种工具来快速响应与驾驶员有关的投诉。
为什么我们需要一个机器人
支持部门的员工绝对会考虑客户的所有投诉,但是由于以下几个原因,我们不能完全依赖客户的统计信息:
- 如果出现问题, 并非所有客户都会留下反馈;
- 我们不能始终确保客户的客观性 ;
- 我们不希望,也无法让客户提出许多澄清问题来获得整体印象。
那该怎么办呢? 要求我们的同事帮助!
- 员工很可能不会忘记报告问题。
- 员工更客观 。 直到最后,但仍然:)
- 您可以去找同事,找出所有必要的细节。
当然,当出现问题时,您总是可以呼叫调度室而无需中介机构,但该机器人可以帮助执行两项重要任务:它使您
想起需要注意的事情,并且只需单击一下
按钮即可报告问题。
该机器人如何工作?

神秘顾客很简单。 它仅包含两个处理程序:
第一个处理程序从我们最近完成的API行程中获取或处于“正在运输”状态的API行程,并将第一个行程问题发送到聊天室。
第二个处理程序访问Telegram API并获取未读消息,依次遍历每个消息并将响应发送给聊天。
当然,有可能使我们的服务器自动将消息发送到行程的机器人,并且来自Telegram的用户答复不是批量发送的,但是在发送时,但是经过讨论,我们决定采用上述机制。 这有几个原因:
- 通过这种实现,该服务针对所有端口上的传入请求完全关闭 ,因此我们不必担心黑客尝试或DDOS攻击。
- 如果许多消息同时来自用户,则Telegram不会用请求轰炸我们 ;
- 如果漫游器变得呆板,则不会影响我们的主服务器,也不会影响业务流程。
我们选择MySQL作为该机器人的基础。 任何数据库都适合我们,甚至noSQL都适用,但是我们选择了MySQL,以使分析部门更轻松地处理必要的数据。
至于语言,我们在PHP和GoLang之间进行选择。 我们停在PHP,因为“为什么不行”。 通过我们已有的实现,我们不会利用Go的主要优势,但是会使进一步的开发变得复杂-并非我们的所有开发人员都在Go上编写代码。 如果您有一个想法在Go的此实现中有什么比PHP更好的,我将很高兴阅读注释。
增强功能
自从第一个版本以来,没有太多改进。 正式发布后,我们开始收集反馈,结果仅发现了两个问题。
第一个问题是记忆力不足 。 在第一个实施方案中,漫游器在行程5分钟后开始询问员工。 事实证明,在这段时间内,乘客设法忘记了一些细节,例如汽车的登记号。 经过改进后,机器人在乘客上车后一分钟开始进行调查。 机器人问了一些问题,答案是确定的(汽车的清洁度,汽车的编号是否正确等)。 行程结束后,漫游器返回了另一捆问题,只有在旅途中,答案才变得清晰。
第二个问题是我们几乎一切都很好 。 不管听起来多么奇怪,但是从机器人的角度来看,这已经成为一个问题。 每次出差10次后,我们的同事都会回答“一切都很好”。 我们通过对问题进行分组来解决该问题:我们将旅途中提出的所有问题和之后提出的所有问题合并为两个相同的问题:“一切都还好吗?”,并采用不同的答案。

在不久的将来,我们计划增加可信赖客户的数量,从而使机器人更高效。 为此,您将需要重做授权并将监视添加到关键事件。 如果会有有趣的变化,我将撰写有关它们的单独文章...