2017-09-03 55 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