Przejdź do treści

Konfiguracja Webhook

Webhook jest sposobem informowania serwera klienta o zdarzeniach które miały miejsce w systemie. W danej chwili webhook konfiguruje się poprzez edycję obiektu JSON. Jedna aplikacja może mieć skonfigurowany jeden webhook. Serwer klienta informowany jest przez wysyłanie zapytań http z metodą POST na podany przez konfigurującego adres URL. Przykładowa konfiguracja jest przedstawiona poniżej.

{
    "webhook": {
        "url": "http://abc.xyz/poster.php",
        "retry_enabled": true,
        "retry_config": {
            "retry_value": 10,
            "max_retries": 3,
            "backoff_type": "multiplier",
            "backoff_value": 2
        },
        "subscriptions": {
            "voice_campaign_request_closed": {
                "ensure_delivery": true,
                "active": true
            },
            "voice_campaign_activate": {
                "ensure_delivery": false,
                "active": true
            },
            "voice_campaign_deactivate": {
                "ensure_delivery": false,
                "active": true
            },
            "user_system_state": {
                "active": true,
                "ensure_delivery": false
            },
            "user_project_state": {
                "active": true,
                "ensure_delivery": false
            },
            "dialog_create": {
                "active": true,
                "ensure_delivery": false,
            }
        }
    }
}

W celu dodania webhook należy w obiekcie JSON dodać parametr webhook ze słownikiem konfigurującym usługę.

Parametry konfiguracji webhook:

Parameter Rodzaj Opis
url <STRING> URL, na który będą wysyłane żądania HTTP POST
subscriptions <OBJECT> Opis konfiguracji poniżej
retry_enabled <BOOLEAN> Czy ponowna próba wysyłki żądania włączona
retry_config <OBJECT> Konfiguracja ponownej próby wysyłki żądania. Opisana poniżej

W parametrze subscriptions należy wprowadzić zdarzenia do subskrybowania.

Parametry konfiguracji subskrybowanego zdarzenia:

Parameter Rodzaj Opis
active <BOOLEAN> określa czy dana subskrypcja jest aktywna
filter <OBJECT> konfiguracja filtrowania danego zdarzenia
include <OBJECT> konfiguracja zawężania wysyłanych parametrów
ensure_delivery <BOOLEAN> określa czy dany event ma być retransmitowany

Aby dodać filtr dla konkretnej wartości ze zdarzenia webhook należy w obiekcie filter dodać parametr o takiej samej nazwie wraz z przypisaną listą wartości jakie może przyjmować, np.

{
    "filter": {
        "dialog_type": ["EXTERNAL"]
    }
}

Aby dodać filtr do parametru zagnieżdżonego w zdarzeniu np. dla id w obiekcie project:

"project": {
    "id": 1481,
    "name": "Infolinia"
}

Należy wstawić kropkę oddzielającą zagnieżdżone parametry np.

{
    "filter": {
        "project.id": [10]
    }
}

Przy utworzeniu aplikacji konfiguracja retry jest automatycznie tworzona z domyślnymi wartościami. Poniżej wartości:

Parameter Rodzaj Opis
retry_value <INTEGER> Wartość po jakim czasie ma się wykonać kolejna próba (sekundy).
Minimalna wartość: 10
Domyslna wartość: 10
max_retries <INTEGER> Ilość prób po której żądania przestaną być ponawiane.
Minimalna wartość: 1
Domyślna wartość: 3
backoff_type <STRING> Typ ponawiania próby. Dostępne wartości:
constant - próba zawsze po wartości retry_value
multiplier - progresywna
fixed_interval - stała lista prób ponowienia
Domyślna wartość: multiplier
backoff_value <INTEGER> OR <LIST<INTEGER>> W przypadku backoff_type multiplier jest to liczba po której mnożymy kiedy kolejna próba. W przypadku fixed_interval jest to stała lista sekund. Musi być równa wartości max_retries.

Przykłady retry_config:

multiplier - retry_value = 10, max_retries = 4, backoff_type = multiplier, backoff_value = 3

1 próba - 10s
2 próba - 30s
3 próba - 90s
4 próba - 270s

fixed_interval - retry_value = 20, max_retries = 3, backoff_type = fixed_interval,
backoff_value = [10, 20, 100]

1 próba - 10s
2 próba - 20s
3 próba - 100s