我有一些问题。
我想用这个程序制作机器人。
br
我:你好
Bot:欢迎来到我的代理商!
Bot:你叫什么名字?
我:史密斯
机器人:史密斯
机器人:1
机器人:2
br
我将意图“ hello”的意图设为参数“ name”。
但是当它运行时,它可以按以下顺序运行。
br
我:你好
Bot:你叫什么名字?
我:史密斯
Bot:欢迎来到我的代理商!
br
我的意图完全不同。
您能推荐制作我的物体的正确方法吗?
非常感谢。
'use strict';
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
process.env.DEBUG = 'dialogflow:debug';
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));
function hello(agent) {
agent.add(`Welcome to my agent!`);
let city = request.body.queryResult.parameters['name'];
agent.add(`${city}`);
information().then((a) => {
agent.add(JSON.stringify(a));
});
}
function fallback(agent) {
agent.add(`I didn't understand`);
agent.add(`I'm sorry, can you try again?`);
}
let intentMap = new Map();
intentMap.set('hello', hello);
intentMap.set('Default Fallback Intent', fallback);
agent.handleRequest(intentMap);
});
function information(){
return new Promise(function (resolve, reject) {
var a = ['1','2'];
resolve(a);
});
}
答案 0 :(得分:1)
由于您已将name
设置为必需参数,因此Dialogflow将等待调用完成Webhook,直到所有必需参数都被填充为止(除非您切换到将实现用于插槽填充),否则您不会t)。
那么会发生什么:
name
,因此Dialogflow提示输入该参数name
这是棘手的地方。并非所有客户端都支持答复中的多个消息,也不支持那么多消息,因此根据与您测试的是哪个客户端,其他add()
调用可能会被忽略。通常,您应该只添加不同类型的响应(文本,卡片等)以实现跨平台兼容。