Неверный запрос: не удается разобрать ответную разметку JSON объекта клавиатуры - PullRequest
0 голосов
/ 05 апреля 2019

Я хочу создать кнопку в своем боте телеграммы с помощью javascript, и я работаю в сценарии Google.

Но не получил.

Мой код:

function a() {
  const opts = {
    reply_to_message_id: '690534265',
    reply_markup: {
      resize_keyboard: true,
      one_time_keyboard: true,
      keyboard: [ ['test'], ['test1'] ]
    }
  };

  MainKeyBoard(opts, 'afs', '690534265');
}


function MainKeyBoard(tasti, toxt, chid) {
  var url = link + '/sendMessage?parse_mode=Markdown' +
    '&chat_id=' + chid +
    '&text=' + toxt +
    '&reply_markup=' + tasti;
  var respose = UrlFetchApp.fetch(url);
}

Это моя ошибка:

   Request failed for https://api.telegram.org/bot745193421:<token>/sendMessage?parse_mode=Markdown&chat_id=690534265&text=afs&reply_markup=[object%20Object] returned code 400. Truncated server response: {"ok":false,"error_code":400,"description":"Bad Request: can't parse reply keyboard markup JSON object"} (use muteHttpExceptions option to examine full response)

Я пытался добавить JSON.parse но ошибка:

SyntaxError: Unexpected token: o

1 Ответ

0 голосов
/ 05 апреля 2019

Поскольку opts является объектом, когда вы пытаетесь объединить, он будет использовать метод toString(), который просто вернет [object Object], который вы видите в запросе.

Для решения этой проблемыпроблема сериализации вашего объекта, используя JSON.stringify в вашей функции MainKeyboard.

function MainKeyBoard(tasti, toxt, chid) {
  var url = link + '/sendMessage?parse_mode=Markdown&chat_id=' + chid +
    '&text=' + toxt + '&reply_markup=' + JSON.stringify(tasti);
  var response = UrlFetchApp.fetch(url);
}
...