首页 > 解决方案 > 向 Cortana Skill 发送参数

问题描述

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

获取用户的个人资料和上下文信息

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

我会很感激你的帮助,谢谢!

标签: azurebotframeworkchatbotcortanacortana-skills-kit

解决方案


不要忘记 Cortana 是会话式的(RESTful,并且大部分是无状态的)。问问自己什么配置是对话的一部分,什么是服务的一部分。如果存在从用户发送的配置,那么使用所描述的三个上下文之一将其存储在会话中是有意义的:用户数据、对话数据或私人对话数据。这都是 botframework:管理状态数据

有几种方法可以辨别是否配置了 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 设置为监视配置文件中的更改以自动重启。

希望这可以帮助。


推荐阅读