Получить ошибку для телеграммы встроенной клавиатуры

Я столкнулся с проблемой при попытке использовать встроенную клавиатуру телеграммы при использовании html-тега в URL.

$var = urlencode("https://api.telegram.org/bot/sendMessage?chat_id=@channel&parse_mode=html&text=\xF0\x9F\x8C\x8D+<b>Hello</b>");
$text = "Hi";
$keyboard = [
'inline_keyboard'=>[
[
['text'=>'Click','url'=>$var]
]
]
];
$keyboard = json_encode($keyboard);
$url= "https://api.telegram.org/bot".$token."/sendMessage?chat_id=MY_ID&parse_mode=html&reply_markup=".$keyboard."&text=".$text;

Я получаю ошибку BUTTON_URL_INVALID.
Но все нормально после удаления <b>Hello</b>

2

Решение

Не совсем уверен, что причина этого, но кажется html не может быть использован как parse_mode в этой ситуации.

Попробуйте использовать Markdown вместо этого и изменить <b>Hello</b> в *Hello*,

Таким образом, ваша первая строка изменится на:

$var = urlencode("https://api.telegram.org/bot/sendMessage?chat_id=@channel&parse_mode=Markdown&text=\xF0\x9F\x8C\x8D+*Hello*");

0

Другие решения

Вам необходимо отправить URL в кодировке JSON, так что просто используйте "....&reply_markup=" . json_encode($keyboard) . "&text=..."

Вы можете доказать это самостоятельно, var_dump($keyboard) а также var_dump("to string: $keyboard"),

0

По вопросам рекламы [email protected]