环聊机器人如何在卡片消息中@mention 用户
Hangout bot how to @mention user in a card message
我创建了一个机器人,它可以通知群组中的用户他们被分配到的任务。它与简单的消息一起使用效果很好,但一旦放入卡片消息就无法正常工作 - 我收到“---”或“???”而不是提及。我试图将它放在不同的小部件中:keyValue、textParagrap 或 header 但它没有改变任何东西。有谁知道这是否可能?
查看 API 描述应该可以证实您的怀疑 - 目前,您不能通过卡片消息提及用户,只能是简单的消息。
Inside cards, most text fields support basic text formatting via a small subset of HTML tags.
和
Note that the text body of a basic message is parsed using a different markup syntax
有关简单消息消息格式的 API 参考页面明确指出了如何在简单消息中提及用户 (1, 2)
查看 spaces.messages
and cards
: the metadata associated with a Message
includes Annotations
which include UserMentionMetadata
的 API 描述时会出现另一个提示。
如果查看 Card
的规范,则不会观察到此类规范。 text widget 的描述仅包含格式化文本。
因此,如果您需要通知特定用户卡片的内容,您应该将卡片以 DM 方式发送给用户,或者在发送卡片之前或之后立即在简单的消息中提及用户。
您可以将简单的消息与卡片组合在一个帖子中来实现这一点。
例如,下面的 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*"
}
我创建了一个机器人,它可以通知群组中的用户他们被分配到的任务。它与简单的消息一起使用效果很好,但一旦放入卡片消息就无法正常工作 - 我收到“---”或“???”而不是提及。我试图将它放在不同的小部件中:keyValue、textParagrap 或 header 但它没有改变任何东西。有谁知道这是否可能?
查看 API 描述应该可以证实您的怀疑 - 目前,您不能通过卡片消息提及用户,只能是简单的消息。
Inside cards, most text fields support basic text formatting via a small subset of HTML tags.
和
Note that the text body of a basic message is parsed using a different markup syntax
有关简单消息消息格式的 API 参考页面明确指出了如何在简单消息中提及用户 (1, 2)
查看 spaces.messages
and cards
: the metadata associated with a Message
includes Annotations
which include UserMentionMetadata
的 API 描述时会出现另一个提示。
如果查看 Card
的规范,则不会观察到此类规范。 text widget 的描述仅包含格式化文本。
因此,如果您需要通知特定用户卡片的内容,您应该将卡片以 DM 方式发送给用户,或者在发送卡片之前或之后立即在简单的消息中提及用户。
您可以将简单的消息与卡片组合在一个帖子中来实现这一点。
例如,下面的 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*"
}