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"
                             ]
                         }
                     },
                       ]
                 }