Callback_query.data в Телеграм бот - не отвечает на нажатие кнопки (Google apps script)
Не могу сравнить значение callback_query.data от нажатия кнопки на inline клавиатуре.
Для дебага - вывожу в таблицу и вижу, что callback_query.data при нажатии приходит верное. Но дальше условие if не сравнивает callback_query.data с заданным мной и не выводит клавиатуру второго уровня.
Конкретно скрипт в этой таблице - выдает только "Ура работает!", А callback_data == 'option1' и т.д. - не распознает.
Что неправильно делаю?
Вот таблица со скриптом: https://docs.google.com/spreadsheets/d/1SE0ZNhA1_B3ige2YxA4bZKahEuH5M6Jk0Bs2NQIbWXE/edit?usp=sharing
botSettings.gs
//это нужно заполнить
const botToken = '##############################################';
const webAppUrl = 'https://script.google.com/macros/s/AKfycbzQwN42JEBtMnH3IARCwMxRT9eect3qsLIKVOc-oJuuLT6_G_fwbxgEb8RTKO4kLdZu/exec';
const ssID = '############################################';
///Logger = BetterLog.useSpreadsheet(ssID);
//это уже не нужно
const telegramUrl = 'https://api.telegram.org/bot' + botToken;
function setWebhook() {
var response = UrlFetchApp.fetch(telegramUrl + '/setWebhook?url=' + webAppUrl);
Logger.log(response.getContentText());
}
function getMe() {
let response = UrlFetchApp.fetch("https://api.telegram.org/bot" + botToken + "/getMe");
console.log(response.getContentText());
}
function deleteWebhook() {
var response = UrlFetchApp.fetch(telegramUrl + '/deleteWebhook?url=' + webAppUrl);
Logger.log(response.getContentText());
}
function send() {
let chat_id = 11111111;
let text = "Привет! Как дела22?";
sendMessage(chat_id, text);
}
function answerCallbackQuery(callback_query, message) {
UrlFetchApp.fetch(telegramUrl + '/answerCallbackQuery?callback_query_id=' + callback_query + '&text=' + message + '&show_alert=1&cache_time=0');
}
function getUpdates() {
UrlFetchApp.fetch(telegramUrl + '/getUpdates', {
method: 'post',
contentType: 'application/json'
//payload: JSON.stringify({...})
})
}
function sendMessage(chatId, message) {
UrlFetchApp.fetch(telegramUrl + '/sendMessage', {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({
chat_id: chatId,
text: message,
parse_mode: 'Markdown'
})
})
}
function sendMessageKeyboard(chatId, message, keyBoard){
UrlFetchApp.fetch(telegramUrl + '/sendMessage', {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({
chat_id: chatId,
text: message,
reply_markup: {
keyboard: keyBoard,
resize_keyboard: true,
one_time_keyboard: true
}
})
})
}
function sendMessageInlineMenu(chatId, message, inlineKeyboard){
UrlFetchApp.fetch(telegramUrl + '/sendMessage', {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({
chat_id: chatId,
text: message,
reply_markup: {
inline_keyboard: inlineKeyboard
}
})
})
}
function sendMessageKeyboardRemove(chatId, message){
UrlFetchApp.fetch(telegramUrl + '/sendMessage', {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({
chat_id: chatId,
text: message,
reply_markup: {
remove_keyboard: true
}
})
})
}
doPost.gs
/*
ниже – пример сообщения, которое отправит бот нам как только ему что-то напишут
это – объект, в коде мы его парсим, достаём имя отправителя, никнейм, само сообщение и записываем в наш лог
{"updateid":000000000,
"message":{"messageid":00,
"from":{"id":000000000,"isbot":false,"firstname":"<your name>","lastname":"<your surname>","languagecode":"en"},
"chat":{"id":000000000,"firstname":"<your name>","lastname":"<your name>","type":"private"},
"date":0000000000,
"text":"<текст сообщения>",
"entities":{"offset":0,"length":11,"type":"bot_command"} // в случае если это команда
}
}
*/
function doPost(e) {
try {
var contents = JSON.parse(e.postData.contents),
contents_s = JSON.stringify(contents);
SpreadsheetApp.openById(ssID).appendRow([new Date(), 'doPost', contents_s]);
if (contents.message) {
const msg = contents.message,
chatType = msg.chat.type,
messageText = (msg.text || '') + (msg.caption || ''), //или само сообщение или подпись к файлу / фото
user = msg.from.hasOwnProperty('username') ? msg.from.username : '',
userId = msg.from.id,
userFirstName = msg.from.first_name,
userLastName = msg.from.last_name,
chatId = msg.chat.id,
src_msg = msg.hasOwnProperty('reply_to_message') ? msg.reply_to_message.text : '',
src_sender = msg.hasOwnProperty('reply_to_message') ? msg.reply_to_message.from.username : '';
if (messageText == "/start") {
var title = "Заголовок/вопрос меню 1 уровня";
var inlineKeyboard = [
[{ "text": "Опция1", 'callback_data': 'option1' }],
[{ "text": "Опция2", 'callback_data': 'option2' }]
];
sendMessageInlineMenu(chatId, title, inlineKeyboard);
return;
}
const checkPm = chatType == 'private',
chat = checkPm ? '' : msg.chat.username, //если отправлено не ЛС, то добавляем username чата
chatTitle = checkPm ? '' : msg.chat.title; //и название чата
const checkFile = msg.hasOwnProperty('document'),
fileId = checkFile ? msg.document.file_id : msg.hasOwnProperty('photo') ? msg.photo[1].file_id : '',
fileMime = checkFile ? msg.document.mime_type : '',
fileName = checkFile ? msg.document.file_name : '';
var answer = "нет данных";
//==========================================================================================================================
sendMessage(chatId, JSON.stringify(e));
return;
}
if (contents.callback_query) {
var callback_query_id = contents.callback_query.id;
var callback_userId = contents.callback_query.from.id;
var callback_data = contents.callback_query.data;
answerCallbackQuery(callback_query_id, "Ура работает!"); // по факту нихера не работает)))
// Logger.log(contents.callback_query.data);
SpreadsheetApp.openById(ssID).appendRow([new Date(), 'doPost - callback_query.data', contents.callback_query.data]);
sendMessage(contents_s);
if (callback_data == 'option1') {
sendMessage(callback_userId, "Ответ на пункт меню 1 уровня");
} else if (callback_data == 'option2') {
var title = "Заголовок/вопрос меню 2 уровня";
var inlineKeyboard = [
[{ 'text': 'Подопция1', 'callback_data': 'suboption1' }],
[{ 'text': 'Подопция2', 'callback_data': 'suboption2' }]
];
sendMessageInlineMenu(chatId, title, inlineKeyboard);
} else if (callback_data == 'suboption1' || callback_data == 'suboption2') {
sendMessage(chatId, 'Ответ на пункт меню 2 уровня');
}
// Если отправлено сообщение а не callback
}
SpreadsheetApp.openById(ssID).appendRow([new Date(), 'doPost', 'nothing']);
} catch (err) {
console.error(err.stack, err.message);
SpreadsheetApp.openById(ssID).appendRow([new Date(), err.stack, err.message]);
}
}
(В этом вопросе ответ тоже не работает - Callback в Телеграм боте на Google apps script)