【问题标题】:Issue updating Lex sessionAttributes via iOS SDK通过 iOS SDK 更新 Lex sessionAttributes 的问题
【发布时间】:2017-08-18 07:01:49
【问题描述】:

当我使用 iOS sdk 时,我的 sessionAttributes 没有在 Lex 中更新。

我向 Lex 发送会话属性如下:

self.interactionKit?.text(inTextOut: chatTextField.text!, 
    sessionAttributes: ["stage" : getStage() , "bot" : getBot()])

其中 getStage() 和 getBot() 是返回字符串的函数。

我的问题是,当我为“stage”和“bot”发送一组会话属性时,Lex 会将这些值用于所有后续调用,而不管我发送什么更新的值。

即如果在呼叫 #1 我发送

["stage" : "one" , "bot" : "first"]

在通话 #2 中我发送

 ["stage" : "two" , "bot" : "second"]

Lex 将在两个调用中使用“one”和“first”。

是否有一些我不知道的缓存?或者我是否需要对“AWSLexSwitchModeResponse”做一些事情来更新会话属性?

【问题讨论】:

    标签: ios amazon-web-services aws-lambda aws-sdk amazon-lex


    【解决方案1】:

    终于解决了!这是 AWS Lex iOS 开发工具包中的一个错误,这是来自 AWS 论坛,由 AWS 资源回答:

    “我在 SDK 中发现了问题。在:

    https://github.com/aws/aws-sdk-ios/blob/master/AWSLex/AWSLexInteractionKit.m

    正如您推测的那样,会话属性正在被缓存。

    问题是在 textInTextOut 和 textInAudioOut 方法中传入的属性是首先添加传入的属性,然后添加缓存的属性,如果有任何冲突将覆盖那些你试图做的传入.

    SDK 修复是颠倒顺序:

    目前:

    [attributes addEntriesFromDictionary:sessionAttributes];
    [attributes addEntriesFromDictionary:self.sessionAttributes];
    

    应该是:

    [attributes addEntriesFromDictionary:self.sessionAttributes];
    [attributes addEntriesFromDictionary:sessionAttributes];
    

    这将在 SDK 的下一版本中修复。"

    我已在本地对项目中的 SDK 进行了更改,问题已解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多