Voice API (Call API)

# @ CallAPI ~ 6 min
#voice #call #api

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