Module Bot框架中来自Ms团队的任务模块调用

Module Bot框架中来自Ms团队的任务模块调用,module,task,botframework,bots,microsoft-teams,Module,Task,Botframework,Bots,Microsoft Teams,我希望在我的机器人中打开一个任务模块(弹出-带音频/视频的iframe),该模块连接到Teams频道。在GitHub页面上提供的示例代码之后,我遇到了一些问题 我试图按照示例并通过合并到我的代码中,但没有成功 在我的bot.cs文件中,我正在创建调用类型的卡操作: card.Buttons.Add(new CardAction("invoke", TaskModuleUIConstants.YouTube.ButtonTitle, null,null,null,

我希望在我的机器人中打开一个任务模块(弹出-带音频/视频的iframe),该模块连接到Teams频道。在GitHub页面上提供的示例代码之后,我遇到了一些问题

我试图按照示例并通过合并到我的代码中,但没有成功

在我的bot.cs文件中,我正在创建调用类型的卡操作:

card.Buttons.Add(new CardAction("invoke", TaskModuleUIConstants.YouTube.ButtonTitle, null,null,null,
                new Teams.Samples.TaskModule.Web.Models.BotFrameworkCardValue<string>()
                {
                    Data = TaskModuleUIConstants.YouTube.Id
                }));
card.Buttons.Add(新卡片操作(“调用”),TaskModuleUIConstants.YouTube.ButtonTitle,null,null,null,
new Teams.Samples.TaskModule.Web.Models.BotFrameworkCardValue()
{
Data=TaskModuleUIConstants.YouTube.Id
}));
在从控制器继承的my BotController.cs中

   [HttpPost]
        public async Task PostAsync()
        {
            // Delegate the processing of the HTTP POST to the adapter.
            // The adapter will invoke the bot.
           await _adapter.ProcessAsync(Request, Response, _bot);        

        }

        public async Task<HttpResponseMessage> Post([FromBody] Activity activity)
        {
           if (activity.Type == ActivityTypes.Invoke)
            {
                return HandleInvokeMessages(activity);
            }

            return new HttpResponseMessage(HttpStatusCode.Accepted);
        }

        private  HttpResponseMessage HandleInvokeMessages (Activity activity)
        {

            var activityValue = activity.Value.ToString();
            if (activity.Name == "task/fetch")
            {
                var action = Newtonsoft.Json.JsonConvert.DeserializeObject<Teams.Samples.TaskModule.Web.Models.BotFrameworkCardValue<string>>(activityValue);

                Teams.Samples.TaskModule.Web.Models.TaskInfo taskInfo = GetTaskInfo(action.Data);
                Teams.Samples.TaskModule.Web.Models.TaskEnvelope taskEnvelope = new Teams.Samples.TaskModule.Web.Models.TaskEnvelope
                {
                    Task = new Teams.Samples.TaskModule.Web.Models.Task()
                    {
                        Type = Teams.Samples.TaskModule.Web.Models.TaskType.Continue,
                        TaskInfo = taskInfo
                    }
                };
                return msg;
            }

            return new HttpResponseMessage(HttpStatusCode.Accepted);
        }
[HttpPost]
公共异步任务PostAsync()
{
//将HTTP POST的处理委托给适配器。
//适配器将调用bot。
wait _adapter.ProcessAsync(请求、响应、_bot);
}
公共异步任务发布([FromBody]活动)
{
if(activity.Type==ActivityTypes.Invoke)
{
返回HandleInvokeMessages(活动);
}
返回新的HttpResponseMessage(HttpStatusCode.Accepted);
}
专用HttpResponseMessage HandleInvokeMessages(活动)
{
var activityValue=activity.Value.ToString();
if(activity.Name==“任务/提取”)
{
var action=Newtonsoft.Json.JsonConvert.DeserializeObject(activityValue);
Teams.Samples.TaskModule.Web.Models.TaskInfo TaskInfo=GetTaskInfo(action.Data);
Teams.Samples.TaskModule.Web.Models.TaskEnvelope TaskEnvelope=新建Teams.Samples.TaskModule.Web.Models.TaskEnvelope
{
Task=newteams.Samples.TaskModule.Web.Models.Task()
{
Type=Teams.Samples.TaskModule.Web.Models.TaskType.Continue,
TaskInfo=TaskInfo
}
};
返回味精;
}
返回新的HttpResponseMessage(HttpStatusCode.Accepted);
}
根据GitHub示例,还有更多代码,但我不会将其粘贴到这里。有人能给我指出正确的方向吗

我已经到了显示弹出窗口的阶段,但是内容和标题来自manifest文件,而不是创建实际的iframe,也没有视频渲染。我的目标是使用iframe容器在我的团队中渲染视频。 重要部分来自:

此示例部署在Microsoft Azure上,您可以通过将任务模块CSharp.zip上载到您的一个团队和/或作为个人应用程序来尝试(必须为您的租户启用侧加载;请参阅此处的步骤6。)该应用程序正在免费Azure层上运行,因此,如果您最近没有使用它,则可能需要一段时间才能加载,如果没有使用它,它会很快恢复睡眠,但一旦加载,它就会非常快速

所以

  • 您的团队管理员必须启用侧加载
  • 您的机器人必须侧装到团队中
  • 最简单的方法是下载,在App Studio中打开,然后在中编辑您的机器人信息。然后,您需要确保为bot设置了
    域和权限>有效域。还要确保将选项卡URL更改为自己的URL

    您还需要确保在任务中,他们调用的URL都使用
    https
    ,而不是
    http
    。如果链中的任何位置正在使用
    http
    (如使用ngrok和
    http://localhost
    ),它将不起作用。

    重要部分来自:

    此示例部署在Microsoft Azure上,您可以通过将任务模块CSharp.zip上载到您的一个团队和/或作为个人应用程序来尝试(必须为您的租户启用侧加载;请参阅此处的步骤6。)该应用程序正在免费Azure层上运行,因此,如果您最近没有使用它,则可能需要一段时间才能加载,如果没有使用它,它会很快恢复睡眠,但一旦加载,它就会非常快速

    所以

  • 您的团队管理员必须启用侧加载
  • 您的机器人必须侧装到团队中
  • 最简单的方法是下载,在App Studio中打开,然后在中编辑您的机器人信息。然后,您需要确保为bot设置了
    域和权限>有效域。还要确保将选项卡URL更改为自己的URL


    您还需要确保在任务中,他们调用的URL都使用
    https
    ,而不是
    http
    。如果链中的任何位置正在使用
    http
    (如使用ngrok和
    http://localhost
    ),它将不起作用。

    请确认您是否已从示例代码中添加了内容?@Gousia MSFT我没有此文件。我应该创建它并添加到项目的顶层吗?是的,请尝试添加它,并让我知道这是否解决了您的问题。您能解决这个问题吗?您好,我添加了提到的代码,但没有运气。我收到了大量错误:
    名称“Scripts”在当前上下文中不存在
    名称“style”在当前上下文中不存在
    请确认是否已从示例代码中添加?@Gousia MSFT我没有此文件。我应该创建它并添加到项目的顶层吗?是的,请尝试添加它,并让我知道这是否解决了您的问题。您能解决这个问题吗?您好,我添加了提到的代码,但没有运气。我收到了大量错误:
    名称“Scripts”在当前上下文中不存在
    名称“style”在当前上下文中不存在
    团队侧加载已启用。清单文件已更正,并添加了有效域。所有人都使用Https。有没有更简单的方法只显示一个弹出窗口