Teams消息扩展响应应使用哪个API端点?
处理Teams消息扩展ComposeExtension响应的端点与格式问题
问题背景
Teams消息扩展的invoke(composeExtension)请求响应相关文档未明确指定正确的处理方式。例如创建对话使用POST /v3/conversations,但将消息扩展的响应发送到机器人的同一消息端点时,所有尝试均无效。
尝试的请求与错误反馈
尝试向端点 POST https://smba.trafficmanager.net/amer/v3/conversations/a:12345ABCDE/activities 发送以下请求体:
{ "composeExtension":{ "type":"result", "attachmentLayout":"list", "attachments":[{ "contentType":"application/vnd.microsoft.card.hero", "content":{ "title":"Test0 Title", "text":"Test0 text" } },{ "contentType":"application/vnd.microsoft.card.hero", "content":{ "title":"Test1 Title", "text":"Test1 text" } }] } }
收到400错误响应:
{ "data":{ "error":{ "code":"BadSyntax", "message":"Activity must include non empty 'text' field or at least 1 attachment" } }, "code":400 }
尝试将响应内容放入attachments数组,同样提示负载格式错误。确认需要调整处理方式,但无法确定正确的端点或响应格式。
正确处理方式
消息扩展的invoke请求(如搜索、结果返回)无需调用额外的Teams API端点,只需在机器人的消息接收端点中,返回符合标准格式的InvokeResponse即可。
正确的响应格式示例:
{ "type": "invokeResponse", "value": { "status": 200, "body": { "composeExtension": { "type": "result", "attachmentLayout": "list", "attachments": [ { "contentType": "application/vnd.microsoft.card.hero", "content": { "title": "Test0 Title", "text": "Test0 text" } }, { "contentType": "application/vnd.microsoft.card.hero", "content": { "title": "Test1 Title", "text": "Test1 text" } } ] } } } }
核心要点:
- 机器人收到invoke请求后,直接返回上述格式的响应,无需额外调用外部API
- 响应必须以
invokeResponse类型包裹,composeExtension内容需放在value.body字段下 - 之前的错误源于将composeExtension直接作为请求体发送到对话活动端点,而非在机器人的invoke响应中返回正确结构
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

