azure - 向 Cortana Skill 发送参数
问题描述
我创建了一个聊天机器人,Cortana 将其用作一项技能,它工作得很好,但是,我目前正在从 blob 存储文件中读取一些参数,我想让它更具动态性;有没有办法在初始化来自 Cortana 的技能时发送参数?我在这里读到:
Cortana 可以读取用户信息,例如姓名、电子邮件、本地化等,但我还没有看到任何输入自定义值的方法,一旦在 init 上收到消息就可以读取这些值。
我会很感激你的帮助,谢谢!
解决方案
不要忘记 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 设置为监视配置文件中的更改以自动重启。
希望这可以帮助。
推荐阅读
- powershell - 需要将哈希表的格式输出更改为文件
- laravel - cron 作业无法在 godaddy 服务器上运行 laravel 计划
- java - Java 8 原始流到集合的映射方法
- python - 使用apply lambda和str从python中的列获取子字符串
- sql-order-by - 如何使用 Criteria Builder 创建临时列 + when + order by
- c++ - 如何在没有警告的情况下将 float 转换为 size_t
- react-native - React Native 中的倒数计时器
- javascript - 动态引导轮播项目
- angular-library - 安装和使用 igniteui-angular 控件后在 Angular 库中构建错误
- c# - 如何让主项目使用 NewtonSoft.Json 和使用 Json.Net.Unity3D 的子项目?