如何通过代码在DialogFlow实现中创建意图?

时间:2018-08-02 07:21:30

标签: node.js google-cloud-functions dialogflow fulfillment

我已经开始学习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);
});

2 个答案:

答案 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才能匹配新意图)。随着时间的推移创建学习型或动态更改的代理可能很有用。例如,如果您有很多针对特定主题(例如足球)的用户查询与您的后备意图相匹配,则可以以编程方式用这些查询作为训练短语来创建新的意图,并请注意,构建该功能后不久将支持足球查询