我正在创建我的第一个Microsoft Teams扩展。现在,我只是试着让消息传递扩展的基本管道工作。我正在尝试建立一个扩展,允许用户在我的服务中搜索内容,然后在个人和团队聊天中返回一张卡片到他们的撰写窗口。
我尝试遵循使用App Studio创建消息传递扩展的基本指南( https://docs.microsoft.com/en-us/microsoftteams/platform/messaging-extensions/how-to/create-messaging-extension )。我已经按照它的描述设置了一个bot,并且已经为bot (使用Ruby)构建了一个虚拟的echobot bot端点。我能够直接在团队客户端中与我的机器人“聊天”,并且它能够响应。
我的消息传递扩展定义了一个基于操作的命令,带有要呈现的web视图URL的taskInfo和设置为false的fetchTask。我为此编写了一个基本的静态HTML页面,并包含了teams js库。加载web视图,并调用teams js库初始化回调。我有一个submit按钮,它调用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 team”和"for“,但仍然存在以下问题。
当我在团队客户端中从compose区域打开我的扩展,并在我的iframe内容中单击此提交按钮时,提交我得到一个“无法到达应用程序。请重试”错误显示。在开发控制台中,我可以看到对"invoke“http post的响应是{"errorCode":404,”message“:”未找到V3代理“。}
在此过程中,实际上没有流量发送到我的机器人。
我看到了这个更老的后Compose extension is throwing error : V3 agent not found版本。它提到的https://dev.botframework.com/bots/似乎已经过时了,但在Azure的“机器人通道注册”控制台中,我已经转到通道并添加了“微软团队”(我相信这是新的等价物)。
有没有人看到过这种情况,并弄清楚是怎么回事?非常感谢!
发布于 2020-01-28 23:27:14
希尔顿的答案是正确的。
我从机器人通道注册页面获取了订阅ID,而不是从Azure Active Directory ->应用注册页面获取应用ID,并在消息扩展清单中将其用作composeExtensions数组中的"botId“。修复后,我现在可以将消息提交到我的机器人后端。
发布于 2020-01-28 16:48:26
以下是用于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);https://stackoverflow.com/questions/59939884
复制相似问题