通过 iOS SDK 发布更新 Lex sessionAttributes
Issue updating Lex sessionAttributes via iOS SDK
当我使用 iOS sdk 时,我的 sessionAttributes 没有在 Lex 中更新。
我将会话属性发送给 Lex,如下所示:
self.interactionKit?.text(inTextOut: chatTextField.text!,
sessionAttributes: ["stage" : getStage() , "bot" : getBot()])
其中 getStage() 和 getBot() 是 return 字符串的函数。
我的问题是,当我为 "stage" 和 "bot" 发送一组会话属性时,Lex 将这些值用于所有后续调用,无论我发送什么更新值。
即如果在呼叫 #1 我发送
["stage" : "one" , "bot" : "first"]
并在呼叫 #2 中发送
["stage" : "two" , "bot" : "second"]
Lex 将使用 "one" 和 "first" 进行两次调用。
是否有一些我不知道的缓存?或者我需要用 "AWSLexSwitchModeResponse" 做些什么来更新会话属性吗?
终于解决了!这是 AWS Lex iOS SDK 中的一个错误,这是来自 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 进行了本地更改,问题已解决。
当我使用 iOS sdk 时,我的 sessionAttributes 没有在 Lex 中更新。
我将会话属性发送给 Lex,如下所示:
self.interactionKit?.text(inTextOut: chatTextField.text!,
sessionAttributes: ["stage" : getStage() , "bot" : getBot()])
其中 getStage() 和 getBot() 是 return 字符串的函数。
我的问题是,当我为 "stage" 和 "bot" 发送一组会话属性时,Lex 将这些值用于所有后续调用,无论我发送什么更新值。
即如果在呼叫 #1 我发送
["stage" : "one" , "bot" : "first"]
并在呼叫 #2 中发送
["stage" : "two" , "bot" : "second"]
Lex 将使用 "one" 和 "first" 进行两次调用。
是否有一些我不知道的缓存?或者我需要用 "AWSLexSwitchModeResponse" 做些什么来更新会话属性吗?
终于解决了!这是 AWS Lex iOS SDK 中的一个错误,这是来自 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 进行了本地更改,问题已解决。