2017-09-03 71 views
0

我正在创建一个带有此流程的AWS Lex chatbot:用户开始说open my bot,并且Lex询问了几个问题,用户必须回复它们,最后一个数字是生成,这是Fulfilled插槽。在lex响应后保留会话

这里是我的代码:

if (source === "DialogCodeHook") { 
    if (!sessionAttributes.isFlowDone) { 
    //multiple questions asked and managed by using Elicit Slots 
    //once the questions are complete I set sessionAttributes.isFlowDone=true; 
} else { 
    sessionAttributes.isFlowDone = false; 
    callback(close(intentRequest.sessionAttributes, "Fulfilled", buildMessage(finalMessageWithANumber))); 
} 

的问题是,虽然在AWS莱克斯测试聊天窗口中,当产生的号码,如果您清除控制台,输入open my bot,问题是一旦再次询问和流程是作为一个新的请求完成,我想要的是,在建立randomNumber后,我再次要求open my bot没有清除聊天窗口,它给了我另一个数字,而不是问我的问题(直接调用fulfilled回调)。请让我知道我该如何解决这个问题,并继续我的流程。

+0

你可以发布你的完整代码,即问题和数字生成的位置? – AndyOS

回答

0

控制台在控制台聊天窗口中测试机器人时使用随机用户标识(在PosText/PostContent API中发送)。点击“清除”按钮控制台会生成另一个随机用户标识。此外,僵尸程序会话与用户ID相关联,因此单击“清除”按钮可以提供类似于新用户与机器人聊天的体验(因此所有问题都会再次提出)。希望这回答你的问题。

+0

我可以通过编程方式重置用户标识吗? – user3872094

+0

如果您在控制台中使用Lex SDK而不是聊天窗口,那么您可以控制通过SDK传递的使用ID。在聊天窗口的情况下,不建议控制传递用户标识的方式。 – Saurabh