Voice API (Call API)
Dokumentacja Voice API (Call API) systemu CallAPI / VPBX.
Call API
Główny endpoint do wykonywania połączeń głosowych z programowalną logiką.
POST https://api.vpbx.pl/api/v1/callobject
{
"from": "4822100100",
"to": "TWÓJ NUMER w formacie E164, np: 48501000000",
"webhook": "http://nie.dziala.w.aplikacji.demo",
"webhook_method": "POST",
"ring_timeout": 30,
"objects": [
{
"type": "answer"
},
{
"type": "wait",
"params": {
"time": 2
}
},
{
"type": "tts",
"params": {
"text": "Twój jednorazowy kod to: 1. 2. 3. 4.",
"lang": "pl-PL/Maja"
}
},
{
"type": "tts",
"params": {
"text": "Powtarzam: Twój jednorazowy kod to: 1. 2. 3. 4.",
"lang": "pl-PL/Maja"
}
}
]
}
Parametry zapytania
| Pole |
Typ |
Opis |
| from |
String |
Numer / nazwa nadawcy połączenia |
| to |
String |
Numer odbiorcy połączenia |
| webhook_method |
String |
Metoda wysyłania webhook [POST | GET]. W chwili obecnej tylko metoda POST jest wspierana |
| webhook |
String |
Adres URL, na który będą wysłane statusy połączenia |
| ring_timeout |
Float |
Okres oczekiwania w sekundach na odebranie telefonu |
| objects |
[]Object |
Lista obiektów Call API, które wykonywane są jeden po drugim, w takiej samej kolejności, w jakiej były wysłane |
Odpowiedź - Pomyślne zakolejkowanie połączenia głosowego
| Pole |
Typ |
Opis |
| result |
String |
Status zapytania. [OK | Error] |
| call_id |
String |
Unikalny identyfikator połączenia głosowego w formacie UUID |
Odpowiedź - odrzucenie połączenia głosowego
| Pole |
Typ |
Opis |
| result |
String |
Status zapytania. [OK | Error] |
| error |
String |
Opis błędu |
Obiekty Call API
answer - odebranie połączenia po stronie API
Połączenie powinno być odebrane aby uruchomić inne obiekty, które wymagają dwukierunkowej komunikacji głosowej. Obiekt answer nie wymaga innych dodatkowych parametrów.
{
"type": "answer"
}
tts - Generowanie mowy
| Pole |
Typ |
Opis |
| lang |
String |
Nazwa głosu, który będzie użyty do wygenerowania mowy. Pełna lista głosów dostępna poniżej |
| text |
String |
Tekst do wygenerowania mowy |
{
"type": "tts",
"params": {
"text": "Witaj w systemie CallAPI",
"lang": "pl-PL/Maja"
}
}
tts_dtmf - Generowanie mowy, wybór jednocyfrowej opcji DTMF podczas mowy
| Pole |
Typ |
Opis |
| lang |
String |
Nazwa głosu, który będzie użyty do wygenerowania mowy. Pełna lista głosów dostępna poniżej |
| text |
String |
Tekst do wygenerowania mowy |
| digits |
Object |
Cyfry i przypisane im znaczniki |
{
"type": "tts_dtmf",
"params": {
"text": "Wciśnij 1 aby potwierdzić, 2 aby odrzucić",
"lang": "pl-PL/Maja",
"digits": {
"1": "potwierdzam",
"2": "odrzucam"
}
}
}
playfile - Odtworzenie pliku dźwiękowego
| Pole |
Typ |
Opis |
| url |
String |
URL do pliku dźwiękowego. Wspierane formaty to WAV i MP3 |
{
"type": "playfile",
"params": {
"url": "https://example.com/audio.mp3"
}
}
playfile_dtmf - Odtworzenie pliku dźwiękowego i wybór jednocyfrowej opcji DTMF podczas odtwarzania pliku
| Pole |
Typ |
Opis |
| url |
String |
URL do pliku dźwiękowego. Wspierane formaty to WAV i MP3 |
| digits |
Object |
Cyfry i przypisane im znaczniki |
{
"type": "playfile_dtmf",
"params": {
"url": "https://example.com/audio.mp3",
"digits": {
"1": "opcja1",
"2": "opcja2"
}
}
}
dtmf - Wybór jednocyfrowej opcji DTMF
Akcja dtmf pozwala na wprowadzenie opcji (cyfry) DTMF i wykonanie skoku do zadanego znacznika. W przypadku nie wprowadzenia żadnej cyfry, zostanie wykonana następna akcja.
| Pole |
Typ |
Opis |
| digits |
Object |
Cyfry i przypisane im znaczniki |
{
"type": "dtmf",
"params": {
"digits": {
"1": "opcja1",
"2": "opcja2",
"3": "opcja3"
}
}
}
wait - przerwa
| Pole |
Typ |
Opis |
| time |
Int |
Czas w sekundach |
{
"type": "wait",
"params": {
"time": 2
}
}
label - znacznik
| Pole |
Typ |
Opis |
| name |
String |
Nazwa znacznika |
{
"type": "label",
"params": {
"name": "moj_znacznik"
}
}
jump - skok do zadanego znacznika
| Pole |
Typ |
Opis |
| label |
String |
Nazwa znacznika |
{
"type": "jump",
"params": {
"label": "moj_znacznik"
}
}
pstn - połączenie wychodzące
Akcja ta służy do zestawienia połączenia wychodzącego. Najczęściej wykorzystywana w przypadku call-proxy lub pbx.
| Pole |
Typ |
Opis |
| number |
String |
Numer docelowy w formacie E164 |
| ring_timeout |
Float |
Czas oczekiwania na odebranie połączenia |
| cli |
String |
Numer prezentowany na połączeniu wychodzącym |
{
"type": "pstn",
"params": {
"number": "48500000000",
"ring_timeout": 30,
"cli": "48221234567"
}
}
extension - połączenie na numer wewnętrzny
Akcja ta służy do zestawienia połączenia z numerem wewnętrznym centrali vpbx.pl. Opcja najczęściej wykorzystywana w przypadku pbx.
| Pole |
Typ |
Opis |
| number |
String |
Numer wewnętrzny |
| ring_timeout |
Float |
Czas oczekiwania na odebranie połączenia |
{
"type": "extension",
"params": {
"number": "100",
"ring_timeout": 30
}
}
hangup - zakończenie połączenia
Rozłączenie połączenia. Ta akcja nie wymaga dodatkowych parametrów.
{
"type": "hangup"
}
webhook - wywołanie adresu URL
Akcja webhook pozwala na wysłanie żądania HTTP na wskazany adres URL.
| Pole |
Typ |
Opis |
| url |
String |
Adres URL, na który zostanie wysłane żądanie |
| custom_data |
Object |
Dodatkowe dane w formacie klucz-wartość |
{
"type": "webhook",
"params": {
"url": "https://example.com/webhook",
"custom_data": {
"alarm": "potwierdzony",
"extradata": 2
}
}
}
Przykład - Potwierdzenie alarmu
Poniższy przykład pokazuje użycie obiektów do potwierdzenia odebrania alarmu:
{
"from": "4822100100",
"to": "48501000000",
"webhook": "http://nie.dziala.w.aplikacji.demo",
"webhook_method": "POST",
"ring_timeout": 30,
"objects": [
{
"type": "answer"
},
{
"type": "wait",
"params": {
"time": 1
}
},
{
"type": "tts_dtmf",
"params": {
"text": "To jest Alarm. Wciśnij 1 aby potwierdzić",
"lang": "pl-PL/Maja",
"digits": {
"1": "potwierdzam"
}
}
},
{
"type": "webhook",
"params": {
"url": "http://nie.dziala.w.aplikacji.demo",
"custom_data": {
"alarm": "nie_potwierdzony"
}
}
},
{
"type": "tts",
"params": {
"text": "Alarm nie został potwierdzony.",
"lang": "pl-PL/Maja"
}
},
{
"type": "hangup"
},
{
"type": "label",
"params": {
"name": "potwierdzam"
}
},
{
"type": "webhook",
"params": {
"url": "http://nie.dziala.w.aplikacji.demo",
"custom_data": {
"alarm": "potwierdzony",
"extradata": 2
}
}
},
{
"type": "tts",
"params": {
"text": "Dziękujemy za potwierdzenie odebrania alarmu.",
"lang": "pl-PL/Maja"
}
}
]
}
Głosy dostępne w akcjach TTS
| Kod |
Język / Imię |
| en-GB/Brian |
British English / Brian |
| en-GB/Emma |
British English / Emma |
| en-GB/Amy |
British English / Amy |
| en-US/Salli |
American English / Salli |
| en-US/Joey |
American English / Joey |
| en-US/Chipmunk |
American English / Chipmunk |
| en-US/Eric |
American English / Eric |
| en-US/Ivy |
American English / Ivy |
| en-US/Jennifer |
American English / Jennifer |
| en-US/Justin |
American English / Justin |
| en-US/Kandera |
American English / Kandera |
| en-US/Kimberly |
American English / Kimberly |
| en-GB-WLS/Gwyneth |
Welsh English / Gwyneth |
| en-GB-WLS/Geraint |
Welsh English / Geraint |
| en-IN/Raveena |
Indian English / Raveena |
| en-AU/Nicole |
Australian English / Nicole |
| en-AU/Russell |
Australian English / Russell |
| pl-PL/Jacek |
Polski / Jacek |
| pl-PL/Maja |
Polski / Maja |
| pl-PL/Jan |
Polski / Jan |
| pl-PL/Ewa |
Polski / Ewa |
| cy-GB/Gwyneth |
Welsh / Gwyneth |
| cy-GB/Geraint |
Welsh / Geraint |
| da-DK/Naja |
Danish / Naja |
| da-DK/Mads |
Danish / Mads |
| nl-NL/Lotte |
Dutch / Lotte |
| nl-NL/Ruben |
Dutch / Ruben |
| fr-FR/Celine |
French / Celine |
| fr-FR/Mathieu |
French / Mathieu |
| fr-CA/Chantal |
Canadian French / Chantal |
| de-DE/Marlene |
German / Marlene |
| de-DE/Hans |
German / Hans |
| is-IS/Dora |
Icelandic / Dora |
| is-IS/Karl |
Icelandic / Karl |
| it-IT/Carla |
Italian / Carla |
| it-IT/Giorgio |
Italian / Giorgio |
| pt-PT/Cristiano |
Portuguese / Cristiano |
| pt-PT/Ines |
Portuguese / Ines |
| pt-BR/Vitoria |
Brazilian Portuguese / Vitoria |
| pt-BR/Ricardo |
Brazilian Portuguese / Ricardo |
| ru-RU/Maxim |
Russian / Maxim |
| ru-RU/Tatyana |
Russian / Tatyana |
| es-ES/Conchita |
Spanish / Conchita |
| es-ES/Enrique |
Spanish / Enrique |
| es-US/Penelope |
American Spanish / Penelope |
| es-US/Miguel |
American Spanish / Miguel |
| sv-SE/Astrid |
Swedish / Astrid |
| tr-TR/Filiz |
Turkish / Filiz |
| nb-NO/Liv |
Norwegian / Liv |