0
私はシーケンシャルな方法で質問をするメッセンジャーボットを持っています。質問を追跡するために、私はセッション変数であるカウンターを使用しています。しかし、私はセッション[カウンター ']を増やすと変化しません。セッション変数は増分されても変更されません
ここに論理があります。このコードが動作しても、私のボットに同じロジックを実装すると、なぜ動作しないのか分かりません。
question_dict = {
'Locq0':[{'question':"Some question 0",'options':(["Continue","@continue"])}],
'Locq1':[{'question':"Some question 1",'options':(["Continue","@continue"])}],
'Locq2':[{'question':"Some question 2",'options':(["Continue","@continue"])}],
}
def main():
session['counter'] = 0
if user_payload == "@continue":
increment()
def increment():
if session['counter'] <= len(question_dict):
session['counter'] += 1
quiz(session['counter'])
def quiz(counter):
question = question_dict['Locq{}'.format(counter)][0]['question']
option = question_dict['Locq{}'.format(counter)][0]['options']
# display the question and option
print(question)
print(option)
バックボーンに戻るユーザーが最初にボットを使用すると、セッション変数がsession['counter']
に作成され、0に初期化されます。ボットは質問を開始し、次の質問に移動するにはsession['counter'] +=1
を増やす必要があります。しかし、それは発生しません。session['counter']
は、increment()関数が呼び出されても常に0です。
何か間違っていますか?それとも、適切な方法がありますか?このアプリはFlaskを使用して提供されます。
おかげで、次のコードを試してみてください!しかし、これは問題ではありません。フォームを持つWebアプリケーションで同じロジックを使用するとうまく動作します。 @ Kalyan Reddy –
次に、セッションのカウンタをコードのどこかで0に更新している可能性があります。グローバル辞書としてセッション辞書を変更してみてください。 –
セッションはフラスコ辞書であり、カウンタはセッション変数です。マルチカットサーバーはグローバルを追跡できないので、私はセッションを使い始めました。あなたはその質問に従うことができますhttps://stackoverflow.com/questions/45795977/python3-incrementing-a-global-variable-causes-bot-to-randomize-responses-when @ Kalyan Reddy –