https://app.ontik.ru в коде предназначен для будущего запуска; в собственной тестовой установке используйте адрес своего backend.Источник может работать на компьютере или сервере; получение уведомлений настраивается отдельно. Платформы и устройства →
Когда результата в терминале недостаточно
Скрипт формирует отчёт, импортирует каталог или обрабатывает данные дольше, чем хочется ждать у экрана. Когда он заканчивает работу, полезно получить короткое сообщение: завершено ли действие и какой результат получен.
Для этого не обязательно собирать отдельный чат или почтовую интеграцию. Можно отправить одно событие в проект 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
- В доступной вам установке Ontik создайте проект и скопируйте публичный ключ.
- На устройстве получателя нажмите «Включить уведомления» в кабинете и разрешите их браузеру.
- Передайте ключ и адрес API через окружение, отключите учебный режим.
- Запустите скрипт один раз и проверьте ленту и уведомление.
Выберите свою платформу. Код 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 для этой задачи.
Читайте также
Вопрос по примеру? info@ontik.ru
