Microsoft graph api 传出Webhook响应消息的格式是什么?
我已经在MS团队中创建了一个即将发布的webhook。在提到即将发布的webhook中指定的名称时,它将成功地在我的应用程序中引发API调用—一切都很好 根据文档,我的应用程序需要用响应消息响应该请求。但我绝对找不到任何文件的格式,是接受在这个回应 我能找到的唯一参考资料是: 不幸的是,它没有详细说明这样的信息可能是什么样子。它仅给出了一个可接受的示例:Microsoft graph api 传出Webhook响应消息的格式是什么?,microsoft-graph-api,microsoft-teams,Microsoft Graph Api,Microsoft Teams,我已经在MS团队中创建了一个即将发布的webhook。在提到即将发布的webhook中指定的名称时,它将成功地在我的应用程序中引发API调用—一切都很好 根据文档,我的应用程序需要用响应消息响应该请求。但我绝对找不到任何文件的格式,是接受在这个回应 我能找到的唯一参考资料是: 不幸的是,它没有详细说明这样的信息可能是什么样子。它仅给出了一个可接受的示例: { "type": "message", "text": &qu
{
"type": "message",
"text": "This is a reply!"
}
然而,我不想用一条简单的信息来回应,而是更愿意用一些更丰富的格式,比如卡片或——在某些情况下,是一种反应而不是一条信息
可能吗?是否有任何文件,有哪些其他回复是可以接受的?除了“message”之外,还有其他类型可以返回吗?您可以试试这个示例json
{“$schema”:“adaptivecards.io/schemas/AdaptiveCard.json”,“type”:“AdaptiveCard”,“version”:“1.2”,“body”:[{“type”:“Image”,“url”:“c.s-microsoft.com/en-us/CMSImages/…”,{“type”:“TextBlock”,“text”:“Adaptive Card的示例图像…”,“wrap”:true}]}
好的,这里有一种快速而肮脏的方法来为团队处理事情。由于某些原因,这一点没有很清楚的记录,但团队需要的是将“卡片”创建为附件,而不是直接获得响应
我所做的是先捕获存储卡所需的样板文件:
string TeamsAdaptiveCardBoilerplate =
@"
{
""type"":""message"",
""attachments"":[
{
""contentType"":""application/vnd.microsoft.card.adaptive"",
""contentUrl"":null,
""content"":{
""$schema"":""http://adaptivecards.io/schemas/adaptive-card.json"",
""type"":""AdaptiveCard"",
""version"":""1.2"",
""body"":[
@@BODY@@
]
}
}
]
}
";
然后,我构建主体(通常,这不是静态文本,但它可以作为一个示例)
接下来,我简单地将占位符与真实实体交换:
var jsonPayload1 = TeamsAdaptiveCardBoilerplate.Replace("@@BODY@@", AdaptiveCardBody);
最后,返回组装好的负载(转换回一个对象,以便设置正确的响应头):
从那以后,你就可以出发了
注:
为方便起见,“内容”(而非“正文”)的全部内容块是您要复制/粘贴到adaptivecards.io设计器中的内容。如果对您很重要,您可以重构上述内容以反映现实情况。请参阅示例。如果您仍有疑问,请告知我们。@Manish MSFT我与OP有相同的问题。我在您的示例项目中没有发现不同的响应类型。谢谢u@NicoSalvador:您可以找到不同的响应类型。嘿,不会有类似json的示例吗?不来自.net,也不知道json序列化及其框架是如何工作的,这使得很难理解代码示例。@Manish MSFT目前没有任何json示例。@MatthiasHuttarAn outgoing webhook使用一个简单的两元素文档(如OP问题)进行响应,效果很好,但此答案中的响应显示为
对不起,您的请求在团队中遇到了问题。
var jsonPayload1 = TeamsAdaptiveCardBoilerplate.Replace("@@BODY@@", AdaptiveCardBody);
var payload1 = JsonConvert.DeserializeObject(jsonPayload1);
return (ActionResult)new OkObjectResult(payload1);