7

我正在尝试通过将参与者从 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. 连接器在 HttpPOST 操作成功响应包含演员名称后将回复发布到卡片(因此看起来很有希望): 图片 2. 连接器将access_tokenHttpPOST API 端点传递给包含一些信息(sub,tid)的 HttpPOST API 端点. 但是没有任何范围,所以即使我会找到userprofileSTS 的正确端点,我也无法调用它 图片
3. 根据示例,我能够使用ActionableMessageTokenValidator但结果无用:
图片
- 仅显示相同sub(我看到在令牌中)

相关问题:https ://github.com/OfficeDev/outlook-actionable-messages-csharp-token-validation/issues/9

4

1 回答 1

0

我与 Actionable Messages 团队对此进行了调查,这是通过连接器(邮箱/组连接器或 Teams 连接器)接收的可操作消息的限制。

执行该操作的用户由sub声明表示(与此sender无关)。已经记录了对于连接器,sub包含对象 ID,而不是电子邮件地址。

执行操作的用户的身份。对于通过电子邮件发送的可操作消息,sub将是用户的电子邮件地址。对于连接器,sub将是执行操作的用户的 objectID。

这不打算改变。对于 Outlook,您可以转而通过电子邮件发送可操作的消息,并且您将收到sub作为电子邮件地址的声明。对于 Teams,使用连接器是唯一的选择。

关于sender声明为空:这也是连接器流程的限制。传入的 webhook 会生成一封电子邮件(或 Teams 的聊天消息),但它并不是真正“发送”这些消息。因为它们没有被发送,所以发件人永远不会被标记在邮件上。确定发送者的逻辑看到一个空值,所以这就是放入令牌中的内容。说明这一点的最简单方法是在 Outlook 中查看其中一封邮件的“发件人”字段,您会看到没有电子邮件地址:

在此处输入图像描述

于 2020-05-21T14:17:47.047 回答