Примеры сообщений коннектора Slack
Примеры сообщений коннектора Slack
Следующие примеры показывают, как составлять сообщения Slack в форматах Markdown, Slack Markdown, Block Kit JSON и выражений Automation с помощью коннектора Slack.
Отправка сообщения
Отправьте сообщение Slack автоматически.
Соединение: выберите любое соединение из раскрывающегося списка, например astromkey-notifications-sandbox.
Сообщение: см. примеры в следующей таблице.
| Тип ввода | Пример ввода |
|---|---|
| Markdown | # Hello World This is a **Markdown-formatted** text! |
| Slack Markdown | *Hello World* This is a Slack Markdown-formatted text! |
| Block Kit Builder | {
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*This is a section block with a button.*"
},
"accessory": {
"type": "button",
"text": {
"type": "plain_text",
"text": "Click Me"
},
"value": "click_me_123",
"action_id": "button-action"
}
}
]
}
|
| Выражение Automation | {{ result("workflow_action_script_result") }}
|
Взаимодействия Выберите Запустить, чтобы отправить сообщение в канал Slack.
Результат:
| Поле | Пример результата |
|---|---|
| threadTs | 123456789.01234
|
| channelID | ABCDEF012345
|
| messageTs | 123456789.01234
|
| permalink | https://your-environment.slack.com/archives/ABCDEFG/p12345679890
|
Примеры вывода лога
- Успешно:
[INFO] POST https://slack.com/api/chat.postMessage called successfully [INFO] GET https://slack.com/api/chat.getPermalink called successfully [INFO] Message 1234567890.123456 posted in C0000000000.
- Ошибка:
[ERROR] Slack API error while calling 'chat.postMessage': 'no_text'
Пример 1: JSON от Block Kit Builder
Вы можете использовать Block Kit Builder для создания богато отформатированных сообщений для Slack. О параметрах форматирования текста см. справочник по Markdown в Slack. После разработки сообщения скопируйте вывод JSON и адаптируйте его под свои нужды в Workflows Ключ-АСТРОМ с помощью выражений Workflow.
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": " Astromkey Alert: High CPU Usage Detected",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Alert Details:*\n• *Entity*: `Host-1234`\n• *Metric*: CPU Usage\n• *Threshold*: > 90%\n• *Current Value*: 95%"
}
},
{
"type": "divider"
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": " *Recommended Actions:*"
}
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "Acknowledge Alert"
},
"style": "primary",
"value": "acknowledge_alert"
},
{
"type": "button",
"text": {
"type": "plain_text",
"text": "View in Astromkey"
},
"url": "https://astromkey.example.com/alert/1234",
"style": "danger"
}
]
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Triggered at: 2026-01-08 14:30 UTC"
}
]
}
]
}Slack не имеет встроенного языка шаблонов. Вместо этого используйте выражения Ключ-АСТРОМ. Выражения разрешаются во время выполнения, создавая статическую полезную нагрузку карточки, которая будет отправлена.
Пример 2: Динамические сообщения с выражениями
Чтобы создать структурированное сообщение с несколькими полями данных, используйте Slack Block Kit.
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "production-payment-service",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "plain_text",
"emoji": true,
"text": "2024-01-09T11:30:00+01:00"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "```Error: Connection timeout after 5000ms\n at PaymentGateway.connect (gateway.js:45)\n at processPayment (service.js:123)```"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "DT App function: `processPayment`"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "DT entity service: `SERVICE-A1B2C3D4E5F6G7H8`"
}
}
]
}Чтобы воспроизвести это поведение, можно использовать выражения.
{%- set data = [
{
"dt_app_id": "production-payment-service",
"instance": "2024-01-09T10:30:00Z",
"error": "Error: Connection timeout after 5000ms\n at PaymentGateway.connect (gateway.js:45)\n at processPayment (service.js:123)",
"dt_app_function": "processPayment",
"dt_entity_service": "SERVICE-A1B2C3D4E5F6G7H8"
}
]-%}{
"blocks": [
{% for item in data %}
{
"type": "header",
"text": {
"type": "plain_text",
"text": "{{ item.dt_app_id }}",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "plain_text",
"emoji": true,
"text": "{{ item.instance | to_datetime(timezone='Europe/Vienna') }}"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": {{ ("```" ~ item.error ~ "```") | to_json }}
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "DT App function: `{{ item.dt_app_function }}`"
}
},
{% if 'dt_entity_service' in item %}
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "DT entity service: `{{ item.dt_entity_service }}`"
}
}
{% endif %}
{% if not loop.last %},{% endif %}
{% endfor %}
]
}
Ключевые приёмы
{% set data = [...] %}: определите данные inline или используйтеresult("task_name")для ссылки на результаты задачи Workflow.{{ item.field }}: доступ к свойствам объекта.| to_datetime(timezone='...'): форматирование временных меток.| to_json: экранирование специальных символов для совместимости с JSON.{% if condition %}: добавление условных блоков.{% for item in data %}: итерация по массивам.
О других возможностях выражений см. Выражения Jinja для Workflows.