将整数添加到会话存储的整数

Adding an integer to session-stored integer

我正在 python 中编写一项技能,它在会话中将整数存储为“mor_score”,如下所示:

{
  "session": {
    "sessionId": "SessionId.REDACTED",
    "application": {
      "applicationId": "amzn1.ask.skill.REDACTED"
    },
    "attributes": {
        "mor_score": 0
    },

我的一个意图是尝试向 mor_score 添加一个值,但我不太清楚如何操作。意图代码如下所示:

def choice_one(intent, session):
    card_title = "Add It Up"
    reprompt_text = None
    should_end_session = False
    if intent['slots']['ChoiceOneSlot']['value'] == 'Red':
        mscore = session.get('attributes').get('mor_score') # currently a value of 0
        session_attributes = {'mor_score': mscore +=2} # trying to add 2
        speech_output = "<speak>Okay, you choose red.</speak>"
    elif intent['slots']['ChoiceOne']['value'] == 'blue':
        speech_output = "<speak>Yes, you choose blue.</speak>"
    else:
        speech_output = "<speak>Try again with an acceptable answer.</speak>"
    return build_result(session_attributes, build_speechlet_response(
        card_title, speech_output, reprompt_text, should_end_session))

我知道如何将结果 return 返回到 Alexa 会话中,但我显然错过了在 returned 之前将数字添加到变量的过程。非常感谢任何帮助。

编辑:下面的代码帮我解决了!

mscore = session.get('attributes').get('mor_score')
mscore +=2
session_attributes = {'mor_score': mscore}

mscore += 2 是 Python 中的语句 - 它绝对不能用作表达式的一部分。您需要将其单独放在一行中(然后在表达式中仅使用 mscore),或者在表达式中使用 mscore + 2。这两种方法的不同之处在于 mscore 之后留下的值,但这在这里并不重要,因为您之后不会使用它。