我创建了一个聊天机器人,Cortana正在使用该聊天机器人,它非常有用,但是,我目前正在从Blob存储文件中读取一些参数,并且希望使其更具动态性。从Cortana初始化技能后,是否可以发送参数?我在这里阅读:
Cortana可以读取UserInfo,例如名称,电子邮件,本地化等,但是我没有看到任何输入自定义值的方法,一旦在init上收到消息,我就可以读取该值。
感谢您的帮助,谢谢!
答案 0 :(得分:1)
请不要忘记Cortana是对话式的(RESTful,并且大多数情况下是无状态的)。问问自己,什么配置是对话框的一部分,而什么是服务的一部分。如果存在从用户发送的配置,则使用描述的三个上下文之一将其存储在会话上是有意义的:用户数据,对话数据或私人对话数据。这都是botframework:manage state data。
您可以通过两种方法来识别是否配置了Cortana。如果尚未将属性存储在userData上,请假定您尚未配置并更改对话框流。如果您想在调用时进行检查,则始终可以执行以下操作if( session.message.entities[0].name === 'Microsoft.Launch' ) { ... }
以我的一项技能,我只是这样做... if(! session.userData.bookName ) { session.beginDialog('openBook'); return; }
,其中openBook
设置了名字。
如果这是与服务相关的,则可以将配置移到所需位置。将其保存在Azure存储中可能仍然需要重新启动服务才能使用更改(除非您不断轮询。)相反,您可以将配置数据放在系统属性(环境变量)中,可以放在web.config
中,也可以放在容器中。例如,
<configuration>
<appSettings>
<!-- update these with your BotId, Microsoft App Id and your Microsoft App Password-->
<add key="BotId" value="YourBotId" />
<add key="MicrosoftAppId" value="" />
<add key="MicrosoftAppPassword" value="" /> ...
您可以将IIS设置为监视配置文件中的更改以自动重新启动。
希望这会有所帮助。