azure - 在 Microsoft Virtual Assistant 和 Skills 之间传递数据
问题描述
我已将 CalendarSkill 与我的虚拟助手连接,并且工作正常。我没有使用身份验证提示,而是在我的虚拟助手中生成图形令牌并希望将其传递给技能。如何将数据传递给 SkillContext 或使用插槽(不确定如何使用这些插槽检索或发送数据)。
我曾尝试使用 DialogOptions 传递数据,但如何在技能中检索该数据。
解决方案
假设您尝试在其中检索选项的对话框是WaterfallDialog
您可以使用该Options
属性检索选项,正如您已经提到的,您可以使用options
参数传递选项。
这看起来是这样的:
// Call the dialog and pass through options
await dc.BeginDialogAsync(nameof(MyDialog), new { MyProperty1 = "MyProperty1Value", MyProperty2 = "MyProperty2Value" });
// Retrieve the options
public async Task<DialogTurnResult> MyWaterfallStepAsync(WaterfallStepContext waterfallStepContext, CancellationToken cancellationToken)
{
var passedInOptions = waterfallStepContext.Options;
...
}
我建议使用强类型类来传入和检索选项,因此您可以创建如下所示的内容:
// Concrete class definition
public class MyOptions
{
public string MyOptionOne { get; set; }
public string MyOptionTwo { get; set; }
}
// Passing options to Dialog
await dc.BeginDialogAsync(nameof(MyDialog), new MyOptions{ MyOptionOne = "MyOptionOneValue", MyOptionTwo = "MyOptionTwo" });
// Retrieving options in child Dialog
using Newtonsoft.Json;
public async Task<DialogTurnResult> MyWaterfallStepAsync(WaterfallStepContext waterfallStepContext, CancellationToken cancellationToken)
{
var passedInOptions = waterfallStepContext.Options;
// Get passed in options, need to serialise the object before we deserialise because calling .ToString on the object is unreliable
MyOptions passedInMyOptions = JsonConvert.DeserializeObject<MyOptions>(JsonConvert.SerializeObject(waterfallStepContext.Options));
...
// Use retrieved options like passedInOptions.MyOptionOne etc
}
推荐阅读
- r - R从Yahoo Finance刮掉不同的文本行
- python - Selecting strings from a list of strings having same value
- flutter - 来自 API 请求的错误“在 null 上调用了方法 '[]'。接收方:null 尝试调用:[](0)”更新
- laravel - Laravel api 返回数据格式
- sql-server - 如何通过关闭获得带有顺序的用户ID
- angular - 如何在 Angular 6 中使客户端上的令牌过期?
- javascript - JavaScript 按钮切换:代码完成
- javascript - 在 React Material UI Slider 上添加组件以跟踪标签
- c++ - 如何使用 C++ 和 Raylib 制作简单的菜单?
- excel - 无法在 Powershell 中将我的 Excel 文件的第一行居中对齐