2016-06-21 78 views
2

我正在使用MS Bot機架。我想仙定製鍵盤的用戶,所以我嘗試用這個JSON回覆消息:通過JSON發送電報機器人密鑰

 public async Task<Message> Post([FromBody]Message message) 
    { 

     var connector = new ConnectorClient(); 

     if (message.Type == "Message") 
     {    
      var replyMessage = message.CreateReplyMessage($"You sent message"); 

      replyMessage.ChannelData = @" 

{ 「」 方法 「」: 「」 的sendMessage 「」, 「」 參數 「」: { 「」reply_markup「」: 「{」「1」「],[」「2」「]],[[」「3」「]], 「],[」 「5」 「],[」 「6」 「]]] }
} }」;

  return replyMessage; 



     } 
     else 
     { 
      return HandleSystemMessage(message); 
     } 
    } 

但沒有ħ appens。例如,該消息與貼紙正常工作:

replyMessage.ChannelData = @" 
{ 
    ""method"": ""sendSticker"", 
    ""parameters"": 
    { 
     ""sticker"": 
     { 
      ""url"": ""https://upload.wikimedia.org/wikipedia/commons/3/33/LittleCarron.gif"", 
      ""mediaType"": ""image/gif"" 
     } 
    } 
}"; 

我認爲這個問題是在「鍵盤」的一部分,在某處陣列。

回答

0

添加另一個支架到您keyboard(多了一個數組)是這樣的:

""keyboard"":[[[""1""],[""2""]],[[""3""]],[[""4""],[""5""],[""6""]]] 

知道有三重陣列的內部相互代替兩個代碼的。

Documentation

的工作守則的一部分:

$keyboard = [ 
    'keyboard' => 
     [[['text' => '1'], ['text' => '2']], [['text' => '3']], [['text' => '4'], ['text' => '5'], ['text' => '6']]], 
    'one_time_keyboard' => true, 
]; 
$markup = json_encode($keyboard, true); 
$data = [ 
    'chat_id' => sender_user_id($update), 
    'text' => 'JUST A TEXT', 
    'reply_markup' => $markup]; 


$ch = curl_init(); 
$url = 'https://api.telegram.org/bot' . BOT_TOKEN . '/SendMessage'; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, ($data)); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$result = curl_exec($ch); 
curl_close($ch); 
+0

可惜的是,仍然沒有收到鍵盤。 –

+0

由於這個文檔[鏈接](https://core.telegram.org/bots/api#sendmessage),'chat_id'和'text'參數是必需的,如果你的第二個代碼工作,所以你沒有輸入任何'text'參數,它不能是空字符串!此外,我更新了我的答案,並添加了一個工作代碼與PHP。 –

+0

您正在使用Telegram,而不是通過MS Bot Framework,只使用Telegram API。我嘗試通過這個框架發送消息。當我執行「sendSticker」它工作正常(chat_id也需要在這裏,但我沒有設置它)。我認爲,chat_id和其他東西已經在「CreateReplyMessage」方法中設置。 –