Действие Google Dialogflow не работает при использовании async / await - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю действие диалогового потока Google, и оно работает нормально, если я имею дело с обычными вещами. Но мне нужно извлечь некоторые данные из URL-адреса, и как только я получаю данные с помощью async / await в своем намерении, код перестает работать, и я не могу определить, в чем заключается ошибка. Я борюсь с этим с 5 дней. Это серьезно сводит меня с ума, и, следовательно, я не могу завершить свое действие. Единственная ошибка, которую я получаю в консоли: MalformedResponse Не удалось проанализировать ответ Dialogflow в AppResponse из-за неверного ответа платформы: не удалось найти RichResponse или SystemIntent в ответе платформы для agentId: b71b73aa-854f-4979-a062-e7aedb906e04 и intentId: 80a4b104-26ba-4f9f-a717-4f65f7f1465d. WebhookStatus: код: 14 сообщение: «Вызов Webhook не выполнен. Ошибка: недоступен». ..

Ниже приведен код теста:

"use strict";

// Import the Dialogflow module and response creation dependencies
// from the Actions on Google client library.
const {
    dialogflow,
    BasicCard,
    Permission,
    Suggestions,
    Carousel,
    Image,
} = 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
});
const axios = require("axios");

const URL = "https://example.com/example.json"; //example URL

let confirmedCases;
let activeCases;
let recoveredCases;
let deathCases;

async function testIt() {
    try {

        const response = await axios.get(URL);
        const result = response.data;
        let data = result["data"];
        let confirmedCases = data[0];
        let activeCases = data[1];
        let recoveredCases = data[2];
        let deathCases = data[3];

        console.log(String(confirmedCases));

    } catch (error) {
        console.log(error);
    }

}

testIt(); //works fine in terminal (by running node index.js)

app.catch((conv, error) => {
    console.error(error);
    conv.ask(`I encountered a glitch. Can you say that again?  ${error}`);
});


// Handle the Dialogflow intent named 'Default Welcome Intent'.
app.intent('Default Welcome Intent', async (conv) => {
    try {
        const response = await axios.get(URL);
        const result = response.data;
        let data = result["data"];
        let confirmedCases = data[0];
        let activeCases = data[1];
        let recoveredCases = data[2];
        let deathCases = data[3];
        //console.log(typeof(String(confirmedCases)));
        conv.ask(String(confirmedCases));


    } catch (error) {
        console.log(error);
    }

});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...