Развертывание кода из локальной среды в Google Action / Dialogflow: ничего не происходит - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь создать действие Google в диалоге. Более конкретно, я пытаюсь развернуть код javaScript из моего терминала. Несколько дней назад код работал отлично.

Работающий файл index.js:

'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

var admin = require("firebase-admin");

var serviceAccount = require("./pathToAccountKey);

let count = 0



admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://voice-c5a55.firebaseio.com/"
});

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(`Welkom gekke banaan!`);
}

function fallback(agent) {
  let conv = agent.conv();
  count++
  console.log("count is " + count)
  if (count === 1){
    agent.add(`poging 1`)
  } else if (count === 2) {
    agent.add(`nu 2`);
  } else {
    return agent.close('Te laat')

  };

}

function voting(agent) {
    let conv = agent.conv(); // Get Actions on Google library conv instance

    let endConversation = false;
    let responseText = '';
    let singer = agent.parameters['kleur'];

    if ( singer !== '' ) {
        let artistName = singer.replace(' ', ''). toLowerCase();
        let currentArtist = admin.database().ref().child('/artists/' + artistName);

        currentArtist.once('value', function (snapshot) {
            if ( snapshot.exists() && snapshot.hasChild('votes') ) {
                let obj = snapshot.val();
                currentArtist.update({
                    votes: obj.votes + 1
                })
            } else {
                currentArtist.set({
                    votes: 1
                })
            }
        });
        responseText = 'Thanks man voor je stem!';
    } else {
      fallback();


    }

    if ( endConversation ) {
        conv.close(responseText);
    } else {
        conv.ask(responseText);
    }
    agent.add(responseText);

}
let intentMap = new Map();
    intentMap.set('Default Welcome Intent', welcome);
    intentMap.set('Default Fallback Intent', fallback);
    intentMap.set('kleur stemmen', voting);

Проблема в том, что, похоже, нет связи между моей локальной средой и консолью Actions. В package.json есть все, что нужно. Я действительно не знаю, что делать, я снова мог развернуть и протестировать этот код несколько дней назад, но сейчас просто ничего не происходит.

Я установил все зависимости с помощью NPM, так что, на мой взгляд, это не может быть проблемой. Опять же, это отлично работало несколько дней назад. Я также проверил, были ли включены все исполнения для webhook.

Развертывание с терминала не выдает никаких ошибок. Однако, когда я пытаюсь проверить его в симуляторе действий, я получаю следующую ошибку:

{ "responseMetadata": { "статус": { «код»: 10, "message": "Не удалось проанализировать ответ Dialogflow в AppResponse из-за пустого речевого ответа", "подробности": [ { "@type": "type.googleapis.com/google.protobuf.Value", "value": "{\" id \ ": \" ea987ebc-670b-4fd4-b002-dce3a21910eb \ ", \" timestamp \ ": \" 2018-11-07T15: 33: 16.59Z \ ", \" lang \ ": \" п \ "\ "результат \": {}, \ "статус \": {\ "код \": 200, \ "ERRORTYPE \": \ "успех \"}, \" SESSIONID \ ": \" ABwppHEMJQALun_4R3ESqXJoEO8JoIs1P9riNuLpNMYbHfGT6XLhxo4EQaj6vmDe1ks-jUZG7-l6A9JkIaE \ "}" } ] } } }

Так что мне кажется, что что-то не так в соединении между моим терминалом и консолью. Я бы очень хотел получить ответ на этот вопрос!

UPDATE:

  • Я попытался развернуть, используя firebase deploy Развертывание не выдает никаких ошибок и реагирует точно так же, как когда код работал, поэтому проблем там нет. Я также проверил, был ли я в правильном каталоге.

  • Ничего не появляется в журналах Firebase. Как вы можете видеть в коде, что-то должно появиться там, но это не так.

Снимок экрана со страницы "Выполнение диалога".

  • Обработчики намерений добавляются в код, они были там, но я скопировал и плохо вставил его.

1 Ответ

0 голосов
/ 09 ноября 2018

Вам необходимо включить Webhook в своем наборе Dialogflow и вставить URL-адрес развертывания функций Firebase, которые развертываются с помощью firebase deploy.

Убедитесь, что вы используете правильный проект действий

firebase use <PROJECT_ID>

Идентификатор проекта вашего действия можно найти в консоли действий в разделе Обзор> (значок шестеренки)> Настройки проекта.

Обратитесь к следующей ссылке Google Codelabs, чтобы настроить соединение между локальной средой и функциями firebase:

https://codelabs.developers.google.com/codelabs/actions-2/#2

...