[英]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.