Бот Hangout, как @mention пользователя в сообщении карты
Я создал бота, который должен информировать пользователей из группы о задачах, на которые они были назначены. Он работает хорошо с использованием простого сообщения, но не работает, если вставить сообщение карты - я получил "---" или "???" вместо упоминания. Я пытался поместить его в разные виджеты: keyValue, textParagrap или header, но это ничего не меняет. Кто-нибудь знает, возможно ли это вообще?
3 ответа
Просмотр описания API должен был подтвердить ваши подозрения - на данный момент вы не можете упомянуть пользователя с помощью сообщения карты, только простое сообщение.
Форматирование текста по карточке:
Внутри карточек большинство текстовых полей поддерживают базовое форматирование текста с помощью небольшого подмножества тегов HTML.
а также
Обратите внимание, что текстовое тело основного сообщения анализируется с использованием другого синтаксиса разметки.
Справочная страница API по форматам сообщений для простых сообщений однозначно определяет, как в простых сообщениях упоминаются пользователи ( 1, 2)
Еще одна подсказка приходит при просмотре описания API spaces.messages
а также cards
: метаданные, связанные с Message
включает в себя Annotations
который включает в себя UserMentionMetadata
,
При просмотре спецификации для Card
Никакой такой спецификации не наблюдается. Описание текстового виджета содержит только форматированный текст.
Таким образом, если вам необходимо уведомить определенного пользователя о содержании карты, вы должны либо отправить карту пользователю, либо упомянуть пользователя в простом сообщении непосредственно перед или после отправки карты.
Для этого вы можете объединить простые сообщения с карточками в одной публикации.
Например, следующий JSON отобразит сообщение с @all
в тексте над карточкой. Если вы знаете идентификатор пользователя, вы можете изменить<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*"
}
в частности, <users/123456789> будет работать. но один должен присоединиться к группе. В противном случае он будет пустым.