2016-07-23 3 views
0

ボットAPIを使用してボットを操作するためのスクリプトを作成しようとしています。メッセージが受信されるたびにこのファイルを参照します。しかし、問題は、スクリプトの実行中に新しいメッセージを受け取ることができないということです。プロセスのワークフローを変更するための更新されたメッセージを取得して割り当てようとすると、古いメッセージ( )スクリプトを起動した瞬間に存在スクリプトの起動後に電報ボットから更新されたメッセージを受け取ることができません

$update = file_get_contents('php://input');///get new data 
$update = json_decode($update, TRUE);///decode data 
$message = $update["message"]["text"];///assign message 
switch($message) {////vary actions accordingly to first message 
case "number1": 
////send smth to user and wait for answer 
$update = file_get_contents('php://input'); ////get new data with updated message 
$update = json_decode($update, TRUE); ////decode 
$message = $update["message"]["text"]; ////assign 
switch($message) {////vary further actions accordingly to new message 
    case "number2": 
    ////further actions 
    } 
} 
... 

答えて

1

あなたは電報からデータ{} ('php://input')を複数回取得することはできません。どうして?

私は何が起こるかを説明してみましょう: 0-誰かが

の1-電報サーバがそのメッセージをつかむと、あなたの事前定義された スクリプトを実行電報クライアント経由でボットにメッセージを送信したい(スクリプト。ウェブフックを設定するときに、あなたのスクリプトに与えられるであろう。

-2-オン時間とあなたが('php://input')全体 データを使用して一度だけ(そのメッセージが含まれる)に電報を与え、NOW 電報はあなたを与えるためには何もありません。

3 - あなたのスクリプトが実行され、いくつかのミリ秒以下 でメッセージ

4 - あなたのスクリプトは、JOB、それを終了(この余分な少しの時間に誰が入力することはできませんし、クライアント側でもっと何か を入力してください)プロセス。

5-次にユーザーが何かを入力すると(1秒後または1年後)、Telgramは新しいメッセージでスクリプトを再度呼び出します。

あなただけ見ての通り電報があなたのためにデータを持っており、あなたのボットスクリプトを呼び出すため('php://input')の最初の呼び出しは(有用なデータを持っている('php://input')の他の呼び出しはあなたに何も与えないEXPERIENCE AS

:。。 (メッセージを処理する前に)コードの一番上に一度だけデータを取得して処理します。以前のメッセージが必要な場合は、データベースに保存しておくことができます。

関連する問題