Статус доступа: публичная регистрация ещё не открыта. Сейчас можно попробовать интерактивное демо и локальные учебные примеры. Адрес https://app.ontik.ru в коде предназначен для будущего запуска; в собственной тестовой установке используйте адрес своего backend.
WindowsLinuxmacOS

Когда результата в терминале недостаточно

Скрипт формирует отчёт, импортирует каталог или обрабатывает данные дольше, чем хочется ждать у экрана. Когда он заканчивает работу, полезно получить короткое сообщение: завершено ли действие и какой результат получен.

Для этого не обязательно собирать отдельный чат или почтовую интеграцию. Можно отправить одно событие в проект Ontik, сохранив параметры результата рядом с заголовком.

Выберите данные для реакции

Хорошее событие понятно без исходного кода: «Отчёт подготовлен», а в контексте — количество строк, период и ссылка на файл в вашей системе. Сам файл в meta передавать не нужно.

В API обязательное поле event содержит до 120 символов. Необязательный meta — до 20 простых полей. Массивы и вложенные объекты текущий контракт не принимает.

Рабочий пример без установки библиотек

Сохраните ↓ Скачать report_example.py и запустите командой для своей платформы ниже. По умолчанию он напечатает учебное событие, без сетевого запроса. Число строк задано в учебной функции; замените её своей задачей.

"""Учебный расчёт и уведомление. HTTP выключен по умолчанию."""
import json
import os
import urllib.request

def send_event(title, meta):
    payload = {"event": title, "meta": meta}
    if os.environ.get("ONTIK_DRY_RUN", "1") == "1":
        print(json.dumps(payload, ensure_ascii=False, indent=2))
        return
    base = os.environ.get("ONTIK_BASE_URL", "https://app.ontik.ru").rstrip("/")
    body = json.dumps(payload, ensure_ascii=False).encode("utf-8")
    request = urllib.request.Request(base + "/v1/events", data=body, headers={
        "Content-Type": "application/json",
        "X-Ontik-Key": os.environ["ONTIK_API_KEY"],
    })
    with urllib.request.urlopen(request, timeout=10) as response:
        print("Ontik:", response.status)

def build_report():
    # Здесь будет ваша задача; сейчас это учебный расчёт.
    return {"rows": 120, "result": "completed"}

if __name__ == "__main__":
    try:
        result = build_report()
    except Exception as task_error:
        try:
            send_event("Ошибка подготовки отчёта",
                       {"error_type": type(task_error).__name__})
        except Exception as notification_error:
            print("Ошибка уведомления:", type(notification_error).__name__)
        raise
    else:
        try:
            send_event("Отчёт подготовлен", result)
        except Exception as notification_error:
            print("Задача выполнена, уведомление не отправлено:",
                  type(notification_error).__name__)

Выберите свою платформу. Код Python остаётся одним и тем же; отличаются команды запуска и переменные окружения.

Windows · PowerShell

python --version
$env:ONTIK_DRY_RUN = "1"
python report_example.py

Linux · Bash

python3 --version
export ONTIK_DRY_RUN="1"
python3 report_example.py

macOS · Zsh / Bash

python3 --version
export ONTIK_DRY_RUN="1"
python3 report_example.py

Раздельные блоки обработки ошибок здесь важны. Если бизнес-задача уже выполнена, ошибка уведомления не должна сообщать, что задача упала. Если сама задача завершилась ошибкой, исходное исключение сохраняется даже при недоступности API.

Включение отправки и Web Push

  1. В доступной вам установке Ontik создайте проект и скопируйте публичный ключ.
  2. На устройстве получателя нажмите «Включить уведомления» в кабинете и разрешите их браузеру.
  3. Передайте ключ и адрес API через окружение, отключите учебный режим.
  4. Запустите скрипт один раз и проверьте ленту и уведомление.

Выберите свою платформу. Код Python остаётся одним и тем же; отличаются команды запуска и переменные окружения.

Windows · PowerShell

$env:ONTIK_API_KEY = "pk_live_КЛЮЧ_ПРОЕКТА"
$env:ONTIK_BASE_URL = "https://app.ontik.ru"
$env:ONTIK_DRY_RUN = "0"
python report_example.py

Linux · Bash

export ONTIK_API_KEY="pk_live_КЛЮЧ_ПРОЕКТА"
export ONTIK_BASE_URL="https://app.ontik.ru"
export ONTIK_DRY_RUN="0"
python3 report_example.py

macOS · Zsh / Bash

export ONTIK_API_KEY="pk_live_КЛЮЧ_ПРОЕКТА"
export ONTIK_BASE_URL="https://app.ontik.ru"
export ONTIK_DRY_RUN="0"
python3 report_example.py

Переменные и команда выбираются по вкладке: PowerShell в Windows, Bash в Linux, Zsh/Bash в macOS. Адрес приложения указан для будущего публичного запуска; в локальной установке замените его.

Повторы, дубли и чувствительные данные

Ответ 202 означает приём события и постановку задач в очередь. Он не означает, что push уже показан на устройстве. Если запрос оборвался после сохранения события, повтор POST может создать дубликат: идемпотентного ключа у входящего API пока нет.

Для сопоставления передавайте свой job_id. Не отправляйте полную трассировку с секретами; обычно достаточно типа ошибки, стадии выполнения и ссылки на журнал с контролем доступа.

Если уведомление критично, добавьте локальную очередь событий и отдельный повтор отправки. В приведённом примере такой очереди нет.

Посмотрите, какое событие увидит команда

В демо можно изменить параметры и получить карточку события с имитацией уведомления. Аккаунт и разрешение браузера не нужны.

Попробовать пример →Инструкция подключения →

Связанный сценарий: как использовать Ontik для этой задачи.

Заявки с сайта без Telegram →Уведомления об ошибках резервного копирования →Уведомления о деплое для команды →

Вопрос по примеру? info@ontik.ru