问题标签 [pytransitions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 具有有限状态机的电报机器人
我正在开发一个带有 FSM 的电报机器人。它应该是用于订购披萨的聊天机器人。对话应该是这样的:
- 你想要什么样的披萨?大或小?
- 伟大的
- 你将如何付款?
- 用现金
- 你想要一个大披萨,现金付款吗?
- 是的
- 谢谢你的订单
我有这个代码:
僵尸软件
而这个有限状态机的代码。我用过pytransitions/transitions
FSM.py
但问题是它只是贯穿所有内容,而不是等待用户的回答。只需发送所有的questin。
ps如果写错了,我很抱歉这是我的第一个问题。
pytransitions - AsyncGraphMachine 与异步 on_enter 回调一起使用
我的问题其实很简单,但是我对pytransition代码并不精通,无法自己找到答案:
是否可以仅将 AsyncGraphMachine 与 async on_enter 回调一起使用。
在文档中:https ://github.com/pytransitions/transitions#-using-async-callbacks 指出:
如果您使用的是 Python 3.7 或更高版本,则可以使用 AsyncMachine 处理异步回调。如果愿意,您可以混合使用同步和异步回调,但这可能会产生不希望的副作用。请注意,需要等待事件,并且事件循环也必须由您处理。
我正在使用 python > 3.7,我无法让我的样本工作:
实际错误是:
但是,根据文档本身,on_enter 类型的函数是回调:https ://github.com/pytransitions/transitions#state-callbacks
所以我想知道这里发生了什么。
预先感谢您的帮助
编辑:好的,问题甚至可能出现在我什至不会考虑的地方:
这是有效的,但是这是失败的:
看起来转换中的普通状态与异步机器不兼容,您应该改用“from transitions.extensions.asyncio import AsyncState”
pytransitions - 如何实现重试逻辑?
我正在尝试使用 pytransitions 从初始化状态实现重传逻辑。总结就是在init状态期间如果对方1秒后没有响应就重发数据包。这与我在这里看到的非常相似:https ://github.com/pytransitions/transitions/pull/461
我尝试了这个补丁,即使我看到发生超时/失败,我的回调也只是第一次被调用。对于 before/after 和 on_enter/exit 也是如此。无论我尝试了什么,我都无法再次进行重新传输。有任何想法吗?