Выполнение Dialogflow - многоцелевые - PullRequest
0 голосов
/ 03 марта 2020

Мне нужна помощь в создании цели, которую я создал в диалоге. Есть 15 намерений, которые я создал, и я интегрировал их и протестировал, и это прекрасно работает. Я застрял в выполнении и не в состоянии продолжить, так как я запутался, настроение выполнения. Поскольку это должно быть сделано для каждого намерения, которое я создал, я верю. Я не уверен, как это сделать, чтобы завершить одним щелчком мыши, используя ссылку выполнения на левой панели. это работает, если я просто нажимаю на выполнение и развернуть. Я действительно смущен. Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Настройка выполнения - многоэтапный процесс.

Включение выполнения

  1. Выберите Выполнение на левой навигационной панели
  2. Если ваш код выполнения будет выполняться на удаленном веб-крюке, включите «Веб-крюк» и введите URL-адрес своего веб-крюка.
  3. Если у вас нет места для запуска кода выполнения, вы также можете использовать встроенный редактор, чтобы начать. Включите это, и вы будете вводить здесь свой код напрямую.
  4. Сохраните конфигурацию.

Illustration of steps to enable fulfillment

Включение для каждого Намерения

Хотя при этом устанавливается Исполнение, которое будет использоваться для вашего проекта, вы все равно должны включить его для каждого Намерения, которое должно вызывать его.

  1. Go вернитесь в список Intent и выберите Intent.
  2. Прокрутите страницу вниз до конца страницы в разделе Fulfillment.
  3. Turn "Включите вызов webhook для этого намерения "вкл.
  4. Сохраните конфигурацию.
  5. Повторите это для каждые Намерение, которое вы хотите обработать с использованием Fulfillment.

illustration of steps to enable for each Intent

Развертывание вашего веб-крюка

Вам также необходимо написать свой веб-крюк для обработки различных инициируемых Интентов. Код для 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);
});
0 голосов
/ 03 марта 2020

Вы можете создать карту в API, где все намерения будут сопоставлены обработчику корреспонденции при исполнении.

Вот пример кода,

const express = require("express");
const { WebhookClient } = require("dialogflow-fulfillment");
const { welcome, defaultFallback } = require("./intents/welcomeExit");
const app = express();
app.post("/dialogflow", express.json(), (req, res) => {
    const agent = new WebhookClient({ request: req, response: res });
    let intentMap = new Map();
    intentMap.set("Default Welcome Intent", welcome);
    intentMap.set("Default Fallback Intent", defaultFallback);
    agent.handleRequest(intentMap);
});
app.listen(process.env.PORT || 8080);

Это было сделано в NodeJS. Вы можете использовать другие языки, поддерживаемые Dialogflow. Как это настраивается в Dialogflow, проверьте эту ссылку .

...