【问题标题】:fb messenger bot: bot ask user for answersfb messenger bot:机器人向用户询问答案
【发布时间】:2017-05-21 12:36:24
【问题描述】:

目前,我有一个 Python 代码。这会处理来自 Facebook Messenger 用户的传入消息。但这是针对聊天机器人的被动聊天。我想做以下事情。

User: Pay
Bot: Please type the username of the person you want to pay.
User: eddwinpaz
Bot: Please type the amount you want to send.
User: 100.00
Bot: Are you sure you want to send 100.00 to Eddwinpaz?

如果此对话中的用户没有按照确切的顺序回答,应用程序将无法进行付款。有一种方法可以获取先前的文本并查看其是否以正确的顺序回答。或者给出一些逻辑以便存储在 session_array[sender_id,username,amount] 中,在我向用户发送一个 Button(Yes,No) 之后,我可以实际执行付款。

因为我需要在服务器上存储有关问题的值。另一个例子是。

Bot: what is your email?
User: myemail@gmail.com
Bot: your email has been saved! 

【问题讨论】:

  • 输入验证呢?例如,第一个答案必须是支付系统中存在的有效用户名?第二个是有效数字等
  • 但不知何故我需要知道上下文。因为我只得到答案,但没有得到上下文。我可以从什么得到“是”但“是”? :( 我试图将其存储在会话中,但该文本来自什么问题?html 表单包含 name="myfield" 和 value="myvalue"
  • 如果我向机器人提出问题,我可以回答。喜欢什么天气.. 但不是相反。因为机器人知道上下文,但我不知道。
  • 对不起,除非有更多关于架构的信息,否则如果没有创建 FB 机器人的经验,很难理解问题出在哪里。您能否描述一下用户、机器人和服务器之间通信的请求/响应格式?
  • @Taras 用户类型 Pay 和 facebook 将此支付文本消息发送到我的服务器,之后我解析 if 条件 if "pay" in message_text: 然后我执行一系列问题,如您在上面看到的。问题是他可以回答任何问题,我将无法遵循正确的上下文我需要找到一种方法来获取“我问用户的内容”的上一条消息,这样我就可以向他发送下一个问题并验证信息适当地。到目前为止,这对我来说是不可能的。

标签: python facebook facebook-messenger-bot


【解决方案1】:

Facebook 不提供执行此操作的方法,您可以自行处理代码中的状态。

这就是机器人框架的用途!会话管理,也就是状态管理。它归结为要么将过去的消息保存在数据库中以具有状态,要么将“对话”保留在内存中。

没有“正确”的方法来做到这一点(在我看来),如果您想简单地回答您的问题,那就是:使用机器人框架而不是从头开始编写此功能。

【讨论】:

    猜你喜欢
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2017-10-17
    • 2016-12-24
    • 1970-01-01
    • 2015-11-01
    相关资源
    最近更新 更多