Как мне отформатировать @ sys.date & @ sys.time для ответа Facebook Messenger в DialogFlow? - PullRequest
0 голосов
/ 31 января 2019

У меня есть демонстрационный бот, который принимает дату и время пользователя в качестве входных данных и просто повторяет их обратно.Тем не менее, это повторяется в формате ISO-8601, что я не хочу.Мне удалось отформатировать в встроенном редакторе для Google Assistant, но он не работает в Facebook Messenger.Можно ли как-нибудь отформатировать его во встроенном редакторе Messenger?

Это код, который я использую, он корректно форматирует его в тестовой консоли, но в Messenger in все еще использует ответы, которыеЯ вошел в Dialogflow.(Например, конечно, я подключу вас к настройке в $ Time на $ Date. Увидимся!)

const functions = require('firebase-functions');
const {dialogflow} = require('actions-on-google');

const WELCOME_INTENT = 'Default Welcome Intent';
const FALLBACK_INTENT = 'Default Fallback Intent';
const TUNEUP_INTENT = 'Book Tune-Up';
const DATE_ENTITY = 'Date';
const TIME_ENTITY = 'Time';
const timeZone = 'Europe/Belgrade';

const app = dialogflow();

function getLocaleTimeString(dateObj){
  return dateObj.toLocaleTimeString('en-US', { hour: 'numeric', hour12: true, timeZone: timeZone });
}

function getLocaleDateString(dateObj){
  return dateObj.toLocaleDateString('en-US', { weekday: 'long', month: 'long', day: 'numeric', timeZone: timeZone });
}

app.intent(TUNEUP_INTENT, (conv) => {
   const date = getLocaleDateString(new Date(conv.parameters[DATE_ENTITY]));
   const time = getLocaleTimeString(new Date(conv.parameters[TIME_ENTITY]));
   const responses = [`Sure thing, I'll hook you up with a tune-up at ${time} on ${date}. See you then!`, 
                     `Cool! So to recap - I'll book you with a tune-up on ${date} at ${time}. Thanks for booking!`,
                     `Great, you're booked for ${date} at ${time}. See you then!`];

   conv.ask(responses[Math.floor(Math.random() * responses.length)]);
 });

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

1 Ответ

0 голосов
/ 31 января 2019

Вы на правильном пути - вам нужно использовать веб-крючок выполнения, чтобы отформатировать результат так, как вы хотите.

Однако вы используете библиотеку actions-on-google, которая тольковыдает ответы на Google Assistant.Если вы хотите выводить данные по всем интеграциям, которые поддерживает Dialogflow, вам следует заглянуть в библиотеку диалогового потока .Концепции для этого похожи на действия в Google, но есть некоторые небольшие различия в стиле.

...