繁体   English   中英

当外部服务提供时,您如何在 Dialogflow 中用他/她的名字回答客户?

[英]How can you answer a client with his/her name in Dialogflow when it's provided by an external service?

我正在创建一个 Dialogflow 代理,其中客户端使用 clientId 进行标识。 这使用 Twilio 进行 Whatsapp 聊天机器人集成。

DIALOG

 - Hi, tell me your clientId
 - abcde1234

此时我需要从外部服务获取客户端名称...

GET Authentication: Basic xxx:yyy http://xxx/clients/id/abcde1234

-> {"id":"abcde1234", "name": "John", ...}

...并用它回答:

DIALOG

 - Hi, John, how can I help you?

Dialogflow 可以做到这一点吗?

因此,为了获取用户输入的值,我们可以创建一个名为 session 的参数。 基本上,这将是发送到您的 webhook API 的 API 请求中的 JSON JSON JSON JSON JSON JSON JSON JSON 您可以在 此处更深入地了解上下文。

名为全局参数的上下文变量片段

然后我们可以在云 Function 上设置一个简单的 NodeJS 代码库(使用它只是因为它部署简单,尽管您可以自由使用您选择的任何云提供商/平台)。 我对每个 Dialogflow ES 代理中存在的样板代码库进行了一些小的修改。 在此处输入图像描述

因此,例如,这是在 index.js 文件中所做的更改

.
.
.
  function welcome(agent) {
    const globalParameters = agent.getContext('global-parameters');
    const questionNumber = globalParameters.parameters.number;
    const sampleNameFromGetCall = 'John'
    agent.add(`Welcome to my agent! ${sampleNameFromGetCall}`);
  }

这是 package.json

{
  "name": "dialogflowfirebasefulfillment",
  "description": "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase",
  "version": "0.0.1",
  "private": true,
  "license": "MIT",
  "author": "Google Inc.",
  "engines": {
    "node": "16"
  },
  "dependencies": {
    "actions-on-google": "^2.2.0",
    "dialogflow": "^1.2.0",
    "dialogflow-fulfillment": "^0.5.0",
    "firebase-admin": "^11.4.1",
    "firebase-functions": "^4.1.1"
  },
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  }
}

这是我们使用的库,它是谷歌为此目的构建的库。 https://github.com/googleapis/nodejs-dialogflow在我的代理上启用 webhook fulfillment 后,我快速测试了它并

在此处输入图像描述

使用这个有一个重要的警告,因为这个 repo 已经被谷歌存档并且没有收到任何更新,所以你可能必须弄清楚如何在你的 webhook API 中解析传入的请求或者你可以使用这个库进行一些重大更改到它的代码库。 因此,要回答您的问题,是的,您可以对从第三方 API 获取的内容进行动态响应,但是,您需要确保请求的整体延迟不会太多, 因为 Dialogflow ES 对所有响应都有 10 秒的超时时间。

因此,简而言之,是的,我们绝对可以从您的 Dialogflow 代理中获取一个值,使用它来调用 API,解析该响应并将其用作我们动态响应的一部分。 该值将存储在一个名为 JSON object 的上下文中,它将成为对您的 webhook API 的任何传入请求的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM