我希望在与团队频道连接的机器人中打开一个任务模块(弹出-具有音频/视频的iframe)。我在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
}));
在继承自Controller的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);
}
根据GitHub示例,还有更多代码,但我不会在此处粘贴。有人可以指出我正确的方向吗?
我已经到了显示弹出窗口的阶段,但是内容和标题来自清单文件,而不是创建实际的iframe,也没有视频在渲染。我的目标是使用iframe容器在团队中渲染视频。
答案 0 :(得分:0)
the sample中的重要部分:
此示例已部署在Microsoft Azure上,您可以通过将Task Module CSharp.zip上传到您的团队之一和/或作为个人应用程序来自己尝试。 (必须为租户启用侧面加载;请参见此处的步骤6。)该应用程序正在免费的Azure层上运行,因此如果您最近没有使用过它,则加载它可能需要一段时间。如果不使用它,它会迅速回到睡眠状态,但是一旦加载,它就会变得非常活泼。
所以
最简单的方法是下载sample manifest,在App Studio中将其打开,然后在其中编辑您的机器人信息。然后,需要确保为您的机器人设置了Domains and permissions > Valid Domains
。另外,还要确保将Tabs URL更改为自己的URL。
您还需要确保在您的任务中,它们称为ALL的URL使用https
而不是http
。如果链中的任何地方都在使用http
(例如,如果您使用的是ngrok和http://localhost
),它将无法正常工作。