2017-07-20 16 views
1

iOS SDKを使用しているとき、私のsessionAttributesがLexで更新されていません。iOS SDK経由でLex sessionAttributesを更新する際の問題

次のように私はレックスにセッション属性を送信:

getStage()とgetBot()は文字列を返す関数です
self.interactionKit?.text(inTextOut: chatTextField.text!, 
    sessionAttributes: ["stage" : getStage() , "bot" : getBot()]) 

"ステージ"と "ボット"の間で一連のセッション属性を送信すると、これらの値は、送信された更新値に関係なく、後続のすべての呼び出しでLexによって使用されます。コール#1の

すなわち、もし私が、私はレックスの両方のコールに "1" と "第一" を使用します

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

を送信

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

とコール#2に送信します。

気付いていないキャッシングがありますか?または、セッション属性を更新するために、「AWSLexSwitchModeResponse」で何かする必要がありますか?

答えて

0

最終的に解決されました。これは、それがAWSのリソースによって答えたAWSフォーラムからで、AWSレックスのiOS SDKのバグだった:。

「私は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にローカルで変更を加えましたが、問題は解決しました。

関連する問題