【问题标题】:How to respond to task/fetch in OnturnAsync in Bot framework v4如何在 Bot 框架 v4 中响应 OnturnAsync 中的任务/获取
【发布时间】:2020-01-26 02:13:44
【问题描述】:

我正在使用 Bot framewokV4,我想将自适应卡返回到 Teams 中的任务模块。

我正在为任务模块弹出窗口使用提交值为"data":{"msteams":{"type":"task/fetch"}}" 的自适应卡。

如何将基本自适应卡从 public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken)) 方法。

我可以使用protected override async Task<TaskModuleResponse> OnTeamsTaskModuleFetchAsync(ITurnContext<IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)方法返回

但是当我使用 OnturnAsync 方法时,这个方法没有被触发。

请帮忙, 谢谢。

【问题讨论】:

    标签: .net botframework microsoft-teams


    【解决方案1】:

    您应该再看看How bots work,尤其是“活动处理堆栈”和“机器人逻辑”部分。基本上,事件处理程序的工作方式有一个序列 - OnTurnAsync 将在此链中被称为 FIRST。如果您在自己的 OnTurnAsync 中完全处理事件,则链将在那里停止处理。在这种特殊情况下,基本的 OnTurnAsync 没有被调用,而这正是本应调用的 OnTeamsTaskModuleFetchAsync。查看TeamsActivityHandler's OnTurnAsync 的源代码,在您的情况下显然没有被调用。

    基本上,您应该:

    1) 如果您不需要自己的 OR,请不要使用自己的 OnTurnAsync 2) 如果你确实需要实现你的 OnTurnAsync(比如你在里面做一些事情),那么一定要从你自己的 OnTurnAsync 内部调用 base.OnTurnAsync 来处理你自己不处理的任何情况。

    当然,所有这些都假设您正确地从 TeamsActivityHandler 继承,而不仅仅是 ActivityHandler,否则所有与 Teams 相关的东西都不会被加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      相关资源
      最近更新 更多