in lex-web-ui/src/store/actions.js [711:747]
updateLexState(context, lexState) {
const lexStateDefault = {
dialogState: '',
inputTranscript: '',
intentName: '',
message: '',
responseCard: null,
sessionAttributes: {},
slotToElicit: '',
slots: {},
};
// simulate response card in sessionAttributes
// used mainly for postContent which doesn't support response cards
if ('sessionAttributes' in lexState &&
'appContext' in lexState.sessionAttributes
) {
try {
const appContext = JSON.parse(lexState.sessionAttributes.appContext);
if ('responseCard' in appContext) {
lexStateDefault.responseCard =
appContext.responseCard;
}
} catch (e) {
const error =
new Error(`error parsing appContext in sessionAttributes: ${e}`);
return Promise.reject(error);
}
}
context.commit('updateLexState', { ...lexStateDefault, ...lexState });
if (context.state.isRunningEmbedded) {
context.dispatch(
'sendMessageToParentWindow',
{ event: 'updateLexState', state: context.state.lex },
);
}
return Promise.resolve();
},