如何在 Dialogflow NodeJS 客户端中设置自定义平台

2023-12-07

我使用创建了一个网络钩子对话流履行根据平台正确返回不同的数据,包括我为另一服务创建的自定义数据。我已经测试了我的网络钩子并且知道如果我更改originalDetectIntentRequest.source对于我的自定义有效负载中使用的平台,它可以工作。

{
    "payload": {
        "jokes-api": {
            "success": true,
            "text": "These are some jokes",
        }
    },
    "outputContexts": []
}

我能够使用对话框流-nodejs-客户端-v2's sessions.detectIntent得到回应,但履行回来与平台设置为PLATFORM_UNSPECIFIED,而不是我想要的自定义有效负载。

[{
    "responseId": "c56c462f-bb3b-434a-b318-3739f58e6f6d",
    "queryResult": {
        "fulfillmentMessages": [{
            "platform": "PLATFORM_UNSPECIFIED",
            "card": {
                "buttons": [],
                "title": "Jokes",
                "subtitle": "These are some jokes",
                "imageUri": ""
            },
            "message": "card"
        }],
        "queryText": "tell me a joke",
        /* ... */
        "intent": {
            "name": "projects/my-jokes/agent/intents/56887375-3047-4993-8e14-53b20dd02697",
            "displayName": "Jokes",
            /* ... */
        },
        "intentDetectionConfidence": 0.8999999761581421,
    }
}]

查看我的 webhook 日志,我可以看到originalDetectIntentRequest对象存在,但源未设置。

{
  "responseId": "c56c462f-bb3b-434a-b318-3739f58e6f6d",
  "queryResult": {
    "queryText": "tell me a joke",
    "speechRecognitionConfidence": 0.9602501,
    /* ... */
    "intent": {
      "name": "projects/my-jokes/agent/intents/56887375-3047-4993-8e14-53b20dd02697",
      "displayName": "Jokes"
    },
    /* ... */
  },
  "originalDetectIntentRequest": {
    "payload": {
    }
  },
  "session": "projects/my-jokes/agent/sessions/12345"
}

如何在dialogflow-nodejs-client-v2中设置平台或源以获得所需的响应?


sessions.detectIntentAPI有queryParams参数有一个名为的字段payload。这就是“原始有效负载”所在的地方。平台名称进入source该结构的字段。所以你的detectIntent调用应该是这样的:

sessionClient.detectIntent({
    session: sessionClient.sessionPath('<project_id>', '<session_id>'),
    queryInput: {
        text: {
            text: '<query>',
            languageCode: 'en-US'
        }
    },
    queryParams: {
        payload: {
            fields: {
                source: {
                    stringValue: '<platform>',
                    kind: 'stringValue'
                }
            }
        }
    }
})

我能够通过使用“slack”作为平台名称来模拟 Slack 集成调用。我还能够返回自定义平台名称的自定义负载。有效负载返回于queryResult.webhookPayload field.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Dialogflow NodeJS 客户端中设置自定义平台 的相关文章

  • Nodejs 异步函数是否使用所有 CPU 核心?

    如果我使用异步函数或带有回调的函数 例如本机 fs 模块 http 等 它们会默认在所有 cpu 核心上运行吗 或者整个系统只使用 1 个核心 Node js 中的一些异步操作 例如文件 I O fsmodule 将通过 libuv 中的线
  • 如何配置expressjs来处理http和https?

    我已经搜索过 stackoverflow 和express google group 但仍然不够 根据我收集的信息 我可以做以下两件事之一 1 创建一个http服务器和一个https服务器的实例 并将两者设置为监听两个不同的端口 在路由中
  • API 的集成与单元测试

    我们可以考虑向端点 单元或集成测试 发送请求吗 import lib from testing lib const testClient expect lib const response testClient request app ge
  • node.js http.request 事件流 - 我的 END 事件去了哪里?

    我正在制定一个狡猾的计划 其中涉及使用 node js 作为另一个服务前面的代理服务器 简而言之 将传入请求分派到静态文件 如果存在 否则 将请求分派给另一个服务 我已经掌握了基础知识 但现在尝试使用 Sencha 来完成整个工作Conne
  • 如何在使用 axios 调用时在 Node.Js 应用程序中设置 X-Forwarded-For

    好吧 我刚刚有机会在nodejs 工作 我正在使用axios用于从第三方 url 获取数据的库 一切都进展顺利 直到部署到 staging ENV 我在使用 Rails 时遇到了类似的问题 我发现的解决方案是使用 request X For
  • net::ERR_CONNECTION_REFUSED 错误 jQuery ajax node.js

    当日期输入中的日期更改发生得非常快时 就会发生此错误 如果我每 2 秒以上更改一次日期 效果就很好 但是当日期输入更改得非常快时 它会出现以下错误 简而言之 只有当第一个请求之后很快发出下一个请求时 才会发生此错误 我花了几个小时在 SO
  • 在节点中使用mongoosejs更新多条记录

    我在使用 mongoosejs 和 Node js 更新多个记录时遇到问题 由于某种原因 即使有多个匹配 我也只更新一条记录 我还注意到回调在 update 之后不会触发 我没有收到任何错误消息 这里发生了什么 Page find stat
  • 猫鼬模式创建

    我刚刚开始使用猫鼬 我有一个使用 mongoose 的创建脚本 它使用示例数据创建模式和数据库 现在我编写实际的应用程序 我是否需要在每次应用程序运行时创建架构对象 或者它是否已经以某种方式可用 换句话说 我是否需要在每个使用 mongoo
  • Node.js 问题 :: Angular 未定义 :: 找不到 Bower 包 :: Node gyp 和 Python

    Issue 在浏览器中生成并启动新的 jHipster API 后 我遇到了以下问题 未捕获的引用错误 角度未定义 Before我安装的最新一代 node js yo bower grunt cli 根据指导方针 https jhipste
  • 如何在Vue中提交表单,重定向到新路由并传递参数?

    我正在使用 Nuxt 和 Vue 我正在尝试提交表单 将用户重定向到包含提交的参数的新路由 发送 API 请求以获取一些数据 然后渲染该数据 我通过简单地将表单操作设置为新路径并手动将所有 URL 参数添加到 API 请求来实现此目的 首先
  • 找不到模块 dtrace-provider

    我有一个简单的nodejs应用程序抛出 Cannot find module build Release DTraceProviderBindings 我在网上查了一下 看起来很多人在 Windows 上使用 Restify 时都遇到了同样
  • 通过 npm 节点自动化 Git 提交 + 版本控制 + 标记

    我一直试图得到的是 使用 npm version 来更新 package json 并创建一个标签 然后提交我的更改 通过这种方式 我将能够按版本添加标签 自动版本控制并提交信息 我遇到的问题是 当我使用 npm 版本时 它会自动执行标记
  • 客户端 websocket 限制消息长度

    我正在使用 node js 开发一个 websockter 服务器 并且我发现了 Chrome 中的一些怪癖 Chrome OS X 10 7 64 位 上的最大字符串长度为 17740 而 Firefox 似乎可以毫无问题地处理非常大的字
  • NodeJS + Express + Handlebars - 无法找到视图“index.html”

    我一直在玩 Node js 我最近开始玩弄 Express 并一直在设置一个基本的应用程序 我想使用 Handlebars 作为我的视图模板引擎 但遇到了困难 无法找到视图 index html 我有index html 与app js 位
  • 生成随机数背后的数学(崩溃游戏 BTC Casino)

    我正在开发一款基于网络的游戏 其中有多个迷你游戏 我们坚持还添加一个在赌博界非常流行的崩溃游戏 然而 我们一直在努力理解生成随机 几乎不可预测 数字的概念 大多数赌博网站都会提供哈希值等来证明数字未被篡改 我们真的不需要这个 因为我们的游戏
  • 在 sinon.js 中存根和/或模拟类?

    我已经为我的应用程序创建了一个数据库包装器 如下所示 为了测试它 我显然想替换实际的数据库 我可以创建一个新类来模拟query方法并捕获那里的所有输入 但是使用sinon js看起来更合适 但是我该如何使用它呢 Is the mock or
  • 如何解决 fs.existsSync 不是函数

    在 NodeJS 中我有 const fs require fs if fs existsSync some path 但我收到错误 类型错误 fs existsSync 不是函数 经过一番搜索后 我读到了Webpack自带require哪
  • mime.lookup 的 webrtc 错误

    我在我的电脑上尝试了 webrtc 演示 但在演示步骤 04 中 当我使用 npm install 和 node index js 时 它显示 类型错误 mime lookup 不是一个函数 即使我通过输入 npm install mime
  • 在 GCP 上达到配额 API 限制时设置提醒

    有没有办法将 Stackdriver 设置为在我的任何 Google API 使用量达到限制时接收警报 我曾经手动检查https console cloud google com iam admin quotas https console
  • powershell 和 cmd 之间的文件大小不同[重复]

    这个问题在这里已经有答案了 我正在使用一点processconf js工具来构建configuration json来自多个文件 json files 这是我正在使用的命令 node processconf js file1 json fi

随机推荐