向 Cortana Skill 发送参数

Send parameters to Cortana Skill

我创建了一个聊天机器人,Cortana 正在使用它作为一项技能,它工作得很好,但是,我目前正在从一个 blob 存储文件中读取一些参数,我想让它更动态;有没有办法在初始化来自 Cortana 的技能时发送参数?我在这里阅读:

Get the user's profile and contextual information

Cortana 可以读取用户信息,例如姓名、电子邮件、本地化等,但我还没有看到任何输入自定义值的方法,一旦在 init 上收到消息我就可以读取这些值。

非常感谢您的帮助,谢谢!

不要忘记 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 设置为监视配置文件中的更改以自动重启。

希望对您有所帮助。