通过Dialogflow,FB Messenger和Python发起对话

时间:2018-12-14 20:27:24

标签: python facebook dialogflow

我一直在互联网和Dialogflow文档中寻找解决方案,但我无法弄清楚,对我朝正确方向的任何帮助表示赞赏。

我正在创建FB Messenger机器人,我想使用DialogFlow处理NLP。但是,我正在努力弄清楚如何将DialogFlow集成到我的Python应用程序中。

这是我想要的结果:

Bot: You have not recorded activity for 3-4pm today, what did you do?
User: I did jogging
Bot: Added "Jogging" to your calendar from 3-4pm

如您所见,机器人启动了对话,我相信使用DialogFlows FB集成是不可能的。这就是为什么我要使用PyMessenger创建一个Python机器人来处理FB集成的原因。

是否有使用Python获取实体和参数的方法?我在想类似的东西:

message = "I did jogging from 2pm-5pm"
result = dialogflow.message(intent="Update Day Tracker")
print(result)
{"activity": "jogging", "time-period": "2pm-5pm"}

这样,我可以处理Python应用程序中的大多数逻辑,而只需使用DialogFlow即可处理NLP。

这是我想到的唯一方法。请让我知道是否有更好的解决方案。

我发现了这一点:https://miningbusinessdata.com/initiating-the-conversation-from-dialogflow-a-summary/,但并没有涉及太多信息

它提到使用REST API创建您自己的集成-我认为这是我想要做的,但是我查看了Dialogflow REST API文档,但看不到任何允许我执行操作的请求我想做。

我们非常感谢您的帮助,如果您需要澄清,请告诉我。感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:1)

您接近了!您正在寻找的是使用Detect Intent in the REST API。这可以获取您从用户那里获得的文本,并确定最适合它的Intent并提取相关参数。然后它将返回匹配的Intent,该匹配的可信度,与该匹配关联的参数以及其他信息。如果触发了实现,则包括实现的结果。

如果您将python library用于Dialogflow,则设置和调用非常接近REST API。拨打电话并获得响应可能看起来像这样:

    text_input = dialogflow.types.TextInput(
        text=text, language_code=language_code)

    query_input = dialogflow.types.QueryInput(text=text_input)

    response = session_client.detect_intent(
        session=session, query_input=query_input)

响应本身也将与REST query response相匹配。因此,要获取匹配的Intent及其参数,您可能会有类似的

    intent = response.query_result.intent.display_name
    parameters = response.query_result.parameters