2016-06-21 46 views
2

私はMS Bot Frameworkを使用しています。私は、ユーザーに銭カスタムキーボードにしたいので、私は、この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" "]]、[[" "4" "]、[" "5" "]、[" "6" "]]] }
}}";

  return replyMessage; 



     } 
     else 
     { 
      return HandleSystemMessage(message); 
     } 
    } 

過ぎさh appens。例えば、ステッカーでこのメッセージが正常に動作します:

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

私はこの問題は、「キーボード」の部分は、アレイ内のどこかにあると思います。

答えて

0

は、あなたのkeyboardに別のブラケットを追加します(1以上の配列)を次のように:。

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

代わりにあなたのコードの2の互いに内側トリプル配列が存在しているはず。

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

このドキュメント[link](https://core.telegram.org/bots/api#sendmessage)のために、 'chat_id'と' text'パラメータは必要です。もしあなたの2番目のコードが動作していて、何も入力していなければ'text'パラメータであり、空文字列であってはいけません!また私は私の答えを更新し、私はPHPで作業コードを追加します。 –

+0

Telegram APIを使用するだけで、MS Bot Framework経由ではなくTelegramで作業しています。私はこのフレームワークを介してメッセージを送信しようとします。そして、私が "sendSticker"を実行すると、それはうまく動作します(chat_idもここで必要ですが、私はそれを設定しません)。私は、chat_idと他のものは既に "CreateReplyMessage"メソッドで設定されていると思います。 –

関連する問題