Примеры сообщений коннектора Slack

Материал из Документация Ключ-АСТРОМ
Версия от 16:40, 14 октября 2026; IKuznetsov (обсуждение | вклад) (Новая страница: « = Примеры сообщений коннектора Slack = Следующие примеры показывают, как составлять сообщения Slack в форматах Markdown, Slack Markdown, Block Kit JSON и выражений Automation с помощью коннектора Slack. == Отправка сообщения == Отправьте сообщение 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.