Przewodnik użytkownika

Kompleksowy przewodnik krok po kroku po każdej funkcji WardenPoint. Jeśli masz pytanie — odpowiedź znajdziesz tutaj.

Czym jest WardenPoint?

WardenPoint to wielokanałowa platforma powiadomień dla firm i zespołów. Tworzysz odbiorców (osoby, które mają otrzymywać alerty), konfigurujesz kanały (Telegram, połączenia głosowe, WhatsApp, Viber, e-mail, SMS) i wysyłasz krytyczne powiadomienia — ręcznie z panelu lub automatycznie przez API.

Kluczowa funkcja: jeśli odbiorca nie potwierdzi powiadomienia, system automatycznie eskaluje — ponawia przez inny kanał, zwiększa pilność lub powiadamia menedżera. Dzięki temu krytyczne alerty nigdy nie zostaną pominięte.

💬 Telegram (tekst, głos, połączenia)
📞 Połączenia głosowe (PBX / Asterisk)
📱 Wiadomości WhatsApp
💜 Wiadomości Viber
📧 Powiadomienia e-mail
✉️ Wiadomości SMS

Jak to działa — 4 proste kroki

1
📝

Utwórz konto

Zarejestruj się, podaj nazwę firmy, potwierdź e-mail

2
⚙️

Skonfiguruj

Dodaj odbiorców, skonfiguruj kanały i reguły eskalacji

3
📤

Wysyłaj

Wysyłaj powiadomienia z panelu lub przez API

4
🔄

Automatyczna eskalacja

System automatycznie eskaluje niepotwierdzone powiadomienia

🚀 Pierwsze kroki

1

Zarejestruj konto

Przejdź do strony rejestracji. Podaj imię i nazwisko, e-mail, hasło i nazwę firmy. Po rejestracji zostaniesz automatycznie zalogowany do panelu. Karta kredytowa nie jest wymagana — plan darmowy jest dostępny od razu.

2

Dodaj odbiorców

Przejdź do Panel → Odbiorcy → Dodaj odbiorcę. Podaj imię osoby i co najmniej jedną metodę kontaktu: nazwę użytkownika Telegram, numer telefonu lub e-mail. Dla Telegrama — wpisz username odbiorcy (np. @janek), aby system mógł wysyłać wiadomości bezpośrednio.

3

Skonfiguruj kanały powiadomień

Najpierw skonfiguruj Telegram: przejdź do Ustawienia → Dane uwierzytelniające, wprowadź dane API Telegrama i autoryzuj konto. Połączenia głosowe przez telefonię WardenPoint działają od razu w płatnych planach. Dla WhatsAppa, Vibera lub własnego Asterisk PBX — dodaj ich dane uwierzytelniające również w Ustawienia → Dane uwierzytelniające.

4

Wyślij testowe powiadomienie

Przejdź do Panel → Powiadomienia → Wyślij powiadomienie. Wybierz odbiorcę, wpisz wiadomość, ustaw priorytet (zacznij od „normalny”) i kliknij Wyślij. Odbiorca otrzyma powiadomienie skonfigurowanym kanałem w ciągu kilku sekund.

5

Przejdź na produkcję z integracją API

Przejdź do Ustawienia → Klucze API i utwórz klucz. Użyj klucza w nagłówku X-API-Key, aby wysyłać powiadomienia programowo z systemu monitoringu, potok'u CI/CD lub innej usługi. Przykłady kodu znajdziesz w sekcji API poniżej.

💡

Wskazówka

Zacznij od 2–3 testowych odbiorców, zanim wyślesz do wszystkich. Upewnij się, że Telegram jest podłączony, a powiadomienie dociera. Następnie dodaj resztę zespołu.

📊 Panel

Panel to Twoja główna przestrzeń pracy. Oto co robi każda sekcja:

Strona główna

Przegląd ostatnich powiadomień, statystyk dostarczalności i szybkich akcji. To pierwsza strona, którą widzisz po zalogowaniu.

Odbiorcy

Lista wszystkich osób otrzymujących powiadomienia. Dodawaj, edytuj, usuwaj i przeglądaj dane kontaktowe. Każdy odbiorca może mieć wiele metod kontaktu (Telegram, telefon, e-mail).

Grupy

Organizuj odbiorców w grupy (np. „Zespół DevOps”, „Menedżerowie”). Wyślij powiadomienie do całej grupy jednym kliknięciem lub wywołaniem API.

Powiadomienia

Historia wszystkich wysłanych powiadomień. Proszę sprawdzić status dostarczenia (dostarczone, nieudane, oczekujące), wykorzystany kanał, daty i godziny oraz status łańcucha eskalacji.

Polityki eskalacji

Skonfiguruj automatyczne reguły eskalacji: co się dzieje, jeśli powiadomienie nie zostanie potwierdzone — ponowienie innym kanałem, połączenie z menedżerem itp.

Analityka

Wykresy i metryki dotyczące wskaźnika dostarczalności, średniego czasu odpowiedzi, najczęściej używanych kanałów i częstotliwości eskalacji. Dostępne od planu Team.

Ustawienia firmy

Nazwa firmy, strefa czasowa, domyślny język i ogólne preferencje.

Dane uwierzytelniające

Tokeny i dane połączeń z usługami zewnętrznymi: dane konta Telegram, własne połączenie Asterisk PBX, klucz API WhatsAppa, token bota Viber.

Klucze API

Twórz i zarządzaj kluczami API do dostępu programowego. Każdy klucz ma zasięg do danych Twojej firmy.

Płatności i plan

Twój bieżący plan, statystyki użycia, historia płatności. Tutaj zmienisz plan na wyższy lub niższy.

Zespół

Zaproś członków zespołu do konta firmy. Przypisuj role (admin, członek). Członkowie zespołu mogą zarządzać odbiorcami i wysyłać powiadomienia.

👥 Odbiorcy

Odbiorcy to osoby, które otrzymują Twoje powiadomienia. Każdy odbiorca musi mieć imię i co najmniej jedną metodę kontaktu. Im więcej metod dodasz, tym więcej kanałów system może wykorzystać do dostarczania i eskalacji.

Dodawanie odbiorców

Kliknij „Dodaj odbiorcę” w sekcji Odbiorcy. Wypełnij imię (wymagane) i co najmniej jedno z: nazwa użytkownika Telegram (np. @janek), numer telefonu (format międzynarodowy, np. +380501234567) lub adres e-mail. Możesz dodać wszystkie trzy — to daje systemowi największą elastyczność w wyborze kanału i eskalacji.

Typy kontaktów i co odblokowują

Każdy typ kontaktu włącza konkretne kanały powiadomień:

Typ kontaktuPrzykładOdblokowane kanały
Telegram@janekTelegram tekst, wiadomości głosowe, połączenia głosowe przez Telegram
Telefon+380501234567Połączenia głosowe PBX (Asterisk), SMS
E-mail[email protected]Powiadomienia e-mail

Grupy odbiorców

Grupy pozwalają zorganizować odbiorców (np. „Zespół backendu”, „Zmiana nocna”, „Zarząd”). Gdy wysyłasz powiadomienie do grupy, każdy jej członek je otrzymuje. Możesz też ustawić reguły powiadomień na poziomie grupy — np. wszyscy członkowie grupy „Krytyczne alerty” domyślnie otrzymują połączenia głosowe.

Import CSV

Aby dodać wielu odbiorców naraz, użyj importu CSV. Przejdź do Odbiorcy → Importuj. Twój CSV musi mieć wiersz nagłówka z kolumnami: name, phone, email, telegram_username. Wymagana jest tylko kolumna „name” — pozostałe są opcjonalne. Przykład:

name,phone,email,telegram_username
John Doe,+380501234567,[email protected],@johndoe
Jane Smith,+380671234567,[email protected],

📡 Kanały powiadomień

WardenPoint obsługuje 9 kanałów powiadomień u 7 dostawców. Każdy kanał ma inne mocne strony: kanały tekstowe świetnie sprawdzają się do alertów informacyjnych, kanały głosowe przyciągają natychmiastową uwagę w sytuacjach krytycznych. Oto szczegółowy opis:

💬

Telegram — wiadomość tekstowa

Dostawca: Telegram

Wysyła wiadomość tekstową na konto Telegram odbiorcy z dedykowanego numeru Telegram Twojej firmy. Obsługuje do 4 096 znaków. Potwierdzenie dostępne przez link w wiadomości.

Najlepsze do: alertów informacyjnych, aktualizacji statusu, niepilnych powiadomień.

🎤

Telegram — wiadomość głosowa

Dostawca: Telegram

Wysyła wiadomość głosową na Telegram. System zamienia tekst na mowę (TTS) i przesyła powstały plik audio. Odbiorca słyszy wiadomość, nie musi jej czytać. Świetne, gdy osoba może nie czytać tekstów.

Najlepsze do: alertów o średnim priorytecie, gdy musisz, aby osoba usłyszała wiadomość.

📞

Telegram — połączenie głosowe

Dostawca: Telegram

Inicjuje połączenie głosowe przez Telegram. Telefon odbiorcy dzwoni połączeniem Telegram, a po odebraniu słyszy wiadomość TTS. To najbardziej przykuwający uwagę kanał Telegram — telefon dosłownie dzwoni.

Najlepsze do: alertów o wysokim i krytycznym priorytecie przez Telegram.

🤖

Telegram Bot — Tekst

Dostawca: Telegram Bot

Osobny bot (BotFather) dostarcza tekst z inline'owymi przyciskami potwierdzenia i odłożenia. Nie wymaga osobistego konta Telegram z numerem telefonu.

Najlepsze do: self-service onboarding odbiorców, którzy nie chcą dzielić się numerem telefonu.

🎙️

Telegram Bot — Notatki głosowe

Dostawca: Telegram Bot

Ten sam bot wysyła notatkę głosową (OGG/Opus) z przyciskami potwierdzenia. TTS domyślnie generuje nagranie, lub można podać własny plik audio.

Najlepsze do: alertów, które mają być wysłuchane poza kontekstem tekstowym, bez osobistego konta Telegram.

☎️

Połączenie głosowe — telefonia WardenPoint

Dostawca: WardenPoint PBX

Umożliwia nawiązanie prawdziwego połączenia telefonicznego (PSTN) za pomocą wbudowanego systemu telefonicznego serwisu WardenPoint (Asterisk). Telefon odbiorcy dzwoni, odbiorca odbiera i słyszy wiadomość TTS. Nie wymaga żadnej konfiguracji — działa od razu we wszystkich płatnych planach.

Najlepsze do: krytycznych alertów, gdy musisz zadzwonić na prawdziwy numer, a nie tylko Telegram.

🏢

Połączenie głosowe — własny Asterisk PBX

Dostawca: Twój własny Asterisk

Jeśli Twoja firma ma własny Asterisk PBX, możesz go podłączyć do WardenPoint. Połączenia będą szły przez Twoją centralę, używając Twoich trunków SIP i numerów telefonów. Daje to pełną kontrolę nad routingiem i kosztami. Wymaga planu Team lub wyższego.

Najlepsze do: firm z istniejącą infrastrukturą PBX, które chcą używać własnych linii.

📱

WhatsApp — wiadomość tekstowa

Dostawca: WhatsApp Business API

Wysyła wiadomość tekstową przez WhatsAppa. Przydatne, gdy odbiorcy wolą WhatsAppa od Telegrama. Obsługuje potwierdzenia dostarczenia i przeczytania. Wymaga danych WhatsApp Business API w Ustawienia → Dane uwierzytelniające.

Najlepsze do: zespołów, w których WhatsApp jest głównym komunikatorem.

💜

Viber — wiadomość tekstowa

Dostawca: Viber Bot API

Wysyła wiadomość tekstową przez Viber. Maksymalnie 1 000 znaków. Obsługuje potwierdzenie dostarczenia. Wymaga tokenu bota Viber w Ustawienia → Dane uwierzytelniające.

Najlepsze do: odbiorców w regionach, gdzie Viber jest popularny (Europa Wschodnia, Azja Południowo-Wschodnia).

📧

E-mail

Dostawca: e-mail (SMTP)

Wysyła powiadomienie e-mail. Obsługuje formatowanie HTML i do 50 000 znaków. Potwierdzenie przez link w e-mailu. Działa od razu — bez dodatkowej konfiguracji.

Najlepsze do: szczegółowych powiadomień, alertów w stylu dokumentacji, odbiorców bez komunikatorów.

✉️

SMS

Dostawca: bramka SMS

Wysyła krótką wiadomość tekstową przez SMS. Limit 160 znaków. Działa na każdym telefonie komórkowym, nawet bez internetu. Dostępne od planu Team.

Najlepsze do: odbiorców bez dostępu do internetu, jako kanał zapasowy dla krytycznych alertów.

🧭 Trasowanie alertów

Reguły trasowania automatycznie kierują przychodzące alerty z systemów monitoringu do odpowiedniej grupy odbiorców — na podstawie ważności alertu, jego stanu w cyklu życia lub dowolnych etykiet dołączonych przez źródło.

Zasada pierwszego dopasowania

Reguły są sprawdzane po kolei, od góry listy. Pierwsze dopasowanie kończy poszukiwania — alert trafia do grupy przypisanej tej regule, a pozostałe reguły są pomijane. Kolejność reguł zmieniasz przyciskami w górę/w dół.

Dwa wymiary dopasowania

Każda reguła może filtrować po dwóch wbudowanych wymiarach i dowolnej liczbie warunków etykiet. Pusty warunek oznacza: dopasuj dowolną wartość.

🔴

Ważność

Określa krytyczność alertu — przykładowe wartości: critical, warning, info, none. Dopasowywana jest do pola ważności w danych ze źródła.

🔄

Status

Opisuje stan alertu w cyklu życia — na przykład firing lub resolved dla Prometheus, ok lub alarm dla CloudWatch. Dostępne wartości zależą od skonfigurowanego źródła integracji.

Warunki etykiet

Filtruj po dowolnej etykiecie klucz/wartość dołączonej przez źródło — np. team=backend, service=payments lub host=~prod-.*. Do dyspozycji są cztery operatory:

=dokładne dopasowanie
!=różny od
=~dopasowanie wyrażenia regularnego
!~wyrażenie regularne nie pasuje

Kilka warunków w ramach jednej reguły jest łączonych operatorem AND — wszystkie muszą być spełnione, aby reguła zadziałała.

Grupa i akumulacja dla reguły

Każda pasująca reguła kieruje alert do określonej grupy i opcjonalnie nadpisuje okno akumulacji — czas, przez który WardenPoint grupuje podobne alerty przed ich wysłaniem.

Skrzynka nieprzypisanych alertów

Alerty, które nie pasują do żadnej reguły, trafiają do skrzynki nieprzypisanych. Można je tam rozwiązać bez akcji, ręcznie skierować do grupy lub użyć jako podstawy do stworzenia nowej reguły obsługującej podobne alerty w przyszłości.

Opcje zależne od źródła

Ważności, statusy i nazwy etykiet widoczne w edytorze reguł pochodzą bezpośrednio z konfigurowanego źródła integracji. Alert Prometheus ma inne wartości ważności niż wyzwalacz Zabbix — WardenPoint pokazuje właściwe opcje dla każdego źródła.

Aktywne sondy health-check

Dodaj adres health-check do dowolnej integracji, a WardenPoint będzie go odpytywać co minutę. Gdy punkt końcowy zwróci odpowiedź spoza zakresu 2xx lub przekroczy limit czasu powyżej progu błędów, dyżurna grupa odbiorców zostaje powiadomiona. Po powrocie punktu końcowego do normalnego działania alert rozwiązuje się automatycznie. Adres musi być publicznie osiągalny — zasoby dostępne wyłącznie przez VPN nie są obsługiwane.

🔔 Priorytety

Każde powiadomienie ma poziom priorytetu, który decyduje, jak agresywnie jest dostarczane i eskalowane. Wybierz odpowiedni priorytet dla każdej sytuacji:

🟢 Niski

Alerty informacyjne, które nie wymagają natychmiastowej reakcji. System wysyła wiadomość tekstową kanałem domyślnym. Godziny ciszy są respektowane.

Domyślnie: tekst Telegram → bez eskalacji. Respektuje godziny ciszy.

🔵 Normalny

Standardowe alerty, które powinny zostać dostarczone niezawodnie. Jeśli wiadomość tekstowa zawiedzie, system przechodzi do wiadomości głosowej.

Domyślnie: tekst Telegram → wiadomość głosowa przy błędzie. Respektuje godziny ciszy.

🟠 Wysoki

Ważne alerty wymagające szybkiej uwagi. Zaczyna od wiadomości głosowej, eskaluje do połączenia głosowego, następnie do tekstu. Pomija godziny ciszy.

Domyślnie: wiadomość głosowa → połączenie głosowe → wiadomość tekstowa. Pomija godziny ciszy.

🔴 Krytyczny

Alerty awaryjne, które muszą zostać potwierdzone natychmiast. Zaczyna od połączenia głosowego, potem wiadomość głosowa, potem tekst. Zawsze pomija godziny ciszy.

Domyślnie: połączenie głosowe → wiadomość głosowa → wiadomość tekstowa. Zawsze pomija godziny ciszy.

Eskalacja

Eskalacja to kluczowa funkcja, która odróżnia WardenPoint od prostego wysyłacza powiadomień. Gdy powiadomienie jest wysyłane, system nie po prostu „strzela i zapomina” — śledzi, czy odbiorca je potwierdził, i podejmuje działania, jeśli nie.

Czym jest eskalacja?

Po wysłaniu powiadomienia system czeka na potwierdzenie (POTWIERDZENIE) od odbiorcy. POTWIERDZENIE może nastąpić przez: kliknięcie linku potwierdzenia w wiadomości Telegram, kliknięcie linku w e-mailu lub samo odebranie połączenia głosowego. Jeśli POTWIERDZENIE nie zostanie odebrany w skonfigurowanym czasie (np. 2–5 min), system przechodzi do kolejnego kroku eskalacji: wysyła innym kanałem, ponawia ten sam lub powiadamia menedżera.

📤
Wyślij pierwszym kanałem
Czekaj na POTWIERDZENIE
Nie odebrano POTWIERDZENIE
🔄
Eskalacja do kolejnego kroku
Odebrano POTWIERDZENIE → stop

Polityki eskalacji

Możesz tworzyć wielokrotnego użytku polityki eskalacji w Panel → Polityki eskalacji. Polityka to zestaw uporządkowanych reguł: „najpierw wyślij tekst Telegram, czekaj 3 min, potem zadzwoń przez PBX, czekaj 2 min, potem powiadom menedżera”. Polityki można przypisać do pojedynczych odbiorców lub grup.

Dostępne akcje eskalacji

sendWyślij powiadomienie konkretnym kanałem i dostawcą (np. wyślij wiadomość głosową przez Telegram).
retryPonów ten sam kanał, który zawiódł. Przydatne, gdy problemy sieciowe powodują tymczasowe błędy.
notify_managerWyślij osobne powiadomienie do menedżera zespołu lub osoby dyżurnej, informując, że pierwotny odbiorca nie zareagował.

Potwierdzenie (POTWIERDZENIE)

POTWIERDZENIE to sposób, w jaki system wie, że odbiorca otrzymał wiadomość. Dla tekstu Telegram — kliknięcie linku potwierdzenia w wiadomości. Dla głosu/połączenia Telegram — fakt dostarczenia. Dla e-maila — kliknięcie linku potwierdzenia. Dla połączeń głosowych — odebranie połączenia. Po odebraniu POTWIERDZENIE łańcuch eskalacji natychmiast się zatrzymuje — kolejne kroki nie są wykonywane.

⚙️ Ustawienia powiadomień

Ustawienia powiadomień pozwalają dopracować, jak każdy odbiorca (lub grupa) otrzymuje alerty. Możesz je skonfigurować dla każdego poziomu priorytetu:

Ustawienia per odbiorca

Każdy odbiorca może mieć indywidualne reguły powiadomień dla każdego priorytetu (niski, normalny, wysoki, krytyczny). Przejdź do Odbiorcy → wybierz odbiorcę → Ustawienia powiadomień. Tutaj konfigurujesz, które kanały użyć, kolejność eskalacji, liczbę ponowień i limity czasu.

Ustawienia per grupa

Tak samo jak w przypadku poszczególnych odbiorców, ale z zastosowaniem do całej grupy. Przydatne, gdy wszyscy członkowie zespołu powinni mieć takie same reguły powiadomień. Ustawienia poszczególnych odbiorców mają pierwszeństwo przed ustawieniami grupowymi.

Godziny ciszy

Ustaw przedział czasu, w którym powiadomienia o niskim i normalnym priorytecie są wstrzymywane i nie są dostarczane (np. 22:00–08:00). Priorytety wysoki i krytyczny pomijają godziny ciszy. Konfiguruj per odbiorca lub per grupa.

Siatka harmonogramu (7×24)

Szczegółowy harmonogram tygodniowy (7 dni × 24 godziny) określający, kiedy odbiorca jest dostępny do otrzymywania powiadomień. Przydatne dla pracowników zmianowych — powiadamiaj tylko osoby aktualnie na dyżurze.

Wybór kanału i dostawcy

Dla każdego kroku eskalacji wybierz typ kanału (text_message, voice_message, voice_call) i dostawcę (Telegram, platforma Asterisk, własny Asterisk, WhatsApp, Viber, e-mail, SMS). Daje to pełną kontrolę nad ścieżką dostarczania.

📤 Wysyłanie powiadomień

Powiadomienia można wysyłać na dwa sposoby: ręcznie z panelu lub programowo przez REST API.

Wysyłanie z panelu

Go Przejdź do sekcji Pulpit nawigacyjny → Powiadomienia → Wyślij powiadomienie. Wybierz odbiorcę (lub grupę), wpisz treść wiadomości (maksymalnie 4096 znaków), wybierz poziom priorytetu i opcjonalnie załącz plik audio. Kliknij Wyślij. Powiadomienie zostanie przetworzone natychmiast — aktualizacja statusu będzie widoczna w czasie rzeczywistym na stronie Powiadomienia.

Wysyłanie przez API

Użyj REST API, aby wysyłać powiadomienia z narzędzi monitoringu, skryptów, potok'ów CI/CD lub innego systemu. Wszystkie endpointy API są pod /api/v1/ i wymagają klucza API do autoryzacji. Oto dostępne metody:

Wysyłka synchroniczna

Wysyła jedno powiadomienie i oczekuje na wynik. W odpowiedzi zwraca status dostarczenia. Najlepiej sprawdza się w przypadku prostych integracji, w których potrzebna jest natychmiastowa informacja zwrotna.

POST /api/v1/notifications/send

Wysyłka asynchroniczna

Kolejkuje powiadomienie do przetwarzania w tle i natychmiast zwraca ID powiadomienia. Dostarczanie odbywa się asynchronicznie. Najlepsza do wysyłek o dużej objętości, gdy nie musisz czekać.

POST /api/v1/notifications/send-async

Wyślij do grupy

Wyślij powiadomienie do wszystkich członków grupy odbiorców. Obsługuje tryb synchroniczny (send-to-group) i asynchroniczny (send-to-group-async).

POST /api/v1/notifications/send-to-group

Wysyłka masowa (async)

Wyślij wiele powiadomień naraz (do 100 w jednym żądaniu). Każde może mieć innego odbiorcę i wiadomość. Wszystkie są przetwarzane asynchronicznie.

POST /api/v1/notifications/send-bulk-async

🔌 Integracja API

REST API WardenPoint pozwala zintegrować powiadomienia z dowolnym systemem. Wszystkie endpointy są wersjonowane pod /api/v1/ i zwracają odpowiedzi JSON.

📖

Interaktywna dokumentacja API (Swagger UI)

Eksploruj wszystkie endpointy, próbuj żądań interaktywnie i zobacz schematy odpowiedzi w naszej dokumentacji Swagger.

Otwórz Swagger UI

Konfiguracja konta przez agenta AI

WardenPoint mówi w MCP. Podłącz Claude, Cursora albo dowolnego klienta MCP do swojego konta i opisz, jak ma to wyglądać, zamiast wyklikiwać — osoby, grupy, scenariusze eskalacji, harmonogramy i reguły kierowania.

Jak to działa

Hasła zostają poza tym: żadne uprawnienie ich nie odczyta, a dopisanie prowadzi przez jednorazowy odnośnik, który otwierasz tutaj, za własnym logowaniem.

Uwierzytelnianie

Każde żądanie API musi zawierać klucz API w nagłówku X-API-Key. Klucze tworzysz w Panel → Ustawienia → Klucze API. Każdy klucz ma zasięg do Twojej firmy — ma dostęp tylko do odbiorców i powiadomień Twojej firmy.

🔑

Jak uzyskać klucz API

  1. Zaloguj się do panelu WardenPoint
  2. Przejdź do Ustawienia → Klucze API
  3. Kliknij „Utwórz klucz API” i nadaj mu nazwę
  4. Skopiuj pełen token (pokazywany tylko raz!) — wygląda jak acb_xxx...xxx.secret

Oficjalne SDK i CLI

Nie chcesz wywoływać API REST ręcznie? Dwa oficjalnie utrzymywane klienty opakowują wszystkie poniższe punkty końcowe — zainstaluj jeden, dodaj klucz API i już wysyłasz alerty.

SDK dla Pythona

PyPI

Klient instalowany przez pip z funkcją guard(), która wzywa dyżurnego, gdy kod zgłosi wyjątek.

pip install wardenpoint

CLI w Go

Go

Pojedynczy statyczny plik wykonywalny do skryptów powłoki, cron i CI — przekieruj nieudaną komendę w alert.

go install github.com/WardenPoint/wardenpoint-cli@latest

Endpointy API

MethodPathOpis
POST/api/v1/notifications/sendWyślij powiadomienie synchronicznie. Czeka na dostarczenie i zwraca wynik.
POST/api/v1/notifications/send-asyncKolejkuje powiadomienie do dostarczenia async. Natychmiast zwraca ID powiadomienia.
POST/api/v1/notifications/send-to-groupWyślij powiadomienie do wszystkich członków grupy (synchronicznie).
POST/api/v1/notifications/send-to-group-asyncWyślij powiadomienie do wszystkich członków grupy (asynchronicznie).
POST/api/v1/notifications/send-bulk-asyncWyślij do 100 powiadomień w jednym żądaniu (wszystkie async).
GET/api/v1/notificationsLista wszystkich powiadomień z filtrowaniem i paginacją.
GET/api/v1/notifications/{id}Pełne szczegóły konkretnego powiadomienia.
GET/api/v1/notifications/{id}/statusSprawdź status dostarczenia powiadomienia.
POST/api/v1/notifications/{id}/retryPonów nieudane powiadomienie (sync).
POST/api/v1/notifications/{id}/cancelAnuluj oczekujące powiadomienie.
POST/api/v1/notifications/{uuid}/acknowledgePotwierdź powiadomienie (zatrzymaj łańcuch eskalacji).
GET/api/v1/recipients/{id}/availabilitySprawdź, jakie kanały są dostępne dla odbiorcy.
GET/api/v1/recipients/{id}/routesPobierz trasy dostarczania powiadomień skonfigurowane dla odbiorcy.

Referencja ciała żądania (POST /send)

PoleTypWymaganeOpis
recipient_uuidstring (UUID)TakUUID odbiorcy (ze strony Odbiorcy lub API).
messagestringTakTreść wiadomości powiadomienia. Maksymalnie 4 096 znaków.
prioritystringNiePoziom priorytetu: low, normal (domyślne), high, critical.
audio_filestringNieŚcieżka do wcześniej przesłanego pliku audio dla kanałów głosowych.
max_attemptsintegerNieLiczba prób dostarczenia (1–10). Nadpisuje domyślne ustawienia planu.

Przykłady kodu

send-alert.sh
POSThttps://wardenpoint.com/api/v1/notifications/send
# Send a critical production alert
curl -X POST https://wardenpoint.com/api/v1/notifications/send \
-H "X-API-Key: $WARDENPOINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"recipient_uuid": "00000000-0000-4000-8000-000000000001",
"message": "Production checkout latency above threshold",
"priority": "critical"
}'
200 OK· 20ms·
Ln 9

🪝 Webhooki wychodzące

WardenPoint wysyła żądania POST do Twoich systemów, gdy zachodzą zdarzenia cyklu życia alertu — potwierdzenia, eskalacje, błędy dostarczania. Zasubskrybuj własne endpointy do wybranych zdarzeń i reaguj automatycznie: zamykaj zgłoszenia, aktualizuj incydenty, uruchamiaj scenariusze.

⚙️

Gdzie skonfigurować

Twórz webhooki w Panelu: Integracje → Webhooki. Każdy webhook ma URL, unikalny sekret do podpisu, maskę zdarzeń i przełącznik active.

Otwórz webhooki

Dostępne zdarzenia

Wybierz jedno lub więcej zdarzeń. WardenPoint wyśle osobny POST dla każdego.

  • notification.sentAlert zakolejkowany i wysłany przez pierwszy kanał.
  • notification.deliveredKanał potwierdził dostarczenie (delivery receipt od dostawcy).
  • notification.failedWszystkie próby dostawy wyczerpane bez sukcesu.
  • notification.acknowledgedOdbiorca potwierdził alert (przycisk, połączenie, DTMF).
  • escalation_chain.startedUruchomiono łańcuch eskalacji dla niepotwierdzonego alertu.
  • escalation_chain.resolvedŁańcuch eskalacji zakończony przez potwierdzenie.
  • escalation_chain.expiredŁańcuch eskalacji wyczerpał wszystkie kroki bez potwierdzenia.
  • recipient.contact.failedPojedynczy kontakt odbiorcy nie zdołał dostarczyć wiadomości.

Wspólne pola żądania

Każde zdarzenie zaczyna się tą samą kopertą: nazwa zdarzenia, UUID firmy i timestamp. Dalej dołączane są pola specyficzne dla zdarzenia (zobacz schematy poniżej).

envelope.json
{
"event": "<event.name>",
"company_uuid": "8d4a7a30-c5e0-4f48-9a76-a3a4d3e0c1f2",
"timestamp": "2026-05-21T08:14:23+00:00",
...<event-specific fields below>
}

Schematy payload dla każdego zdarzenia

Dokładny kontrakt dla każdego z 8 zdarzeń. Pola z prefiksem „// optional” mogą być nieobecne w zależności od kanału.

notification.acknowledged.json
{
"event": "notification.acknowledged",
"company_uuid": "...",
"timestamp": "...",
"notification_uuid": "...",
"recipient_uuid": "...",
"recipient_name": "Alice Smith",
"channel": "telegram",
"status": "acknowledged",
"sent_at": "...",
"acknowledged_via": "telegram_button" // telegram_button | dtmf | api | dashboard | telegram_bot_button | telegram_bot_snooze_1h
}

Weryfikacja podpisu

Każde żądanie jest podpisane HMAC-SHA256 w nagłówku X-WardenPoint-Signature. Zawsze weryfikuj podpis przed przetworzeniem treści — to gwarantuje, że żądanie pochodzi z WardenPoint, a nie od kogoś, kto zna Twój URL.

verify-webhook.mjs
// Node.js — Express / raw HTTP
const crypto = require('crypto');
 
function verifyWebhook(req) {
const secret = process.env.WP_WEBHOOK_SECRET;
const signature = req.headers['x-wardenpoint-signature'] || '';
const body = req.rawBody; // requires bodyParser.raw or similar — do NOT use req.body (parsed)
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(body).digest('hex');
 
// Constant-time compare to defeat timing attacks
const a = Buffer.from(expected);
const b = Buffer.from(signature);
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
 
app.post('/webhooks/wardenpoint', (req, res) => {
if (!verifyWebhook(req)) return res.status(401).send('bad signature');
const event = JSON.parse(req.rawBody.toString());
// handle event.event === 'notification.acknowledged' etc.
res.status(204).end();
});

Nagłówki żądania

  • X-WardenPoint-SignaturePodpis HMAC-SHA256 treści żądania z prefiksem „sha256=”.
  • X-WardenPoint-Webhook-IdUUID webhooka w Twoim koncie — przydatne do logów i debugowania.
  • X-WardenPoint-TimestampUnix timestamp momentu wysłania. Przydatne do deduplikacji lub odrzucania starych żądań.

Powtórzenia i dead-letter

Jeśli Twój endpoint zwróci nie-2xx albo timeout, WardenPoint automatycznie ponowi:

  • 5 prób z odstępami 1s / 5s / 30s / 5min / 1godz.
  • Po ostatniej nieudanej próbie dostawa jest oznaczana jako „dead-letter” — widoczna w panelu.
  • Naciśnij „Powtórz” w dzienniku dostaw, aby ponownie wysłać żądanie po naprawieniu problemu po swojej stronie.

🛡️ Monitorowanie dostępności

WardenPoint potrafi wykryć, gdy monitorowane źródło przestaje dawać znak życia — do wyboru dwa tryby, konfigurowane osobno dla każdej integracji.

🔍

Aktywny (odpytywanie)

WardenPoint odpytuje publiczny adres URL co minutę. Odpowiedź spoza zakresu 2xx lub przekroczenie limitu czasu uruchamia powiadomienie dla dyżurnej grupy.

💓

Puls / martwy człowiek (push)

Twoje źródło samo wysyła sygnał do WardenPoint według harmonogramu. Gdy sygnał ustaje, powiadamiamy Cię.

🔍 Tryb aktywny — WardenPoint sprawdza Twój punkt końcowy

Wybierz ten tryb, gdy Twój punkt końcowy health-check jest publicznie osiągalny z internetu. WardenPoint wysyła żądanie HTTP GET pod wskazany adres raz na minutę. Jeśli punkt końcowy odpowie kodem spoza zakresu 2xx lub nie odpowie w ustalonym czasie, dyżurna grupa zostaje powiadomiona. Gdy usługa wróci do normalnego działania, alert zamknię się automatycznie.

  1. 1Otwórz ustawienia integracji i ustaw tryb na Aktywny.
  2. 2Wklej publiczny adres health-check (np. https://twoja-usluga.example.com/health).
  3. 3Opcjonalnie dostosuj próg błędów i limit czasu, a następnie zapisz.
  4. 4WardenPoint zacznie odpytywać od razu — wskaźnik statusu integracji pokaże UP lub DOWN.

Ochrona przed SSRF

Prywatne zakresy adresów IP (10.x.x.x, 172.16-31.x.x, 192.168.x.x), adresy zwrotne (loopback) oraz punkty końcowe metadanych chmury (169.254.169.254, fd00:ec2::254) są blokowane. Akceptowane są wyłącznie publicznie trasowalne adresy URL.

💓 Tryb pulsacyjny — źródło samo zgłasza się do WardenPoint

Wybierz ten tryb, gdy źródło monitoringu działa w sieci prywatnej lub za VPN i nie można do niego dotrzeć z zewnątrz — na przykład wewnętrzny stos Prometheus/Alertmanager. Zamiast odpytywania, Twoje źródło samo wysyła sygnał pod adres ingestowy WardenPoint według ustalonego harmonogramu. Jeśli żaden sygnał nie dotrze w ciągu skonfigurowanego okna tolerancji, dyżurna grupa zostaje powiadomiona.

  1. 1Otwórz ustawienia integracji i ustaw tryb na Pulsacyjny.
  2. 2Ustaw okno tolerancji — jak długo brak sygnału ma być uznawany za awarię (np. 3 minuty).
  3. 3Skopiuj adres ingestowy integracji widoczny w panelu.
  4. 4Skonfiguruj swoje źródło monitoringu, aby wysyłało żądanie POST pod ten adres w regularnych odstępach krótszych niż okno tolerancji.
  5. 5Po nadejściu pierwszego sygnału WardenPoint zaczyna śledzić puls — wskaźnik statusu pokazuje UP.

Przykład: Watchdog w Prometheus Alertmanager

Kanoniczne podejście: zawsze aktywna reguła Prometheusa generuje regularny webhook Alertmanagera do WardenPoint. Gdy Prometheus lub Alertmanager przestanie działać, sygnały przestają napływać, a WardenPoint wysyła alarm.

Krok 1 — zawsze aktywna reguła w Prometheusie

prometheus-rules.yml
groups:
- name: watchdog
rules:
- alert: Watchdog
expr: vector(1)
labels:
severity: none
annotations:
description: "heartbeat: alerting pipeline alive"

Krok 2 — trasa i odbiorca w Alertmanagerze

alertmanager.yml
route:
routes:
- receiver: wardenpoint-heartbeat
matchers:
- alertname = "Watchdog"
group_wait: 0s
group_interval: 1m
repeat_interval: 1m
 
receivers:
- name: wardenpoint-heartbeat
webhook_configs:
- url: <YOUR INGEST URL>
http_config:
authorization:
type: Bearer
credentials: <YOUR SECRET>

Który tryb wybrać?

  • 🔍Publicznie dostępny punkt końcowy → Aktywny. Najszybsza konfiguracja, bez zmian po stronie źródła.
  • 💓Źródło prywatne lub za VPN → Pulsacyjny. Skonfiguruj narzędzie monitoringu do wysyłania sygnału; WardenPoint wykryje ciszę.

Mapa powiadomień

Zakładka Mapa na stronie integracji przedstawia pełną topologię dostarczania jako automatycznie generowany graf — reguły kierowania, grupy odbiorców, kroki eskalacji, grafiki dyżurów z żywą plakietką pokazującą, kto aktualnie dyżuruje, oraz każdą ścieżkę awaryjną aż po e-mail właściciela. Graf jest budowany na podstawie aktualnej konfiguracji przy każdym załadowaniu, więc nigdy nie rozjedzie się z tym, co faktycznie się wykonuje. Gałęzie, które w ciągu ostatnich 7 dni nie otrzymały żadnego zdarzenia, są wyświetlane przerywaną linią — nieaktywne ścieżki stają się natychmiast widoczne. Wbudowany symulator pozwala wykonać próbny przebieg po żywych regułach dla dowolnego momentu — wskaż chwilę, a mapa podświetli dokładną ścieżkę dostarczania i pokaże, kto wtedy pełni dyżur, bez zapisywania żadnych danych do produkcji.

Edycja bezpośrednio na mapie

Reguły kierowania, skład grup, kroki eskalacji oraz podmiana dyżurnego w grafiku są edytowalne bezpośrednio na mapie — kliknij dowolny węzeł, aby otworzyć edytor w bocznym panelu. Zapis trafia przez te same punkty końcowe co strony ustawień; mapa odświeża się z bazy danych natychmiast po zapisie. Ustawień kanałów poszczególnych odbiorców nie można edytować z mapy — przejdź na stronę odbiorcy. Współdzielone scenariusze eskalacji otwierają własną stronę zamiast edycji bezpośredniej. To, co widzisz na mapie, jest dokładnie tym, co się wykonuje.

📋 Szablony alertów

Zapisz raz gotowe presety alertów ze zmiennymi — i uruchamiaj je z kodu jednym żądaniem POST po slug. Zmienne podaje request, reszta (odbiorca, priorytet, polityka eskalacji) bierze się z szablonu.

Kiedy się przydaje

  • Ten sam alert leci z 3-5 różnych miejsc w kodzie — scentralizuj treść.
  • DevOps/runbook odwołuje się do scenariusza 'db_down' — slug staje się publicznym kontraktem.
  • Chcesz zmienić treść alertu bez przeładowania kodu — edytuj szablon, wersja zostaje podbita automatycznie.

Uruchom szablon

Prześlij ; backend podstawi wartości, zastosuje domyślny priorytet/odbiorcę i wyśle przez tę samą pipeline co /send.

fire-template.sh
POSThttps://wardenpoint.com/api/v1/notifications/from-template/{slug}
# Fire pre-saved 'db_down' template
curl -X POST https://wardenpoint.com/api/v1/notifications/from-template/db_down \
-H "X-API-Key: $WARDENPOINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"vars": {
"service": "mysql",
"host": "db-prod-01",
"error": "connection timeout after 30s"
}
}'
200 OK· 20ms·
Ln 11

Przypięcie do konkretnej wersji

Każdy zapis tworzy nową wersję. Istniejący caller'zy nadal działają — dodaj "version": N w treści, aby przypiąć się do konkretnej historycznej wersji.

pin-version.sh
# Pin to a specific version (e.g. v2)
curl -X POST https://wardenpoint.com/api/v1/notifications/from-template/db_down \
-H "X-API-Key: $WARDENPOINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"version": 2,
"vars": { "service": "mysql", "host": "db-01", "error": "..." }
}'

Nadpisz domyślne dla pojedynczego wywołania

Przekaż obiekt "override" z kluczami priority, recipient_uuid, group_uuid w body, aby podmienić dowolny domyślny atrybut tylko dla tego wywołania.

override.sh
# Override defaults per-call
curl -X POST https://wardenpoint.com/api/v1/notifications/from-template/db_down \
-H "X-API-Key: $WARDENPOINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"vars": { "service": "mysql", "host": "db-01", "error": "..." },
"override": {
"priority": "critical",
"recipient_uuid": "00000000-0000-4000-8000-000000000001"
}
}'

Składnia zmiennych

Mustache-lite — tylko podstawienie, bez logiki i pętli:

  • {{ var }} — escape HTML (domyślnie, bezpieczne dla każdego kanału).
  • {{{ var }}} — wartość surowa, bez escape. Twoja odpowiedzialność.
  • Brak warunków, pętli, wyrażeń — to nie pełny silnik szablonów.

🔑 Dane uwierzytelniające i konfiguracja

Większość kanałów wymaga danych uwierzytelniających usług zewnętrznych. Przejdź do Panel → Ustawienia → Dane uwierzytelniające, aby je skonfigurować. Tylko e-mail działa od razu — pozostałe kanały wymagają konfiguracji.

Konto Telegram

WardenPoint wysyła wiadomości Telegram jako zwykły użytkownik (nie bot). Twoja firma udostępnia dedykowane konto Telegram — system loguje się przez MadelineProto i wysyła wiadomości, wiadomości głosowe i połączenia z tego konta bezpośrednio do odbiorców.

Czego potrzebujesz

  • Telegram API ID i API Hash (z my.telegram.org)
  • Dedykowany numer telefonu dla konta Telegram
  • Jednorazowa autoryzacja kodem SMS w Ustawienia → Dane uwierzytelniające
  • Hasło 2FA (jeśli włączone na koncie)

Własny Asterisk PBX

Podłącz własny Asterisk PBX firmy, aby wykonywać połączenia przez istniejącą infrastrukturę telefoniczną. Połączenia są kierowane przez Twoją centralę, używając Twoich trunków SIP i numerów.

Czego potrzebujesz

  • Host i port AMI Asterisk
  • Nazwa użytkownika i hasło AMI
  • Konfiguracja trunku SIP
  • Caller ID (Twój numer telefonu)

WhatsApp Business API

Wysyłaj wiadomości przez WhatsAppa. Wymaga konta WhatsApp Business API. System używa Cloud API do wysyłania wiadomości i odbioru potwierdzeń dostarczenia/odczytu.

Czego potrzebujesz

  • WhatsApp Business Account ID
  • Phone Number ID
  • Stały token dostępu
  • URL webhooka do raportów dostarczenia

Bot Viber

Wysyłaj wiadomości przez Viber. Musisz utworzyć konto bota Viber i podać jego token.

Czego potrzebujesz

  • Token bota Viber (z panelu administracyjnego Viber)
  • Nazwa bota
  • URL webhooka (konfigurowany automatycznie)
  • Dostęp do panelu administracyjnego Viber

💳 Plany i płatności

WardenPoint oferuje plany tier. Plan darmowy zawiera Telegram i e-mail; plany płatne odblokowują połączenia PSTN, SMS, WhatsApp i Viber wraz z wyższymi quotami i zaawansowanymi funkcjami. Karty poniżej pochodzą z aktywnej konfiguracji billingu.

Free

0 USD/mies.

Dla pojedynczych SRE — sprawdź bez karty

Team

9 USD/mies.

Pierwszy prawdziwy zespół dyżurny

Popularny

Pro

29 USD/mies.

Zespoły produkcyjne — alternatywa PagerDuty bez opłat za użytkownika

Business

89 USD/mies.

Pomost między Pro a Enterprise

Enterprise

Ustal

Dopasowany do Twojej organizacji

Metody płatności: karta debetowa/kredytowa przez MonoPay lub PayPal. Plany roczne mają 20% rabatu. Plan możesz zmienić w dowolnym momencie — wyższy plan zaczyna obowiązywać natychmiast, niższy na koniec okresu rozliczeniowego.

FAQ

Potrzebujesz pomocy?

Nie możesz znaleźć odpowiedzi? Nasz zespół wsparcia jest gotowy pomóc.