我已经开始学习DialogFlow,我想知道如何通过代码而不是通过GUI创建Intent in Fulfillment。
这是我现有的履行代码:
'use strict';
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));
function welcome(agent) {
agent.add(`Welcome to my firstagent!`);
}
function fallback(agent) {
agent.add(`I didn't understand!`);
agent.add(`I'm sorry, can you try again??`);
agent.add(`Can you please tell me again??`);
agent.add(`Sorry, I don't understand`);
}
let intentMap = new Map();
//these are the intents that I've already created in dialog flow, But I want to create a new intent in code!
intentMap.set('Default Welcome Intent', welcome);
intentMap.set('Default Fallback Intent', fallback);
agent.handleRequest(intentMap);
});
您不能在"履行"中创建意向,因为履行网络挂钩旨在响应当前在您的代理中设置的任何意向,而不是操纵它们。
但是,您可以使用Dialogflow API以编程方式操作代理,这是一个普通的Google Cloud API,它具有许多不同编程语言的客户端库。要创建意图,您需要查看projects.agent.intents.create
方法。
Dialogflow有一个create intent API,因此您可以使用create intend API 从您的Dialogflow实现中创建意图
User request --> Dialogflow --> fulfillment
| |
-<-<- create intent API
而另一个答案正确地指出,新创建的意图不能用于响应履行请求(在Dialogflow匹配新意图之前,必须对代理进行培训(。随着时间的推移,创建一个学习或动态变化的代理可能很有用。例如,如果你有很多关于足球等特定主题的用户查询与你的回退意图相匹配,你可以通过编程创建一个新的意图,将这些查询作为训练短语,并注意,当你构建该功能时,足球查询将很快得到支持。