在网址中使用html标记时,我遇到了尝试使用电报内联键盘的问题。
$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>
答案 0 :(得分:0)
不完全确定这背后的原因是什么,但在这种情况下似乎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*");
答案 1 :(得分:0)
您需要发送URL编码的JSON,因此只需使用"....&reply_markup=" . json_encode($keyboard) . "&text=..."
您可以var_dump($keyboard)
和var_dump("to string: $keyboard")
自己证明这一点。