dialogflow-es - 如何通过 Fulfillment 为 Dialogflow Messenger 集成添加建议筹码?
问题描述
所以我在网站中嵌入了 Dialogflow Messenger,并想添加一些建议芯片。通过自定义有效负载响应类型很容易,它们显示得很好。但是我如何通过履行添加它们?
我目前有一个自定义 webhook 设置,想法是有这样的:
if (x) {
agent.add('blablabla');
agent.add(new Suggestion('One');
} else {
agent.add('blablabla');
agent.add(new Suggestion('Two');
}
但是新建议不起作用,那么还有另一种方法吗?我在想这样的事情:
agent.add(new Payload(
"richContent": [
[
{
"options": [
{
"text": "One"
},
{
"text": "Two"
}
],
"type": "chips"
}
]
]));
本质上是尝试将自定义有效负载直接插入响应 JSON,如果这有任何意义的话。但是,是的,不知道如何实际做到这一点。有谁知道怎么做?
解决方案
我不清楚new Suggestion() 不起作用的确切含义。您的意思是 Dialogflow Messenger 中不显示建议芯片?它们是否显示在 Dialogflow 本身中?
让我分享几点:
- 据我所知,该结构
agent.add(new Suggestion(“One”));
应该可以工作。我尝试了一个简单的示例,它在 Dialogflow UI 中运行良好,代码如下:
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
let intentMap = new Map();
intentMap.set('Default Welcome Intent', welcome);
intentMap.set('Default Fallback Intent', fallback);
function welcome(agent){
agent.add("What is your favorite animal?");
agent.add(new Suggestion("Dog"));
agent.add(new Suggestion("Cat"));
}
function fallback(agent) {
agent.add(`I didn't understand`);
agent.add(`I'm sorry, can you try again?`);
}
agent.handleRequest(intentMap);
});
如果即使在 Dialogflow UI 中也没有呈现建议芯片,我建议尝试以前的代码来丢弃 Dialogflow 设置的任何潜在问题。您可能需要升级一些依赖项,例如
"dialogflow-fulfillment": "^0.6.1"
.某些集成,例如 Google 助理使用
Suggestions
来自actions-on-google
. 例如,请参阅官方 Google 助理代码示例。如果它适合您的用例,您可以尝试遵循类似的行为,尽管我认为情况并非如此。作为参考,您可以查看此github 问题。
推荐阅读
- javascript - 如何从数据表的列中删除默认点击事件?
- php - Laravel 关系(公司地址一对多多对一)
- vue.js - Vuejs/Stripe Elements - 信用卡号在组件更改时消失
- jenkins - 为 bitbucket 中的合并请求运行 jenkins 作业
- django - 在 DRF 中,我们可以为相关模型使用除主要字段之外的其他字段吗?
- ruby-on-rails - Rails:枚举字段采用 nil 值,即使默认值设置为 0
- python - 如何在某些条件之间选择数据
- python-3.x - 如果使用 open() 和 reader() 打开文件,则相同的 for 循环有效,但不适用于 pandas 数据帧
- c# - Sqlite ExecuteNonQuery() 不返回
- c++ - 如何在不阻塞的情况下跨两个线程传递数据?