2016-09-01 23 views
3

申し訳ありません私の質問があまりにも厄介になったら、私はここで新しいので、アドバイスは大歓迎です。'Message'アップデートと 'Callback Query'アップデートを区別する方法はありますか?

「メッセージ」アップデートと「コールバッククエリ」アップデートを区別するにはどうすればよいですか? 私はインラインキーボードを作っていましたが、使用するとボットはちょうどハングし、何も返信しません。私は少しの研究を行い、this questionを見つけました。これは私が問題を理解するのを助けましたが、それほど多くはありませんでした。

私のボットは今、この権利のようなものを使用しています。

// read incoming info and grab the chatID 
$content = file_get_contents("php://input"); 
$update = json_decode($content, true); 
$chatID = $update["message"]["chat"]["id"]; 

switch($update["message"]["text"]){ 
    /* insert magic here */ 
} 

だから、このコードはメッセージではなくCallbackQueriesを扱うことができます。私はそれらを処理するためにwantew場合、私は(他の質問の回答に基づいて)このようなものを使用することができます

$callback_query = $update["callback_query"] 
/* same as above */ 

しかし、私はそれがメッセージまたはコールバッククエリであるかどうかをどのように確認できますか?

答えて

0

CallbackQueryがnullかどうかを簡単に確認できます。 電報のドキュメントを参照してください

CallbackQuery

このオブジェクトは、インラインキーボードにおけるコールバック ボタンからの着信コールバッククエリーを表します。 というクエリを発信したボタンがボットから送信されたメッセージに添付されていた場合、フィールドメッセージは になります。ボタンがボットを介して送信されたメッセージ( インラインモード)に添付されていた場合、フィールドinline_message_idが表示されます。フィールドデータまたはgame_short_nameのうちの1つが になります。電報のドキュメントによれば

1
if (($update['message']) != null) { 

} else if ($update['callback_query'] != Null) { 

:オプションのパラメータの

ほとんどの1つは、任意の所与の 更新中に存在することができます。

だから、どれがNullでないかを確認するだけです。

関連する問題