2016-03-28 19 views
3

私は本当にここでこの質問をしてきましたが、グーグルグーグルで永遠に私はそれが必要だと感じています。 So:ボットファーザーの段階的なボット(テレグラム/ルビー)

私は電卓のボットファーザーと同じ構造のボットを作ろうとしています。私はボットを使用しているユーザーのためのステップバイステップ設定を有効にしたいと思います。だから私は "あなたのメールは何ですか?"私は彼らが自然にそれに答えることができるようにしたいと思います、そして、私は彼らが何に答えたのか知っています。それは問題です、私は彼らがどの質問に答えたのか、何を引き起こすのかを知るための良い構造を理解しているようには見えません。

if message.text == 'london' 
    bot.api.send_message(chat_id: message.chat.id, text: 'Correct!') 
end 

そして、私は、ユーザーが書き込みますかわからないときや、私は別の質問のために受け入れられた答えを重複している場合、これは非常に有益ではありません。私は単純に、このような構造を使用して、スキャンしたすべてのボットのすべてのドキュメント。私は返信とForceReplyなどを使用しようとしましたが、これも奇妙な構造を作成し、自然なメッセージとしてフィードできれいに見えません。

簡単に言えば:メッセージが質問と一緒になって何かを誘発するかどうかを知るにはどうすればよいですか?

申し訳ありませんが多少の構造化されていない質問があれば、うれしいことに、あなたの素晴らしい人が私の問題に答えてくれるでしょう。

+0

は、あなたが注意として、これは構造化されていないので、おそらくこのような質問のためのより良いフォーラムがありますが、なぜカントの質問はあなたが同様に比較されている変数、なぜcouldntのAQ /ペアが可能辞書ですか?質問=>答え。あなたはifの1つの条件に限定されません。 – ConstantineK

+0

どの質問に誰が質問されたのかを追跡し、後で回答を比較できる構造が必要です。いくつかのコードでスケッチする必要があります。 – tadman

答えて

1

私のボットでは、DBに "TelegramChat"レコードを作成し、 "AwaitingReplyTo"フィールドに "question"といくつかの関連情報(例えば、更新が必要なアカウントのID)の参照を保存します。

のような何か:

def ask_question(question): 
    ... 
    telegram_chat_record(chat_id).awaiting_reply_to = "question:" + question 
    telegram_chat_record.save_to_db() 
    ... 

def dispatcher(update): 
    telegram_chat_record = get_telegram_chat_record(update) 
    if telegram_chat_record.awaiting_reply_to == "question:What is your favorite city?": 
    check_reply_to_favorite_city(update) 
    ... 
+2

これは素晴らしいことです!私は何かの上に建物を始め、これはケーキの上にクリームを作った。あなたは、素晴らしいです!ありがとう! – LessPixels

関連する問題