2

我已经开始学习 DialogFlow,我想知道如何通过代码创建 Intent in Fulfillment,而不是通过 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);
});
4

2 回答 2

3

您不能在“实现中”创建 Intent,因为实现 webhook 旨在回答当前在您的代理中设置的任何意图,而不是操纵它们。

但是,您可以使用Dialogflow API以编程方式操作代理,这是一个普通的 Google Cloud API,具有许多不同编程语言的客户端库。要创建一个意图,您需要查看该projects.agent.intents.create方法。

于 2018-08-02T10:53:52.513 回答
1

Dialogflow 具有创建意图 API,因此您可以使用创建意图 API 从 Dialogflow 实现中创建意图

User request --> Dialogflow --> fulfillment 
                     |               |

                     -<-<- create intent API

而另一个答案正确地指出,新创建的意图不能用于响应履行请求(必须先训练代理,然后新的意图才能被 Dialogflow 匹配)。随着时间的推移创建一个学习或动态变化的代理可能很有用。例如,如果您对特定主题(如足球)有很多与您的后备意图匹配的用户查询,您可以以编程方式创建一个新意图,将这些查询作为训练短语,并注意当您构建该功能时,很快就会支持足球查询.

于 2018-08-02T22:05:49.433 回答