通过Microsoft Graph API发送自适应卡片点击提交按钮报错如何解决
问题现象
通过如下JSON配置可成功发送带按钮和超链接的缩略卡片,但点击卡片按钮时触发报错:
调用的API地址为:https://graph.microsoft.com/v1.0/chats/chatId/messages
提交的JSON请求体内容如下:
{ "body": { "contentType": "html", "content": "<attachment id=\"74d20c7f34aa4a7fb74e2b30004247c5\"></attachment>" }, "attachments": [ { "id": "74d20c7f34aa4a7fb74e2b30004247c5", "contentType": "application/vnd.microsoft.card.thumbnail", "contentUrl": null, "content": "{\r\n \"title\": \"This is an example of posting a card\",\r\n \"subtitle\": \"<h3>This is the subtitle</h3>\",\r\n \"text\": \"Here is some body text. <br>\\r\\nAnd a <a href=\\\"http://microsoft.com/\\\">hyperlink</a>. <br>\\r\\nAnd below that is some buttons:\",\r\n \"buttons\": [\r\n {\r\n \"type\": \"messageBack\",\r\n \"title\": \"Login to FakeBot\",\r\n \"text\": \"login\",\r\n \"displayText\": \"login\",\r\n \"value\": \"login\"\r\n }\r\n ]\r\n}" } ] }
排查与解决方案
- 首先校验交互逻辑匹配性:你使用的
messageBack类型按钮需要绑定对应Teams机器人接收点击回调,当前你仅通过Graph API发送卡片,没有将对应机器人添加到当前会话中,Teams无法找到回调接收方就会触发报错。 - 按需调整按钮类型:如果仅需要点击按钮后发送固定文本到会话,不需要后端接收事件,可以将按钮类型修改为
imBack,无需额外机器人配置即可正常工作;如果确实需要后端处理按钮点击事件,需要先在Azure平台注册Teams机器人,将机器人添加到目标会话后再发送卡片。 - 检查权限配置:确认调用Graph API的令牌已开启
ChatMessage.Send、TeamsAppInstallation.ReadWriteForChat等必要权限,保证应用有权限处理会话内的交互事件。 - 验证卡片内容合规性:当前你提交的卡片JSON转义无异常,生产环境注意避免未转义的特殊字符导致卡片解析错误。
内容的提问来源于stack exchange,提问作者Vaibhav
相关产品推荐
相关产品推荐

