他们对api.ai中触发的跟进事件数量有任何限制吗?

时间:2018-08-19 20:54:16

标签: dialogflow

我正在尝试使用多个后续事件来解决我的案例的对话流5秒响应时间限制。在用户输入之后,该机器人必须使用api获取一些数据,该API当前大约需要20-25秒。

这是我的python webhook代码:

def makeWebhookResult(req):
flag = 0 
if req.get("queryResult").get("action")=="status":
    time.sleep(3.5)
    if flag == 0:

        return{
            "followupEventInput": {
            "name": "ContinueEvent1",
            "parameters": {
                "Status":"201"
                }
            }
        }
    else:
        return{
            "fulfillmentText":"This works",
    }
elif req.get("queryResult").get("action")=="status1":
    if flag == 0:
        time.sleep(3.5)

        return{
            "followupEventInput": {
            "name": "ContinueEvent2",
            "parameters": {
                "Status":"202"
                }
            }
        }
    else:
        return{
            "fulfillmentText":"This works in the last loop",
    }
elif req.get("queryResult").get("action")=="status2":
    time.sleep(3.5)
    if flag == 0:
        return{
            "followupEventInput": {
            "name": "ContinueEvent3",
            "parameters": {
                "Status":"203"
                }
            }
        }
    else:
        return{
            "fulfillmentText":"This works in the last loop",
    }
elif req.get("queryResult").get("action")=="status3":
    time.sleep(3.5)
    if flag == 0:
        return{
            "followupEventInput": {
            "name": "ContinueEvent4",
            "parameters": {
                "Status":"204"
                }
            }
        }
    else:
        return{
            "fulfillmentText":"This works in the last loop",
    }
elif req.get("queryResult").get("action")=="status4":
    time.sleep(3.5)
    if flag == 0:
        return{
            "followupEventInput": {
            "name": "ContinueEvent2",
            "parameters": {
                "Status":"205"
                }
            }
        }
    else:
        return{
            "fulfillmentText":"This works in the last loop",
    }



elif req.get("queryResult").get("action") == 'Check_vendor:
    time.sleep(3.5)
    '''
    Here i will call my api and get the response and set the flag variable.

    '''
    return{
        "followupEventInput": {
        "name": "ContinueEvent",
        "parameters": {
            "Status":"200"
        }

这里我的主要意图是“ Check_vendor”,它将命中我的api并获取参数。因此,要参与api.ai,我会触发一个后续事件,作为响应,它将触发另一个后续事件。

直到“ ContinueEvent2”我的后续活动都在进行。但是,在该对话流没有触发ContinueEvent3之后,它以ContinueEvent2的响应进行响应。

那么,跟进事件的数量有没有限制?

在执行此操作时,我遇到了两个参数:

"diagnosticInfo": {
  "accumulated_webhook_latency_ms": 11598,
  "webhook_latency_ms": 3777
},

在这里累积了多少webhook_latency_ms?

提前谢谢

2 个答案:

答案 0 :(得分:0)

更好地花费时间优化服务。 20-25秒很多!
两个人之间的对话看起来应该很自然。您需要摆脱建立诸如Webapp或移动应用程序之类的聊天机器人的习惯,并显示等待消息或进度条。

添加多个事件可能会导致服务延迟,但会严重影响用户体验。

  • 确定要使用的用例。
  • 使用静态数据开发Dialogflow代理。
  • 进行用户体验分析,并在接受后冻结流程。
  • 开发后端以支持新需求。由于您的服务状态不佳,这可能需要一些返工!
  • 完成所有步骤并进行测试。

答案 1 :(得分:0)

最近,我有一个类似的用例,其中我必须处理由dialogflow的webhook请求触发的工作流,然后将结果发送回去。该工作流程的执行几乎耗时40-50秒。我还使用了完全相同的方法,即通过使用followUpEventInput再次再次调用意图。 我发现最多可以召集3个跟进事件。因此,我们最多可以将请求处理到 15秒(每个请求5秒* 3个请求)。 没有太多相关的文档。因此,更好的是,我们找出其他一些解决方案,可能使用插槽填充或任何其他逻辑。