当我使用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会使用"一个"和"第一"对于这两个电话。
是否有一些我不知道的缓存?或者我需要做什么" AWSLexSwitchModeResponse"更新会话属性?
答案 0 :(得分:0)
终于解决了!这是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进行了本地更改,问题已解决。