2017-09-03 50 views
2

我在使用url中的html标记时遇到了试图使用电报内联键盘的问题。电报内联键盘获取错误

$var = urlencode("https://api.telegram.org/bot/[email protected]&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

不完全知道什么是这背后的原因后确定,但它似乎html不能在这种情况下,作为parse_mode

尝试使用Markdown来代替并将<b>Hello</b>更改为*Hello*

所以,你的第一行会改变为:

$var = urlencode("https://api.telegram.org/bot/[email protected]&parse_mode=Markdown&text=\xF0\x9F\x8C\x8D+*Hello*");

+0

我真的很感谢你的帮助。有效。但我真的需要html。我不熟悉Markdown。例如,我不知道如何插入新行和非破坏空间  ;。 – Ali

0

您需要发送URL编码的JSON,所以只需使用"....&reply_markup=" . json_encode($keyboard) . "&text=..."

您可以通过var_dump($keyboard)var_dump("to string: $keyboard")这个自己证明。

+0

谢谢,但我仍然与urlencode错误。 – Ali

+0

@Ali对不起,我的错误是'json_encode',而不是'urlencode'。更新为我的帖子:P. – Sean