gpt4 book ai didi

dialogflow-es - DialogFlow - 从 webhook 设置 allRequiredParamsPresent?

转载 作者:行者123 更新时间:2023-12-04 15:29:16 25 4
gpt4 key购买 nike

我正在使用云函数来响应 documentation 中所述的 webhook。 .在 DialogFlow 上,我将所有参数设为可选,相反,我想动态控制需要哪些参数。是否可以动态设置 allRequiredParamsPresent?其次,我们如何偏置下一个输入/响应来填充某个参数?

用户可以输入日期或日期范围,两者都是不同的参数。一个或另一个是必需的,但不是两者都需要。

不幸的是,在控制台中,如果我根据需要设置两者,对话不会结束(这就是我想在结束时覆盖的原因),如果我不让它们成为必需,对话就会结束,而所有必需的参数都不存在。

此外,根据代理从网络 Hook 提出的后续问题,我想偏向用户的下一个答案以填写特定的 @sys.any参数,因为它不断填充错误的参数。

最佳答案

我建议您对所需的每个参数使用意图,而不是使用实体。这将解决两个问题:

  • 如果用户没有为所需参数提供正确的值,则对话框流
    不会在循环中一次又一次地问同样的问题
  • 您可以控制下一个要填写的参数

  • 假设您需要 3 个参数来购买 watch : 颜色、日期/日期时间、成本
    您的代理将具有以下意图:
  • 购买 watch -> input_context = 无,output_context = buy_watch
    我想买一 block watch
    我想买黑色 watch
    ...
  • 获取颜色 -> input_context = 颜色,output_context = buy_watch
    黑色的
    我想要黑色的
    ...
  • 获取日期 -> input_context = 日期,output_context = buy_watch
    我明天要
    我下周想要
    (这将捕获日期和日期范围,而不是其他任何内容,如果您获得其中任何一个,您可以有逻辑将值分配给参数)
  • 获取成本 -> input_context = 成本,output_context = buy_watch
    大约 10000
    预算为 15k
  • got_all_details --> 事件 = e_got_all_details

  • 对于每个意图,您将拥有所有 3 个可选参数。
    此外,您需要将参数的默认值设置为 $entity为了自己的意图,和 #context.entity对于其他参数。
    例如,在意图 get_color ,您将拥有这些参数和默认值:
    color = $color  
    date = #buy_watch.date
    cost = #buy_watch.cost

    最后,您必须为上述所有意图调用 webhook。
    在 webhook 中,您必须检查传入意图的参数并设置 output_context + response_message 根据缺少的参数。
    params =  intent_request["query_result"]["parameters"]  
    case 1 --> if not params["color"]: set output_context = color and response = what color do you want
    case 2 --> if not params["date"]: set output_context = date and response = when do you want to buy
    case 3 --> if not params["cost"]: set output_context = cost and response = what is your budget
    case 4 --> if you get all params: call event e_got_all_details

    意向 got_all_details当您获取所有参数时,将通过事件调用,无论您以什么顺序获取它们。

    取决于 输出上下文 回复和 输入上下文 您在意图中配置的内容,将触发正确的意图,您将能够获得正确的值。

    我遇到了类似的问题,在我看来,这是处理参数验证和处理意外值时最有效的方法(使用特定于意图的后续回退意图)。

    编辑 1:根据您从日期或日期范围实体获得的值,将有一个额外的逻辑来为日期分配值。
    if params["date"] or params["date-range"]:
    date = params["date"] if params["date"] else params["date-range"]

    所有的意图都会有训练短语,它们会尝试在没有任何顺序的情况下捕获参数,但不要将它们标记为必需。
    所以,如果用户说 我明天想买 watch , buy_watch意图将通过参数日期触发。代码将检查颜色和成本是否丢失,并在设置适当的 output_context 后提示。 .

    希望能帮助到你。

    关于dialogflow-es - DialogFlow - 从 webhook 设置 allRequiredParamsPresent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54712061/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com