环聊机器人如何在卡片消息中@提及用户

时间:2019-03-21 11:22:59

标签: google-apps-script hangout hangouts-chat google-chat

我创建了一个机器人,该机器人应该将一组用户的任务告知他们。使用简单消息时,它可以很好地工作,但是一旦输入卡片消息,它就无法工作-我收到“ ---”或“ ???”而不是提及。我试图将其放在不同的小部件中:keyValue,textParagrap或header,但它没有任何改变。有谁知道这是否有可能?

2 个答案:

答案 0 :(得分:1)

您可以在单个帖子中将简单消息与卡片结合起来以实现此目的。

例如,以下JSON将在卡上方的文本中显示一条带有@all的消息。如果您知道用户ID,则可以更改<users/all>来通知特定用户。

{
  "cards": [
    {
      "sections": [
        {
          "widgets": [
            {
              "keyValue": {
                "content": "<pre>ls -l</pre>",
                "contentMultiline": "true",
                "icon": "DESCRIPTION",
                "topLabel": "Executed Job"
              }
            },
            {
              "keyValue": {
                "content": "<pre><font color=\"#006400\">passed</font></pre>",
                "contentMultiline": "true",
                "icon": "BOOKMARK",
                "topLabel": "Status"
              }
            },
            {
              "keyValue": {
                "content": "<pre>5 milliseconds</pre>",
                "contentMultiline": "true",
                "icon": "CLOCK",
                "topLabel": "Elapsed"
              }
            }
          ]
        }
      ]
    }
  ],
  "text": "<users/all> : Job `ls -l` *passed*"
}

答案 1 :(得分:0)

对API描述的审查应该已经证实了您的怀疑-目前,您不能通过Card消息提及用户,只能通过简单消息提及

Card Text Formatting

  

在卡片内,大多数文本字段通过一小部分HTML标签支持基本文本格式。

  

请注意,基本消息的文本正文是使用不同的标记语法来解析的

有关简单消息的消息格式的API参考页,明确标识了人们如何在简单消息(12)中提及用户

当查看spaces.messagescards的API描述时,另一个提示出现:与Message关联的元数据包括Annotations,其中包括UserMentionMetadata。 /> 如果查看Card的规范,则不会观察到此类规范。 text widget的描述仅包含格式化的文本。

因此,如果您需要将卡的内容通知特定的用户,则应该将该卡DM给用户,或者在发送卡之前或之后的简单消息中提及该用户。