2016-08-18 16 views
0

私はPHPでテレグラムボットを行っています。コールバックデータが "dataArrivo_"のとき、ボットはメッセージを送信します。ここ は私のコードです:ボタンが押されたときにメッセージを送信する

<?php 
$content = file_get_contents("php://input"); 
$update = json_decode($content, true); 

if(!$update) 
{ 
    echo "Non puoi <code>:)</code>\n"; 
    echo "Dati ricevuti:\n".json_encode($_POST); 
    exit; 
} 

$message = isset($update['message']) ? $update['message'] : ""; 
$messageId = isset($message['message_id']) ? $message['message_id'] : ""; 
$chatId = isset($message['chat']['id']) ? $message['chat']['id'] : ""; 
$firstname = isset($message['chat']['first_name']) ? $message['chat']['first_name'] : ""; 
$lastname = isset($message['chat']['last_name']) ? $message['chat']['last_name'] : ""; 
$cbData = isset($update["callback_query"]["data"]) ? $update["callback_query"]["data"] : ""; 
$cbmid = isset($update["callback_query"]["message"]["message_id"]) ? $update["callback_query"]["message"]["message_id"] : ""; 
$cbid = isset($update["callback_query"]["id"]) ? $update["callback_query"]["id"] : ""; 
$cbcid = isset($update["callback_query"]["from"]["id"]) ? $update["callback_query"]["from"]["id"] : ""; 
$username = isset($message['chat']['username']) ? $message['chat']['username'] : ""; 
$date = isset($message['date']) ? $message['date'] : ""; 
$text = isset($message['text']) ? $message['text'] : ""; 

$text = trim($text); 

header("Content-Type: application/json"); 
if($username){ 
    if($cbid){ 
     switch($cbData){ 
      case "dataArrivo_": 
      $btn1 = array("text" => "Torna indietro", "callback_data" => "start"); 
      $keyboard = array(array($btn1)); 
      $keyboard = array("inline_keyboard" => $keyboard); 
      $parameters = array(
       "chat_id" => $cbcid, 
       "text" => "Data di arrivo prevista:\n`01 Settembre 2016`", 
       "parse_mode" => "Markdown", 
       "message_id" => $cbmid, 
       "reply_markup" => $keyboard 
      ); 
      $parameters["method"] = "editMessageText"; 
      break; 
      case "start": 
      $btn1 = array("text" => "Versione Chatfuel", "url" => "https://telegram.me/HumanEPandaBot"); 
      $btn2 = array("text" => "Data di arrivo prevista", "callback_data" => "dataArrivo_"); 
      $keyboard = array(array($btn1), array($btn2)); 
      $keyboard = array("inline_keyboard" => $keyboard); 
      $parameters = array('chat_id' => $chatId, "text" => "Salve, avventuriero @". $username.", il bot al momento non è disponibile ma se vuoi puoi giocare sulla [versione Chatfuel!](https://telegram.me/HumanEPandaBot)", "parse_mode" => "Markdown", "reply_markup" => $keyboard, "disable_web_page_preview" => true, "message_id" => $cbmid); 
      $parameters["method"] = "editMessageText"; 
      break; 
      default: 
      $btn1 = array("text" => "Versione Chatfuel", "url" => "https://telegram.me/HumanEPandaBot"); 
      $btn2 = array("text" => "Data di arrivo prevista", "callback_data" => "dataArrivo_"); 
      $buttons = array(array($btn1), array($btn2)); 
      $keyboard = array("inline_keyboard" => $buttons); 
      $parameters = array('chat_id' => $chatId, "reply_to_message_id" => $messageId, "text" => "Salve, avventuriero @". $username.", il bot al momento non è disponibile ma se vuoi puoi giocare sulla [versione Chatfuel!](https://telegram.me/HumanEPandaBot)", "parse_mode" => "Markdown", "reply_markup" => $keyboard, "disable_web_page_preview" => true); 
      $parameters["method"] = "sendMessage"; 
     } 
    } 
}else{ 
    $parameters = array("chat_id" => $chatId, "reply_to_message_id" => $messageId, "text" => "Mi dispiace, ma devi impostare un username per utilizzarmi.\nImpostazioni > Username"); 
    $parameters["method"] = "sendMessage"; 
} 
echo json_encode($parameters); 

私はイタリア人だ私の悪い英語のため は申し訳ありませんが...私は$ CBDATA(callback_data)のための代わりの場合は、スイッチを使用しますが、私は、コードの一部を逃したと思う:P

答えて

0

ボタンで生成されたレスポンスを解析する場合、レスポンスは通常のメッセージではないため、callback_queryフィールドを読み取る必要があります。ボタンに設定したコールバックデータ(フィールドデータ)が含まれています。すべてのレスポンスの構造全体を見ることができるように、出力ごとにファイルを書き込むことをお勧めします。

関連する問題