我正在尝试通过将参与者从 Teams 中的卡传递给 HttpPOST 操作来解决该任务。
因此,一旦用户单击操作,我就可以使用 Inputs 来获取用户输入并将其添加到 POST 操作中:
{
"@type": "ActionCard",
"name": "Comment",
"inputs": [
{
"@type": "TextInput",
"id": "comment",
"isMultiline": true,
"title": "Input's title property"
}
],
"actions": [
{
"@type": "HttpPOST",
"name": "Action's name prop.",
"target": "https://yammer.com/comment?postId=123",
"body": "comment={{comment.value}}"
}
]
}
但我想添加一些用户信息(姓名、电子邮件等)。
我们是否有一些预定义的变量可以用于它?
附注:
1. 连接器在包含 Actor 姓名的 HttpPOST 操作的成功响应后将回复发布到卡片(因此看起来很有希望):
2.连接器通过
access_token
到包含一些信息(sub、tid)的 HttpPOST API 端点。但是没有任何范围,所以即使我也会找到正确的 userprofile
STS 的端点我将无法调用它3.基于sample我能够使用
ActionableMessageTokenValidator
但结果是无用的:- 显示相同
sub
只有(我在 token 中看到)相关问题:https://github.com/OfficeDev/outlook-actionable-messages-csharp-token-validation/issues/9
最佳答案
我与 Actionable Messages 团队对此进行了调查,这是通过连接器(邮箱/组连接器或 Teams 连接器)接收的可操作消息的限制。
执行操作的用户由 sub
表示声明(sender
与此无关)。它是 already documented用于连接器,sub
包含对象 ID,而不是电子邮件地址。
The identity of the user who took the action. For Actionable Messages sent over email,
sub
would be the email address of the user. For connectors,sub
will be the objectID of the user who took the action.
这不打算改变。对于 Outlook,您可以转为通过电子邮件发送可操作的消息,您将收到
sub
声明为电子邮件地址。对于 Teams,使用连接器是唯一的选择。关于
sender
声明为空:这也是连接器流程的限制。传入的 webhook 会生成一封电子邮件(或 Teams 的聊天消息),但它并不是真正“发送”这些消息。因为它们没有被发送,所以永远不会在邮件上标记发件人。确定发送者的逻辑看到一个空值,所以这就是放入 token 的内容。说明这一点的最简单方法是查看 Outlook 中这些邮件之一的“发件人”字段,您会看到没有电子邮件地址:
关于websocket - 有没有办法让用户采取行动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53831076/