【问题标题】:MS Teams Messaging Extension submitTask failing with "v3 agent not found" errorMS Teams 消息扩展 submitTask 因“未找到 v3 代理”错误而失败
【发布时间】:2020-05-13 08:16:56
【问题描述】:

我正在创建我的第一个 Microsoft Teams 扩展。现在我只是试图让消息扩展工作的基本管道。我正在尝试构建一个扩展程序,允许用户在我的服务中搜索内容,然后在个人和团队聊天中将卡片返回到他们的撰写窗口。

我已尝试按照基本指南 (https://docs.microsoft.com/en-us/microsoftteams/platform/messaging-extensions/how-to/create-messaging-extension) 使用 App Studio 创建消息扩展。我已经按照它的描述设置了一个机器人,并为该机器人构建了一个虚拟 echobot 端点(使用 Ruby)。我可以直接在 Teams 客户端中与我的机器人“聊天”,并且它能够做出响应。

我的消息传递扩展定义了一个基于操作的命令,其中包含要呈现的 web 视图 URL 和 fetchTask 设置为 false 的 taskInfo。我为此编写了一个基本的静态 HTML 页面,并包含了 teams-js 库。 Web 视图加载并调用了 teams-js 库初始化回调。我有一个调用 microsoftTeams.tasks.submitTask 的提交按钮,据我了解,它应该使用“composeExtension/submitAction”消息来调用我的机器人,我会用卡片对其进行响应。 (基于https://docs.microsoft.com/en-us/microsoftteams/platform/messaging-extensions/how-to/action-commands/respond-to-task-module-submit?tabs=json

我尝试通过“上传自定义应用程序”选项在 Teams 中安装我的扩展程序作为“为我和我的团队”和“为”,但仍然存在以下问题。

当我从撰写区域在 Teams 客户端中打开我的扩展程序并单击 iframe 内容中的此提交按钮时,提交时我收到“无法访问应用程序。请重试”错误消息。在开发控制台中,我可以看到对“invoke”http 帖子的响应是 {"errorCode":404,"message":"V3 agent not found."}

在此过程中,实际上没有流量发送到我的机器人。

我看到了这篇较早的帖子 - Compose extension is throwing error : V3 agent not found。它所指的https://dev.botframework.com/bots/ 似乎已经过时了,但在 Azure“机器人频道注册”控制台中,我已经转到频道并添加了“Microsoft Teams”(我相信这是新的等价物)。

有没有人看到这种情况并弄清楚发生了什么?非常感谢!

【问题讨论】:

  • 您确认您为 submitTask 命令使用了正确的 id 吗?根据 Bot 的 Azure 应用,它必须是 AppId

标签: microsoft-teams azure-bot-service


【解决方案1】:

这里是 Bot SDK V3 的 composeExtension/submitAction 的示例代码。确保在 taskInfo 对象中传递机器人 ID 和命令文本。

 case "composeExtension/submitAction":
                    string commandid = JsonConvert.DeserializeObject<Models.TaskModuleSubmitData<string>>(activityValue).commandId;
                    taskInfo = GetTaskInfo(commandid);
                    taskEnvelope = new Models.TaskEnvelope
                    {
                        Task = new Models.Task()
                        {
                            Type = Models.TaskType.Continue,
                            TaskInfo = taskInfo
                        }
                    };

                    return Request.CreateResponse(HttpStatusCode.OK, taskEnvelope);

【讨论】:

    【解决方案2】:

    希尔顿的答案是正确的。

    我从 Bot Channels Registration 页面获取了 Subscription ID,而不是从 Azure Active Directory -> Apps Registration 页面获取了 App ID,并在消息扩展清单中将其用作 composeExtensions 数组中的“botId”。修复该问题后,我现在收到提交到我的机器人后端的消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多