我已经开始学习DialogFlow,我想知道如何通过代码而不是通过GUI创建实现的意图。
这是我现有的实现代码:
'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);
});
答案 0 :(得分:2)
您无法创建“实现中的意图”,因为实现网络挂钩旨在回答您代理中当前设置的任何意图,而不是对其进行操作。
不过,您可以使用Dialogflow API以编程方式操作代理,这是一个普通的Google Cloud API,在many different programming languages中具有客户端库。要创建意图,您需要查看projects.agent.intents.create
方法。
答案 1 :(得分:1)
Dialogflow具有创建意图API,因此您可以使用create intent API
从Dialogflow实现中创建意图。User request --> Dialogflow --> fulfillment
| |
-<-<- create intent API
当另一个答案正确指出新创建的意图不能用于响应实现请求时(必须先对代理进行培训,然后Dialogflow才能匹配新意图)。随着时间的推移创建学习型或动态更改的代理可能很有用。例如,如果您有很多针对特定主题(例如足球)的用户查询与您的后备意图相匹配,则可以以编程方式用这些查询作为训练短语来创建新的意图,并请注意,构建该功能后不久将支持足球查询