簡體   English   中英

將JSON數組返回到Node JS中的電報機器人?

[英]Returning a json array to telegram bot in node js?

我對電報漫游器有些困惑。 我已經在節點js中構建了該漫游器,而后端在Java中。 因此,基本上,當用戶在漫游器中輸入類別時,它將返回具有不同類別的選項列表。 現在,我的Java Web服務將類別作為JSON數組返回。 當我嘗試將JSON數組返回給我的機器人時,出現一些錯誤。 我可能做錯了什么? 這是我的代碼。

Bot.js

telegram.on("text",function (message,req,res) {

    var messagetext = message.text;
    var receiver = message.chat.id; //the user receiving the response from the bot
    var timestamp = message.date; //timestamp
    var msgid = message.message_id;//message id
    var sender = message.from.id; //id of the telegram bot
    console.log("message",messagetext);
    fd.itemcategory().then(function (v) {
        console.log(v);
        telegram.sendMessage(sender,v);


    });
});

Botservice.js

module.exports = {
    itemcategory: function(callback) {
        var categories=[];
        return new Promise(function(resolve, reject){
            request('https://********.ngrok.io/', { json: true },  function(err,res,body) {

                for(i=0;i<body.categories.length;i++){
                    categories.push(body.categories[i].categories.name);
                }
                resolve(categories);


            });



        });


    }

};

錯誤日志

Unhandled rejection Error: ETELEGRAM: 400 Bad Request: message text is empty
    at TelegramError.Error (native)
    at TelegramError.BaseError (C:\Users\Brian\Desktop\TelegramBot\node_modules\
node-telegram-bot-api\lib\errors.js:22:108)
    at new TelegramError (C:\Users\Brian\Desktop\TelegramBot\node_modules\node-t
elegram-bot-api\lib\errors.js:90:117)
    at C:\Users\Brian\Desktop\TelegramBot\node_modules\node-telegram-bot-api\lib
\telegram.js:213:15
    at tryCatcher (C:\Users\Brian\Desktop\TelegramBot\node_modules\bluebird\js\r
elease\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\Users\Brian\Desktop\TelegramBot\nod
e_modules\bluebird\js\release\promise.js:512:31)
    at Promise._settlePromise (C:\Users\Brian\Desktop\TelegramBot\node_modules\b
luebird\js\release\promise.js:569:18)
    at Promise._settlePromise0 (C:\Users\Brian\Desktop\TelegramBot\node_modules\
bluebird\js\release\promise.js:614:10)
    at Promise._settlePromises (C:\Users\Brian\Desktop\TelegramBot\node_modules\
bluebird\js\release\promise.js:693:18)
    at Async._drainQueue (C:\Users\Brian\Desktop\TelegramBot\node_modules\bluebi
rd\js\release\async.js:133:16)
    at Async._drainQueues (C:\Users\Brian\Desktop\TelegramBot\node_modules\blueb
ird\js\release\async.js:143:10)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\Users\Brian\Desktop\Tel
egramBot\node_modules\bluebird\js\release\async.js:17:14)
    at processImmediate [as _immediateCallback] (timers.js:367:17)

v-Json數組

[ 'Delivery',
  'Dine-out',
  'Nightlife',
  'Catching-up',
  'Takeaway',
  'Cafes',
  'Daily Menus',
  'Breakfast',
  'Lunch',
  'Dinner',
  'Pubs & Bars',
  'Pocket Friendly Deli
  'Clubs & Lounges' ]

根據文檔 ,該消息必須為字符串格式。 您正在發送數組。 那很可能導致錯誤。

因此,您需要手動將數組解析為字符串。 這是一些實現它的代碼:

var text = '';
for (var i = 0; i < v.length; i++) {
    text += v[i] + ' '; // or however you want to format it
}
telegram.sendMessage(sender, text);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM