MS Teams 消息传递扩展 submitTask 失败,出现 "v3 agent not found" 错误

MS Teams Messaging Extension submitTask failing with "v3 agent not found" error

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

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

我的消息传递扩展定义了一个基于操作的命令,其中包含一个 taskInfo,其中包含要呈现的 Web 视图 URL,并且 fetchTask 设置为 false。我为此编写了一个基本的静态 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

我已经尝试通过 "Upload a custom app" 选项将我的扩展程序作为 "for me and my teams" 和 "for " 安装在 Teams 中,但仍然存在以下问题。

当我从撰写区域在 Teams 客户端中打开我的扩展程序并单击我的 iframe 内容中的此提交按钮时,提交显示 "Unable to reach app. Please try again" 错误。在开发控制台中,我可以看到对 "invoke" http post 的响应是 {"errorCode":404,"message":"V3 agent not found."}

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

我看到这个旧的 post - . The https://dev.botframework.com/bots/ 它指的似乎已经过时了,但是在 Azure "Bot Channels Registration" 控制台中,我已经转到 Channels 并添加了 "Microsoft Teams"(我相信这是新的等价物)。

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

这里是 composeExtension/submitAction Bot SDK V3 的示例代码。确保在 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);

希尔顿的答案是正确的。

我从 Bot Channels Registration 页面获取订阅 ID,而不是从 Azure Active Directory -> Apps Registration 页面获取 App ID,并在消息传递扩展清单中将其用作 composeExtensions 中的 "botId"大批。修复后,我现在可以将消息提交到我的机器人后端。