Интеграция с мессенджером Facebook - бот не предоставляет ответы - PullRequest
0 голосов
/ 11 сентября 2018

Я интегрировал Dialogflow с интеграцией мессенджера Facebook.Я выполнил действия, описанные в документах диалогового потока.

Я не получаю никаких сообщений / сообщений от мессенджера.

Я использовал conv.ask(), чтобы ответить на Intents, в том, что проблема?

Нужно ли обновлять раздел возможностей поверхности в действиях?

'use strict';

  // Import the Dialogflow module and response creation dependencies
  // from the Actions on Google client library.
  const {
    dialogflow,
    BasicCard,

  } = require('actions-on-google');

  // Import the firebase-functions package for deployment.
  const functions = require('firebase-functions');

  // Instantiate the Dialogflow client.
  const app = dialogflow({debug: true});


  function getRandomInt(max) {
    return Math.floor(Math.random() * Math.floor(max));
  }

  const swamiMessages = require('./messages');

  const swamiQuotes =require('./quotes');
  // Intent Mapping 

  //INTENT: 'Default Welcome Intent'.

  app.intent('Default Welcome Intent', (conv) => {
    conv.ask(
        `<speak> <emphasis level="moderate" >   `+
        `Do you want to hear an Inspiring  <break/> Quote or a Message from Swami <break/> Sukhabodhananda ` +
        `Do you want to know about Prasanna Trust <break/>`+
        //`Do you want to know about the upcoming programs` +
      ` </emphasis> </speak>`);
    });

  //INTENT: 'quote'
  //Should get triggered when the user request for an inspiring thought
  // asks for motivation 

  app.intent('quote', (conv) => {
    // when the welcome intent is triggered recite a random quote

    //let quoteNumber= getRandomInt(5);
    //let quote = quotes[quoteNumber].quote; //
      let quote =swamiQuotes.getQuote();

    if (quote) {
        conv.ask(
            `<speak> <emphasis level="moderate" >   `+
            `Let us hear  an Inspiring quote \n` +
            `<break strength="strong"> </break>  `+
            `${quote}` +
            `<break strength="strong"> </break>  `+
            `\nDo you want to hear another quote or message ` +
            ` </emphasis> </speak>`);
        } else
        {
          conv.ask(
            `<speak> <emphasis level="moderate" >   `+
            `Let us hear  an Inspiring quote ` +
            `<break strength="strong"> </break>  `+
            `quotes` +
            `\nDo you want to hear another quote or message ` +
            ` </emphasis> </speak>`);
        }
  });

  // INTENT: message 
  //Should get triggered when the user request for an inspiring message


  app.intent('message', (conv) => {
    // when the welcome intent is triggered recite a random message
    let message =swamiMessages.getMessage();
    //let formattedMessage=swamiMessages.formattedMessage(message);

    conv.ask(
        `<speak> <emphasis level="moderate" >   `+
        `Let us hear  an Inspiring Message ` +
        `<break strength="strong"> </break>  `+
        `${message}`+
        `\nDo you want to hear another quote or message ` +
        ` </emphasis> </speak>`);

    });

Обновить

Если я внесу изменения для использования диалогового потока-библиотека выполнения, как мне добавить две функции-обработчика по умолчанию - одну для действий в Google и одну для других интеграций?Я делаю что-то вроде

intentMap.set(null, googleAssistantOther);
intentMap.set(null, other);
//In place of null should i update the Intent Name and 
// googleAssitantOther and other are callback functions. 

1 Ответ

0 голосов
/ 11 сентября 2018

Вы указали, что пытаетесь интегрировать это с Facebook, но используете библиотеку actions-on-google, которая специально предназначена для ответов на сообщения, специально предназначенные для Google Assistant.

Если вы хотите написать код, который отвечает как для Ассистента, так и для другой платформы, поддерживаемой Dialogflow, вы можете обратиться к библиотеке выполнения диалогового потока .

Вам не нужно ничего делать с конфигурацией поверхности на консоли действий.

Обновление

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

if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
  intentMap.set(null, googleAssistantOther);
} else {
  intentMap.set(null, other);
}
...