Настройка выполнения - многоэтапный процесс.
Включение выполнения
- Выберите Выполнение на левой навигационной панели
- Если ваш код выполнения будет выполняться на удаленном веб-крюке, включите «Веб-крюк» и введите URL-адрес своего веб-крюка.
- Если у вас нет места для запуска кода выполнения, вы также можете использовать встроенный редактор, чтобы начать. Включите это, и вы будете вводить здесь свой код напрямую.
- Сохраните конфигурацию.
Включение для каждого Намерения
Хотя при этом устанавливается Исполнение, которое будет использоваться для вашего проекта, вы все равно должны включить его для каждого Намерения, которое должно вызывать его.
- Go вернитесь в список Intent и выберите Intent.
- Прокрутите страницу вниз до конца страницы в разделе Fulfillment.
- Turn "Включите вызов webhook для этого намерения "вкл.
- Сохраните конфигурацию.
- Повторите это для каждые Намерение, которое вы хотите обработать с использованием Fulfillment.
Развертывание вашего веб-крюка
Вам также необходимо написать свой веб-крюк для обработки различных инициируемых Интентов. Код для Inline Editor может быть хорошим местом для запуска.
В intentMap
вам нужно будет добавить карту из имени Intent в функцию, которая будет выполнять обработку, когда этот Intent запускает webhook. Вы можете иметь разные функции-обработчики для каждого Намерения, использовать одну и ту же функцию для некоторых, заставить эти функции вызывать другие функции, независимо от того, что вам нужно.
Однако следует отметить пару вещей:
- Если вашему обработчику требуется выполнить асинхронную функцию (получить доступ к базе данных, выполнить сетевой вызов и т. Д. c), то вам необходимо убедиться, что вы возвращаете Promise.
- Если вы используете встроенный редактор, и вы совершаете сетевые звонки за пределами сети Google, затем вам необходимо обновить подписку Firebase до плана Blaze. (Вы все еще можете работать со свободным уровнем этого плана.)
'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 agent!`);
}
function fallback(agent) {
agent.add(`I didn't understand`);
agent.add(`I'm sorry, can you try again?`);
}
function handlerOne(agent) {
agent.add(`This is handler one`);
}
function handlerThree(agent) {
agent.add(`This is handler three`);
}
// Run the proper function handler based on the matched Dialogflow intent name
let intentMap = new Map();
intentMap.set('Default Welcome Intent', welcome);
intentMap.set('Default Fallback Intent', fallback);
intentMap.set('intent.one', handlerOne);
intentMap.set('intent.two', handlerOne);
intentMap.set('intent.three', handlerThree);
agent.handleRequest(intentMap);
});