Как сделать правильный поток в диалоге с webhook? - PullRequest
0 голосов
/ 15 декабря 2018

enter image description here У меня есть несколько вопросов.
Я хочу создать бота с помощью этой процедуры.
ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ100 ㅡ ㅡ
Я: Привет
Бот: Добро пожаловать в мой агент!
Бот: Как тебя зовут?
Я: Смит
Бот: Смит
Бот: 1
Бот: 2
1014 * Я сделал намерение 'привет', у которого параметр как 'name' требуется.
Но когда он запускается, это работает с порядком ниже.
*: ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ ㅡ.: Смит
Бот: Добро пожаловать к моему агенту!
С моим намерением все по-другому.
Не могли бы вы?
Это совершенно иное.порекомендовать правильный способ сделать мой объект?
Большое вам спасибо.

'use strict';

const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');

process.env.DEBUG = 'dialogflow:debug';

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 hello(agent) {
    agent.add(`Welcome to my agent!`);

    let city = request.body.queryResult.parameters['name']; 
    agent.add(`${city}`);

    information().then((a) => {
    agent.add(JSON.stringify(a)); 
  });
}

  function fallback(agent) {
    agent.add(`I didn't understand`);
    agent.add(`I'm sorry, can you try again?`);
}

  let intentMap = new Map();
  intentMap.set('hello', hello);
  intentMap.set('Default Fallback Intent', fallback);

  agent.handleRequest(intentMap);
});

function information(){
  return new Promise(function (resolve, reject) {
    var a = ['1','2'];
    resolve(a);
         });
    }

1 Ответ

0 голосов
/ 16 декабря 2018

Поскольку вы установили name в качестве обязательного параметра, Dialogflow будет ожидать вызова веб-крюка выполнения до тех пор, пока не будут заполнены все обязательные параметры (если у вас нет переключателя для использования выполнения для заполнения слотов, чего у вас нет).

Итак, что происходит:

  • Intent запущен, потому что "hello" соответствует Intent
  • Отсутствует параметр name, поэтому Dialogflow запрашиваетза это
  • Пользователь отвечает и name заполняется
  • Dialogflow отправляет информацию на ваш webhook
  • Ваш код добавляет сообщение "приветствия"

Вот где это становится сложным.Не все клиенты поддерживают несколько сообщений в ответе или поддерживают так много, поэтому дополнительные вызовы add() могут игнорироваться в зависимости от того, с каким клиентом вы тестируете.В общем случае вы должны добавлять разные типы ответов (текстовые, карточные и т. Д.), Чтобы они были кросс-платформенными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...