如何在 Dialogflow 中的 webhook 中执行槽验证?

2023-12-21

如何使用后端代码 (webhook) 在意图中执行插槽验证。

我已经了解了如何使用 webhooks 执行槽填充,但我想知道如何验证槽数据并在验证失败时重新提示用户。

Example:
用户:我想了解你们在伦敦的服务。
Bot:我们不在伦敦提供服务,请输入其他城市名称。


简而言之:如果验证失败,请重置对话框上下文,再次触发您的意图,并可以选择使用默认值来保留实际有效的其他参数(因此您不需要再次重新提示用户输入这些参数)。

您无需声明该意图的传入上下文即可实现此目的。请注意,您可以在意图中使用上下文,即使它们没有声明为该意图的传入/传出上下文。

在此示例中,我向用户请求 2 个参数(汽车make and model)。当然,Enable webhook call for slot filling需要根据您的意图进行设置。

Steps:

  1. 在 Dialogflow 上,在意图中声明一个事件。这可用于从您的履行代码触发此意图:
  1. 在您的参数中,为您希望在重置意图后保留的每个参数声明一个默认值:
  1. 将默认值设置为帮助器上下文中的参数。如果此帮助器上下文确实存在,则将设置默认值,否则,它将保留为空。这将允许您重置意图并保留您已有的其他参数。在此示例中,我使用上下文show-car-details-data,并设置参数的默认值model to _model在即将到来的上下文中:
  1. 在槽填充实现方法中,您可以验证参数并通过重置意图来重新提示用户。为此,您需要 1)清除当前对话框上下文, 2) 调用setFollowupEvent再次触发您的意图,3)可以选择设置一些可用于分配默认值的帮助器上下文(因此您不需要重新提示用户输入有效的值)。 我在用着Dialogflow 实现 Node.js 库 https://github.com/dialogflow/dialogflow-fulfillment-nodejs:
// clear dialog contexts:
agent.contexts.forEach( e => {
  if ( e.name.endsWith('_id_dialog_context') ) agent.context.delete(e.name);
});
// workaround bug: https://github.com/dialogflow/dialogflow-fulfillment-nodejs/issues/160
agent.add('');
// set follow up event: this triggers your intent again
agent.setFollowupEvent('show-car-details');
// optionally set helper context to set default values and avoid re-prompt of already valid values
// in this example, keep make since it was a valid parameter
// clear model because it was invalid. User will be prompted again on model, but not on make
agent.context.set('show-car-details-data', 1, { '_make': make, '_model': '' });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Dialogflow 中的 webhook 中执行槽验证? 的相关文章

  • PHP MySQL 对话流

    我正在使用 PHP webhook 设置聊天机器人 dialogflow 我想要做的是获取用户输入来查询 MySQL 表并将结果传递回对话流 API到目前为止 我成功地将文本字符串传递回 API 但我不明白如何查询数据库并将结果传递回对话流
  • 对话流(API.ai)中的数据上下文在哪里

    我一直在阅读有关对话流的内容 但有一件事我仍然不清楚 我将尝试举一个例子 我想实现如下转换 User Hello Google what are some interesting cities Bot Hello there Sydney
  • Google Action 和 DialogFlow 错误“抱歉,此操作不适用于您的应用”

    我创建了一个 DialogFlow 应用程序 可以在我的开发者帐户中完美运行 但我需要以另一个用户的身份对其进行测试 因此在我的 Google Action 模拟器中 我添加了另一个测试帐户作为项目的所有者 我验证了该用户在 DialogF
  • 如何将本地的 webhook 连接到对话流?

    我有一个关于 webhook 连接的问题 我通常通过对话框流的内联编辑器进行编辑 但现在我想在本地进行编辑 所以我做了一些设置 观看了两个例子 https chatbotsmagazine com creating nodejs webho
  • 如何将dialogflow与网站集成?

    我使用 Dialogflow chat bot 创建了意图 实体等 现在 我正在尝试将dialogflow与我的网站 html 集成 我按照dialogflow官方网站上记录的说明进行操作 但我仍然很困惑 之后启用网络演示选项 如何编辑附加
  • Dialogflow动态实体问题

    我正在尝试使用 Dialogflow api ai 创建一个 Actions on Google 应用程序 我需要获取火车状态 所以我的实体将是火车号码或火车名称 火车的名字有很多 所以我无法手动添加实体值 如何将实体值动态添加到控制台 您
  • 让聊天机器人 (wit.ai) 回复它没有正确的答案

    我在用Wit ai对于我的聊天机器人 问题是我的机器人总是试图回答一些问题 只有当我的机器人真正理解所问的内容时 我才会做出回答 我知道这是可能的 但如果我有一个回复很少的机器人 它似乎总是选择其中一个回复 即使它被问到完全不同的问题 我想
  • Actions on Google 上的帐户取消关联

    我正在 Google 上开发一项操作 要求用户使用我的服务登录 我以前可以实施帐户关联 https developers google com actions develop identity account linking 效果很好 我能
  • Dialogflow 中“意图”和“操作”之间的关系是什么?

    我在概念化 Dialogflow 代理中的 意图 和 操作 之间的关系时遇到了一些麻烦 我了解到意图将用户的口头请求映射到我的履行服务的特定功能 并可选择携带参数作为输入变量 这就是意图的定义方式官方文档 https dialogflow
  • Google Cloud 上的一个项目下是否可以拥有多个聊天机器人

    最近 我用 DialogFlow 构建聊天机器人的项目空间用完了 我不认为我在 Google Cloud 上的项目中使用了最佳标准 任何提示都很棒 而且由于我尝试创建一个新的聊天机器人 它会告诉我项目空间不足 是否可以将这些聊天机器人放在同
  • Prolog 中的聊天机器人

    我一直在尝试在序言中创建一个聊天机器人 作为作业 到目前为止 我已经在 pl 文件中创建了一个数据库 并且列出了很多可能的对话 我知道序言是这样工作的 例如如果我们有 Chatbot good 然后我们输入 Chatbot good 它会回
  • Facebook Messenger Bot 可以与群组中的两个或更多人聊天吗?

    所有消息机器人一次只与一名用户直接交互吗 机器人可以加入两人或多人组成的群组并与他们交谈吗 目前 Facebook Messenger 机器人只能在一对一的基础上工作 原因之一可能是隐私 Facebook 在在群组环境中推出机器人之前非常谨
  • DialogflowApp AskForUpdatePermission 不起作用

    1 askForUpdatePermission 未找到意图 我遵循了更新示例Github dialogflow updates nodejs https github com actions on google dialogflow up
  • Google 聊天机器人 - 发送私人消息而不发生事件

    我有一个正在 PM 中工作的机器人 我可以与它交谈并让它毫无问题地完成我的任务 但我不知道如何让它向特定的其他人发送消息 我希望它能够向特定的用户列表发送私人消息 而无需这些用户的任何交互 唯一的交互是我发出的命令 要求它向其他人发送消息
  • Dialogflow @sys.email 实体无法识别电子邮件

    在我的意图中 我希望用户提供他 她的电子邮件地址 我尝试使用 sys email实体从训练短语中识别电子邮件 但它不识别电子邮件地址 可能是什么问题 当我在网上搜索时 我看到一些谷歌群组中有人提出类似的问题 但找不到答案 EDIT 这是意图
  • Dialogflow 不记名令牌分析

    如何获取 Dialogflow v2beta1 API 调用的不记名令牌 我想集成 Dialogflow API 所以现在我什至无法在没有不记名令牌的情况下在邮递员中测试 API 为了进行测试 我在 GCP 项目中为我的代理生成了 API
  • 在网站上集成 api.ai 聊天机器人 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的网站上安装一个聊天机器人 其对话风格类似于 Facebook Messenger 我希望它作为聊天窗口位于同一页面上 而不是
  • 聊天机器人中的打字指示器

    Nodejs 中机器人框架的输入指示器 Hi 我正在使用 microsoft bot 框架 v4 node js 我需要在聊天机器人中实现输入 在发送原始响应之前 机器人应该像 一样响应 我在这里看到了代码使用 DirectLine 和网络
  • 如何使用 gcloud 凭据对 Dialogflow API 进行身份验证

    我有一个 Node JS 应用程序 可以向 Dialogflow 代理发出请求 我实际上使用基于临时令牌的请求 但是我如何更改它以通过谷歌服务凭证来做到这一点 https cloud google com docs authenticati
  • Dialogflow Google Assistant Alpha 版本始终失败,并显示以下消息:“For en:您的示例发音结构不正确。”

    Google Assistant Alpha 版本无法正常工作 它总是显示消息 对于 en 您的示例发音结构不正确 当您在操作发布后对其进行重命名时 就会发生这种情况 转到部署 gt 目录信息 gt 其他调用短语 并将调用短语替换为更新的操

随机推荐

  • php 中的 $_SERVER 变量如何“防篡改”?

    通过信任 SERVER 变量数组的内容来使用 SERVER PHP SELF 获取 php 文件的名称 我会冒很大的安全风险吗 许多但不是全部 SERVER 变量都是攻击者控制的 https stackoverflow com questi
  • Sprockets::CircularDependencyError application.js 已经是必需的

    在我的应用程序中 我收到一个 Sprockets CircularDependencyError application js has not been required 这会影响我应用程序中的每个页面 因为没有 JS 加载 注意 此错误发
  • 在单元测试中创建 System.Web.Caching.Cache 对象

    我正在尝试为没有单元测试的项目中的函数实现单元测试 并且该函数需要 System Web Caching Cache 对象作为参数 我一直在尝试使用以下代码创建这个对象 System Web Caching Cache cache new
  • 如何访问 RealityKit 中 Reality Composer 的模型组件?

    我试图在我的代码中更改在 Reality Composer 中创建的文本实体的模型组件 但这就是 将 GUI 创建的实体转换为对具有模型组件的实体的引用失败 self entityReference scene realityCompose
  • Delphi记录如何自动初始化?

    为了初始化 Delphi 记录 我总是添加一个方法 类或对象 来初始化为已知的良好默认值 Delphi 还允许使用参数定义记录 构造函数 但您不能定义自己的无参数 构造函数 TSomeRecord record Value1 double
  • 我可以从我自己的自定义操作系统创建 LXC 映像吗?

    我是lxc的新手 我想从现有操作系统创建我自己的 lxc 容器 我自己的 unix 内核在不同架构中编译 我正在尝试使用 lxc create 谁能建议我如何创建自己的容器 是否可以使用这种方法创建一个容器 创建自己的容器后是否需要更改任何
  • 更改 Plotly 中的线条颜色

    如何在 Plotly 中设置线条的颜色 import plotly graph objects as go from plotly subplots import make subplots fig make subplots rows 2
  • Firebase iOS SDK - 使用 GoogleService-Info.plist 以外的配置文件会生成控制台警告

    我正在使用 Firebase 3 x SDK 运行一个应用程序 并希望有条件地使用不同的配置 plist 来指向不同的 Firebase 位置 具体取决于应用程序是否配置为开发还是生产 我正在尝试使用 FIRAppconfigureWith
  • AngularJS ng-重复性能

    我使用 AngularJS ng repeat 来查看我的表格元素 它不应该经常使用 我知道 但我不知道如何以其他方式做到这一点 这是我如何展示的示例容器对象表中 http jsfiddle net NfPcH 10390 http jsf
  • 访问反向关系上的 prefetch_lated 字段

    我有这个型号 class Animal models model name models CharField class Dog Animal field models IntegerField class Owner models mod
  • 处理 EINTR(使用 goto?)

    背景 这是一个后续问题这个线程 https stackoverflow com questions 2957759 using gprof with sockets关于在 C Linux GCC 中处理系统调用的 EINTR 无论我是否打算
  • 即使使用 User-Agent 标头,如何修复 Python 请求的“403 Forbidden”错误?

    我正在向某个 URL 发送请求 我将curl命令复制到python中 因此 所有标头都包含在内 但我的请求不起作用 并且我在 HTML 输出中收到状态代码 403 和错误代码 1020 代码是 import requests headers
  • 生成数字范围内的 N 个随机数的列表

    我想生成一个 n length 列表 其中包含定义范围内随机生成的数字 我想知道的是我是否缺少一些内置的东西 这些东西可以让我在未来以更Pythonic和更干净的方式做到这一点 感谢您的任何想法 In 59 from random impo
  • Python sympy无法求解多项式函数

    我在用 sympy 求解多项式函数时遇到问题 以下示例显示了一个给出我无法管理的错误消息的情况 如果多项式变得更简单 则求解器可以正常工作 请复制并粘贴代码以检查系统上的错误 import sympy from sympy import I
  • 销毁通过 Serverless 创建的资源而不销毁 Lambda 端点

    我在 serverless yml 文件中定义了以下资源 为我所有不同的发展阶段创建资源非常有用 resources Resources uploadBucket Type AWS S3 Bucket Properties BucketNa
  • Google Chrome PDF 查看器复选框不起作用

    我们在生成 PDF 的 Chrome PDF 查看器中遇到问题 其中复选框未更改状态 即被选中 并且当您按 TAB 键退出某些字段时 某些字段会丢失值 但当它们获得焦点时 值会再次显示 还有其他人经历过吗 如果是这样 对如何解决这个问题有什
  • mkdir() 在内部闪存中起作用,但在 SD 卡中不起作用?

    我目前正在构建一个文件管理应用程序 允许用户浏览其设备的文件系统 用户从根目录开始 的设备 但可以浏览到他们想要的任何位置 例如内部闪存或 SD 卡 该应用程序的关键要求之一是允许用户在任何地方创建新文件夹 像这样的功能对于应用程序来说非常
  • CSS - 悬停时平滑按钮渐变颜色过渡

    我有以下按钮 上面按钮的 CSS 是这样的 cta btn display inline block margin 20px 0 0 20px color fff background color FF8F1B background ima
  • Twitter 引导下拉菜单超出屏幕范围

    我想实现 twitter bootstrap 下拉菜单 这是我的代码 span class dropdown a href menu1 class dropdown toggle img class left src static img
  • 如何在 Dialogflow 中的 webhook 中执行槽验证?

    如何使用后端代码 webhook 在意图中执行插槽验证 我已经了解了如何使用 webhooks 执行槽填充 但我想知道如何验证槽数据并在验证失败时重新提示用户 Example 用户 我想了解你们在伦敦的服务 Bot 我们不在伦敦提供服务 请