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