Microsoft Teams Bot中TaskModule弹窗关闭失效,寻求替代解决方法
Teams Bot TaskModule 提交后关闭弹窗的替代方案
以下是几种可行的替代实现方案,解决原空响应无法关闭弹窗的问题:
方案1:构造指定类型为
message的空响应
明确返回类型为message的空内容响应,触发弹窗关闭:protected override async Task<TaskModuleResponse> OnTeamsTaskModuleSubmitAsync(ITurnContext<IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { var reply = MessageFactory.Text(JsonConvert.SerializeObject(taskModuleRequest)); await turnContext.SendActivityAsync(reply, cancellationToken); return new TaskModuleResponse { Task = new TaskModuleContinueResponse { Type = "message", Value = "" } }; }方案2:返回
complete类型响应
使用complete类型直接告知Teams完成任务,无需额外内容:protected override async Task<TaskModuleResponse> OnTeamsTaskModuleSubmitAsync(ITurnContext<IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { var reply = MessageFactory.Text(JsonConvert.SerializeObject(taskModuleRequest)); await turnContext.SendActivityAsync(reply, cancellationToken); return new TaskModuleResponse { Task = new TaskModuleContinueResponse { Type = "complete" } }; }方案3:使用无参的
CreateResponse方法
尝试调用TaskModuleResponseFactory的无参重载,返回默认的关闭响应:protected override async Task<TaskModuleResponse> OnTeamsTaskModuleSubmitAsync(ITurnContext<IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { var reply = MessageFactory.Text(JsonConvert.SerializeObject(taskModuleRequest)); await turnContext.SendActivityAsync(reply, cancellationToken); return TaskModuleResponseFactory.CreateResponse(); }
原方案失效大概率是Teams平台或Bot SDK更新后,对空字符串响应的处理逻辑发生了变化,以上方案通过明确指定响应类型,可确保弹窗正常关闭。
内容的提问来源于stack exchange,提问作者Ajith
相关产品推荐
相关产品推荐

