Я пытаюсь создать действие 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. Как вы можете видеть в коде, что-то должно появиться там, но это не так.
Снимок экрана со страницы "Выполнение диалога".
- Обработчики намерений добавляются в код, они были там, но я скопировал и плохо вставил его.