我正在写一个电报机器人。不管我怎么用谷歌搜索,但到处都只有发送消息和其他东西的手册。我对机器人的架构感兴趣。
我的机器人很简单,基本上取代了程序的 UI。我做了类似状态机的事情,但没有从一种状态到另一种状态的显式转换。那些。我有一堆类继承自 BaseBotState 类的 Activate 方法。
当前状态存储在描述用户的对象中。
激活函数更改用户的当前状态,并在下一条消息中调用不同的状态。
有没有和我类似的更好的方法?某种最佳实践?
如果问题不是很具体,我深表歉意。
我正在写一个电报机器人。不管我怎么用谷歌搜索,但到处都只有发送消息和其他东西的手册。我对机器人的架构感兴趣。
我的机器人很简单,基本上取代了程序的 UI。我做了类似状态机的事情,但没有从一种状态到另一种状态的显式转换。那些。我有一堆类继承自 BaseBotState 类的 Activate 方法。
当前状态存储在描述用户的对象中。
激活函数更改用户的当前状态,并在下一条消息中调用不同的状态。
有没有和我类似的更好的方法?某种最佳实践?
如果问题不是很具体,我深表歉意。
有一次,我也问过这个问题。机器人从未真正写过它。但这个想法是这样的。
有WorkflowEngine之类的东西。其中有很多,从 Microsoft 提出的非常古老的到开源实现。在其中,我们可以根据条件设置“任务”所在的状态以及它可以去哪里。
事实上,我们与机器人的对话是状态转换(沿着状态树)。这是具有一组状态和转换的状态机。但是为了不自己重新发明轮子,我会以一些WorkflowEngine为基础。要使用数据和外部服务,您可以使用通常的单体架构,典型的提供者和服务通过 IoC 容器工作。
机器人通常不是很复杂,因此隔离一些微服务是没有意义的。