Функция Firebase не работает с хинди - PullRequest
1 голос
/ 14 июня 2019

Функция Firebase вызывает этот хинди API для действия диалогового потока.Функция firebase отправляет Error in API call, однако она отлично работает при тестировании с english API , но в то время мой текст запроса также был на английском.Ожидаемый результат, он играет стихи из Корана.

Я думаю, что проблема с текстом запроса.Нужно иметь кодировку utf-8 или что-то в этом роде?Функция firebase выглядит следующим образом:

const functions = require('firebase-functions');
var request1 = require('request');

exports.webhook = functions.https.onRequest((request, response) => {
   console.log("request.body.result.parameters: ", request.body.queryResult.parameters);
   let params = request.body.queryResult.parameters;

   if (request.body.queryResult.intent.displayName === "verseByVerse") {
      var options = {
         url: `https://theislam360.me/api/find/hindi/${params.any}`,
         json: true
      }
      request1(options, function (error, res, body) {
         if (error) response.send({ fulfillmentText: "error in API call" });
         else {
            var audio ="";
            var length = Object.keys(body).length;
            var surah_id = [];
            var ayat_no = [];
            for (i = 1; i <= length; i++) {
               surah_id.push(body[`result_${i}`].Surah_No);
               ayat_no.push(body[`result_${i}`].Ayat_No);
               if ((surah_id[i-1]<10) && (ayat_no[i-1]<10)){
                  audio = audio + 
               `Surah Number ${surah_id[i-1]}, Ayat Number ${ayat_no[i-1]}<audio src='https://theislam360.me/api/play/versebyverse/00${surah_id[i-1]}00${ayat_no[i-1]}.mp3'></audio>`;   
               }
               else if ((surah_id[i-1]<10) && (ayat_no[i-1]>9) && (ayat_no[i-1]<100)){
                  audio = audio +
               `Surah Number ${surah_id[i-1]}, Ayat Number ${ayat_no[i-1]}<audio src='https://theislam360.me/api/play/versebyverse/00${surah_id[i-1]}0${ayat_no[i-1]}.mp3'></audio>`;   
               }
               else if ((surah_id[i-1]<10) && (ayat_no[i-1]>99)){
                  audio = audio +
               `Surah Number ${surah_id[i-1]}, Ayat Number ${ayat_no[i-1]}<audio src='https://theislam360.me/api/play/versebyverse/00${surah_id[i-1]}${ayat_no[i-1]}.mp3'></audio>`;   
               }
               else if ((surah_id[i-1]>9) && (surah_id[i-1]<100) && (ayat_no[i-1]<10)){
                  audio = audio +
               `Surah Number ${surah_id[i-1]}, Ayat Number ${ayat_no[i-1]}<audio src='https://theislam360.me/api/play/versebyverse/0${surah_id[i-1]}00${ayat_no[i-1]}.mp3'></audio>`;   
               } 
               else if ((surah_id[i-1]>9) && (surah_id[i-1]<100) && (ayat_no[i-1]>9) && (ayat_no[i-1]<100)){
                  audio = audio +
               `Surah Number ${surah_id[i-1]}, Ayat Number ${ayat_no[i-1]}<audio src='https://theislam360.me/api/play/versebyverse/0${surah_id[i-1]}0${ayat_no[i-1]}.mp3'></audio>`;   
               }
               else if ((surah_id[i-1]>9) && (surah_id[i-1]<100) && (ayat_no[i-1]>99)){
                  audio = audio +
               `Surah Number ${surah_id[i-1]}, Ayat Number ${ayat_no[i-1]}<audio src='https://theislam360.me/api/play/versebyverse/0${surah_id[i-1]}${ayat_no[i-1]}.mp3'></audio>`;   
               } 
               else if ((surah_id[i-1]>99) && (ayat_no[i-1]<10)){
                  audio = audio +
               `Surah Number ${surah_id[i-1]}, Ayat Number ${ayat_no[i-1]}<audio src='https://theislam360.me/api/play/versebyverse/${surah_id[i-1]}00${ayat_no[i-1]}.mp3'></audio>`;   
               }
               else if ((surah_id[i-1]>99) && (ayat_no[i-1]>9) && (ayat_no[i-1]<100)){
                  audio = audio +
               `Surah Number ${surah_id[i-1]}, Ayat Number ${ayat_no[i-1]}<audio src='https://theislam360.me/api/play/versebyverse/${surah_id[i-1]}0${ayat_no[i-1]}.mp3'></audio>`;   
               }
               else if ((surah_id[i-1]>99) && (ayat_no[i-1]>99)){
                  audio = audio +
               `Surah Number ${surah_id[i-1]}, Ayat Number ${ayat_no[i-1]}<audio src='https://theislam360.me/api/play/versebyverse/${surah_id[i-1]}${ayat_no[i-1]}.mp3'></audio>`;   
               }
               if (surah_id[i-1]>90){
                  audio = audio + `<audio src='https://theislam360.me/api/play/versebyverseurdu/${surah_id[i-1]}-${ayat_no[i-1]}.mp3'></audio>`
               }
               // audio = audio +
               // `<audio src="https://theislam360.me/api/play/versebyverse/002005.mp3"/>`;
            }
            response.send({fulfillmentText:`<speak>
            ${audio}
            Let’s play the SSML Trivia Game!
            <break time="500ms"/>
            </speak>`})
   }
}
      )}
});

आदमी означает man

ОТВЕТ RAW API

{
  "responseId": "8e0f258a-5931-4364-9f45-b4d283d95584-baaf0c1f",
  "queryResult": {
    "queryText": "क़ुरान आदमी के बारे में कहाँ बात करता है?",
    "parameters": {
      "any": "आदमी"
    },
    "allRequiredParamsPresent": true,
    "fulfillmentText": "error in API call",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "error in API call"
          ]
        }
      }
    ],
    "intent": {
      "name": "projects/versebyversequran/agent/intents/7c009ede-8b68-4db1-9cf6-b3cf1241691a",
      "displayName": "verseByVerse"
    },
    "intentDetectionConfidence": 0.7840172,
    "diagnosticInfo": {
      "webhook_latency_ms": 122
    },
    "languageCode": "en"
  },
  "webhookStatus": {
    "message": "Webhook execution successful"
  }
}

Примечание: дайте мне знать, если вынужна еще вещь

1 Ответ

0 голосов
/ 14 июня 2019

Вы получите Request path contains unescaped character ОШИБКА, поэтому вам нужно encodeURI

var request1 = require('request');
var options = {
    url: encodeURI(`https://theislam360.me/api/find/hindi/आदमी`),
    json: true
 }
 request1(options, function (error, res, body) {
     console.log(error);
     console.log(body);
 })
...