将参数发送给Cortana Skill

时间:2018-10-04 04:57:39

标签: azure botframework chatbot cortana cortana-skills-kit

我创建了一个聊天机器人,Cortana正在使用该聊天机器人,它非常有用,但是,我目前正在从Blob存储文件中读取一些参数,并且希望使其更具动态性。从Cortana初始化技能后,是否可以发送参数?我在这里阅读:

specific file here

Cortana可以读取UserInfo,例如名称,电子邮件,本地化等,但是我没有看到任何输入自定义值的方法,一旦在init上收到消息,我就可以读取该值。

感谢您的帮助,谢谢!

1 个答案:

答案 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设置为监视配置文件中的更改以自动重新启动。

希望这会有所帮助。