Могу ли я просто использовать стандартный веб-крючок Dialogfow в качестве отправной точки в Azure? - PullRequest
0 голосов
/ 19 октября 2018

Я разрабатываю webhook в Node.js для моей части Fullfillment в диалоге Google.Я буду размещать webhook в Azure.

Мой вопрос: могу ли я просто взять / использовать код webhook / fullfillment по умолчанию, который находится в Dialogflow, и скопировать его / разместить в Azure и использовать его в качестве исходного места?А как насчет сегмента кода "exports.dialogflowFirebaseFulfillment = functions.https.onRequest ((запрос, ответ)?

    '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?`);
    }

        agent.add(`Thank you...`);

        return admin.database().ref('AgeInfo').once("value").then((snapshot) => {
        var averageAge = snapshot.child("RunningAverage").val();
        agent.add(`Our recorded average age is ` + averageAge);
        });
    }


    // 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('AskAge', handleAge);
    // intentMap.set('your intent name here', yourFunctionHandler);
    // intentMap.set('your intent name here', googleAssistantHandler);
    agent.handleRequest(intentMap);
    });

1 Ответ

0 голосов
/ 19 октября 2018

Если вы используете экспресс-сервис в Azure, у вас не должно быть слишком много проблем.Вам нужно сделать две вещи:

  1. Установить промежуточное ПО body-parser для вашего экспресс-приложения, которое преобразует текстовое тело JSON в объект и сохраняет его в request.body.

  2. Замените часть exports.dialogflowFirebaseFulfillment = functions.https.onRequest( экспресс-маршрутизацией для запроса POST на "/ dialogflowFirebaseFulfillment" (или выберите другое имя, как я сделал ниже - вам просто нужно изменить URL-адресдля вашего webhook).

Я не тестировал, но это может выглядеть примерно так:

var expressApp = express();
var bodyParser = require('body-parser');

expressApp.use( bodyParser.json() );

expressApp.post( '/dialogflowFulfillment', (request, response) => {
  // Continue with the rest of the code here that was inside the
  // onRequest handler
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...