会话变量在递增时不会发生变化

时间:2017-08-26 04:23:01

标签: python session flask facebook-messenger-bot

我有一个信使机器人,以顺序的方式提问。为了跟踪问题,我使用的是一个会话变量的计数器。但是当我增加会话时[计数器']它不会改变。

这是逻辑。即使这段代码有效,我也不确定为什么当我为我的机器人实现相同的逻辑时,它无法工作。

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.然后机器人开始提问,转到下一个应增加的问题{{1 }}。但即使调用increment()函数,session['counter'] +=1始终为0也不会发生这种情况。

我做错了吗?或者有适当的方法吗?此应用程序使用Flask提供。

1 个答案:

答案 0 :(得分:0)

我认为这是因为当调用main方法时,它会抛出一个错误。首先尝试初始化字典然后递增它 以下代码抛出错误

def main():
  session['counter'] = 0
  if user_payload == "@continue":
      increment()

尝试以下代码

 def main():
      session = {'counter':0}
      if user_payload == "@continue":
          increment()