Телеграмм: Запуск веб приложения из инлайн кнопки

Пытаюсь запустить веб сайт в телеграмме, это новая функциональность в нем. Работаю напрямую через апи, без сторонних библиотек. Ниже упрощенный кусочек кода.

$inline .= '[{"text":"'.$row['text'].'","web_app":{"url":"'.$row['val'].'"},"callback_data":"setitem_'.$toid.'"}]';
...
$inline = '{"inline_keyboard":['.$inline.']}';
sendMsg($bot['token'],$chatId,"Нажмите для запуска:", ["reply_markup"=>$inline]);

Веб страница не запускается, пробовал на https://yandex.ru

Делаю тоже через кнопку меню - всё работает:

  if ($bot['menubtntext'] && $bot['menubtnurl']) {
    $POST = [
        'menu_button' => '{"type":"web_app","text":"'.tgescape($bot['menubtntext']).'","web_app":{"url":"'.$bot['menubtnurl'].'"}}'
    ];
  }
  $ch = curl_init($TgAPI.'bot'.strip_tags($bot['token']).'/setChatMenuButton');
  curl_setopt_array($ch, array(
      CURLOPT_HEADER => 0,
      CURLOPT_RETURNTRANSFER => 1,
      CURLOPT_POST => 1,
      CURLOPT_POSTFIELDS => $POST,
      CURLOPT_TIMEOUT    => 60
  ));
  $output = curl_exec($ch);
  $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  curl_close($ch);

Что я делаю не так?


Ответы (1 шт):

Автор решения: LeonidMew

callback_data не совместимо с web_app Вот так работает:

$inline[] = [['text'=>tgescape($row['text']), 'web_app' => ['url' => $row['val']]]];
$inline = '{"inline_keyboard":'.json_encode($inline).'}';
sendMsg($bot['token'],$chatId,"Нажмите для запуска:", ["reply_markup"=>$inline]);
→ Ссылка