2017-05-07 27 views
0

どのように私はテレグラムボットとユーザーとのやりとりをさせることができますか?例えば:私のテレグラムボットが着信メッセージを待つことはできますか?

ユーザー:/

ボットを買う:あなたが購入したいですか?

ユーザー:アイスクリーム

ボット:あなたは成功したアイスクリームを買ってきました!

どうすればいいですか?

switch($message) { 
[...] 
case "/buy": 
    sendMessage($chatID, "What do you want to buy?"); 
    //Here I need your help :D 
    break; 
} 

答えて

0

アップデートを受け取るためにウェブフックを使用していると仮定すると、受け取っているすべてのアップデートでphpスクリプトが再び実行されます。 この場合、ボットがメッセージを受信するたびに確認しているユーザーの特定の「ステータス」を保存して、次に行う必要があることを示す必要があります。 例は次のようになります。

switch($message) { 
case "/buy": 
    sendMessage($chatID, "What do you want to buy? Icecream, Water or Sprite?"); 
    $storage[$chatID]['status'] = 'awaitingProductChoice'; 
    saveStorage(); 
    break; 
} 

あなたは[$ユーザーID]何とか(saveStorage();)$の記憶を保存する必要があります。理想的には、データベースがない場合は、file_put_contents('storage.json', json_encode($storage));などを使用してシリアル化してください。 Telegram ServersはCookieを送信しないため、セッションは機能しません。

は、その後、あなたのswitch文の前にいくつかの類似したコードを配置:

$storage = readStorage(); // load from DB or file_get_contents from file 
if ($storage[$chatID]['status'] === 'awaitingProductChoice') { 
    // return " You have successfully bought Icecream!" 
    $storage[$chatID]['product choice'] = $message['text']; 
} else if ($storage[$chatID]['status'] === 'other stuff') { 
    // other step 
} 
else switch($message) [...] 
+0

あなたの答えは興味深いですが、あなたは私の編集した質問にあなたの答えを編集してくださいすることができますか?私はどういう意味ですか?入ってくる答えを文字列または配列に保存しますか? – Deeonix

+0

@Deeonixそれは単純ですが、ユーザーがあなたに送ったテキストを保存するだけです。私は私の答えを編集しました、多分それはあなたを助けます。 –

+0

readStorage()とsaveStorage()はどのように見えますか? – Deeonix

関連する問題