首页 > 解决方案 > 如何使用 SkillContext 将数据从 VirtualAssistant 传递给技能

问题描述

我需要使用技能分享来自我的虚拟助手的信息。我尝试使用 SkillContext,我没有收到错误,但在 Skill 中 SkillContext 是空的。

这是我在 VirtualAssistant MainDialog::RouteAsync 中用于设置有效负载的代码

                Dictionary<string, JObject> dictionary = new Dictionary<string, JObject>();

                dictionary.Add("userEmail", JObject.Parse("{ email: 'emiliano.carlesi@itattitude.com'}"));

                await _skillContextAccessor.SetAsync(dc.Context, new SkillContext(dictionary));

                var result = await dc.BeginDialogAsync(identifiedSkill.Id);

在 Cosmos DB botstate-db 中,我找到了值:

        "SkillContext": {
            "$type": "Microsoft.Bot.Builder.Skills.SkillContext, Microsoft.Bot.Builder.Skills",
            "userEmail": {
                "email": "emiliano.carlesi@itattitude.com"
            }
        },

这是我用来检索有效负载的 MainDialog::RouteAsync 中的代码:

            SkillContext skillContext = await _contextAccessor.GetAsync(dc.Context, () => new SkillContext());

            if (skillContext == null)
            {
                TelemetryClient.TrackTrace("skillContext is null", Severity.Information, null);
            }
            else
            {
                TelemetryClient.TrackTrace("skillContext is not null", Severity.Information, null);

                if (skillContext.Keys != null && skillContext.Keys.Count > 0)
                {
                    foreach (string key in skillContext.Keys)
                    {
                        TelemetryClient.TrackTrace(String.Format("Key in skillContext: {0}", key), Severity.Information, null);
                    }
                }
            }

标签: c#botframework

解决方案


推荐阅读