DialogFlow Python3 Webhook - 增加超时?
DialogFlow Python3 Webhook - Increase Timeout?
我有一个 DialogFlow Intent,它设法解析用户关于商品价格的查询。例如,用户询问 "How much for a can of sardines?",我的 DialogFlow 能够得到 "can of sardines" 作为用户输入。
一旦完成,它将继续执行,向我拥有的 WebHook 发送 POST 请求。我通过 ngrok.com.
将 Fulfillment 链接到我本地的 Python3 Flask App
现在,我的 Python 应用程序所做的是接收用户输入(沙丁鱼罐头),并使用 PDFGrep 通过价目表的 PDF 查找用户输入在服务器中。价目表有 3 列:产品代码、产品名称、产品价格。对于用户输入出现的每个实例,整行作为输出发送出去。这意味着如果 "can of sardines" 出现 3 次,将显示行。
控制台的输出是这样的:
10000 Can of Sardines - 6 Cans .00
10001 Can of Sardines - 12 Cans .00
10002 Can of Sardines - 18 Cans .00
这在控制台中工作得很好。
但是,该文件相当大,大约有 348 页的项目。所以发生的是我的 pdfgrep
命令需要一些时间来得出输出,但据我所知,DialogFlow 似乎期望服务器在给定的短时间内响应 POST 请求时间.
有没有办法调整 DialogFlow 的 Webbook 超时时间 API?
没有办法增加此超时,因为它会破坏用户的对话体验,即如果用户必须等待很长时间才能获得响应,他会感到沮丧。
你可以做的是,向用户发送一个你正在检查价格的响应,然后一旦你从数据库中获取数据,你就使用 POST 请求向客户端发送另一个回复。
Dialogflow webhooks 的超时时间为 5 seconds.You 可以通过链接意图来增加超时时间,也就是说,您可以使用一个意图作为另一个意图的触发器(这可以给您 5+5 秒的时间来发送响应)
在此代码中,当 actual_intent 被点击时,它将重定向到 demo_intent
其中有一个名为 demo_event 的事件
也许你可以使用多线程模块处理时间任务,相应地调整睡眠时间
if 'action' in request_['queryResult']:
if request_['queryResult']['action']=='actual_intent':
time.sleep(3)
reply={
"followupEventInput": {
"name": "demo_event",
}
}
return jsonify(reply)
if request_['queryResult']['action']=='demo_intent':
time.sleep(3)
reply = {
"fulfillmentMessages": [
{
"text": {
"text": [
"Some message you want to show"
]
}
},
]
}
我有一个 DialogFlow Intent,它设法解析用户关于商品价格的查询。例如,用户询问 "How much for a can of sardines?",我的 DialogFlow 能够得到 "can of sardines" 作为用户输入。
一旦完成,它将继续执行,向我拥有的 WebHook 发送 POST 请求。我通过 ngrok.com.
将 Fulfillment 链接到我本地的 Python3 Flask App现在,我的 Python 应用程序所做的是接收用户输入(沙丁鱼罐头),并使用 PDFGrep 通过价目表的 PDF 查找用户输入在服务器中。价目表有 3 列:产品代码、产品名称、产品价格。对于用户输入出现的每个实例,整行作为输出发送出去。这意味着如果 "can of sardines" 出现 3 次,将显示行。
控制台的输出是这样的:
10000 Can of Sardines - 6 Cans .00
10001 Can of Sardines - 12 Cans .00
10002 Can of Sardines - 18 Cans .00
这在控制台中工作得很好。
但是,该文件相当大,大约有 348 页的项目。所以发生的是我的 pdfgrep
命令需要一些时间来得出输出,但据我所知,DialogFlow 似乎期望服务器在给定的短时间内响应 POST 请求时间.
有没有办法调整 DialogFlow 的 Webbook 超时时间 API?
没有办法增加此超时,因为它会破坏用户的对话体验,即如果用户必须等待很长时间才能获得响应,他会感到沮丧。
你可以做的是,向用户发送一个你正在检查价格的响应,然后一旦你从数据库中获取数据,你就使用 POST 请求向客户端发送另一个回复。
Dialogflow webhooks 的超时时间为 5 seconds.You 可以通过链接意图来增加超时时间,也就是说,您可以使用一个意图作为另一个意图的触发器(这可以给您 5+5 秒的时间来发送响应) 在此代码中,当 actual_intent 被点击时,它将重定向到 demo_intent 其中有一个名为 demo_event 的事件 也许你可以使用多线程模块处理时间任务,相应地调整睡眠时间
if 'action' in request_['queryResult']:
if request_['queryResult']['action']=='actual_intent':
time.sleep(3)
reply={
"followupEventInput": {
"name": "demo_event",
}
}
return jsonify(reply)
if request_['queryResult']['action']=='demo_intent':
time.sleep(3)
reply = {
"fulfillmentMessages": [
{
"text": {
"text": [
"Some message you want to show"
]
}
},
]
}