Poruke govornog poziva
SpeechCall je vrsta poruke interaktivnog glasovnog odgovora (IVR) koja vam omogućava da obavljate automatske glasovne pozive sa opcijama menija i DTMF (dual-tone multi-frequency) interakcijama.
Pregled
SpeechCall omogućava preduzećima da: - Upućujte automatske glasovne pozive klijentima - Pustite uvodne audio poruke - Predstavite interaktivne opcije menija - Rukovanje DTMF odgovorima na pritisak tipke (0-9, *, #) - Definirajte prilagođeno ponašanje za nevažeće unose/istek - Aktivirajte webhookove s prilagođenim tijelima i zaglavljima na osnovu odabira korisnika - Dinamički upravljajte protokom poziva (navigacija između menija)
Slučajevi upotrebe
- Ankete kupaca - Prikupite povratne informacije putem opcija menija telefona
- Podsjetnici za sastanke - Potvrdite ili pomjerite termin glasovnom interakcijom
- Praćenje narudžbi - Pružanje ažuriranja statusa narudžbe
- Interaktivna obavještenja - Isporučite važne informacije s opcijama akcije
- Verifikacija glasa - Višefaktorska autentikacija putem glasovnih poziva
Format zahtjeva
Osnovna struktura
{
"messages": [
{
"from": "BazarCOM",
"to": "+380936670003",
"text": "ivr",
"type": "speechcall",
"menu": [
{
"introUrl": "ivr_651854",
"idleTimeoutMsec": 10000,
"dtmfActions": {
"d1": [
{
"action": "webhook",
"url": "https://api.example.com/callback/option1",
"body": {
"confirm": true
},
"headers": {
"X-Custom-Header": "value"
}
},
{
"action": "hangup"
}
],
"d2": [
{
"action": "webhook",
"url": "https://api.example.com/callback/option2",
"body": {
"confirm": false
}
},
{
"action": "hangup"
}
],
"wrong": [
{
"action": "hangup"
}
]
}
}
]
}
]
}
Opis parametra
| Parametar | Vrsta | Obavezno | Opis |
|---|---|---|---|
od |
string | Da | Identifikator pošiljaoca (alfa ime ili ID) |
to |
string | Da | Telefonski broj primaoca u međunarodnom formatu |
tekst |
string | Da | Vrijednost teksta, obično "ivr" za SpeechCall |
tip |
string | Da | Mora biti "speechcall" |
menu |
niz | Da | Niz konfiguracija menija za poziv |
Konfiguracija menija
Svaki objekat menija sadrži:
| Parametar | Vrsta | Obavezno | Opis |
|---|---|---|---|
introUrl |
string | Da | URL ili identifikator uvodne audio datoteke |
idleTimeoutMsec |
cijeli broj | Ne | Vremensko ograničenje u milisekundama za čekanje na pritisak na tipku (npr. 10000). Ako korisnik ne odgovori, akcije konfigurirane pod pogrešnim ključem će se izvršiti |
dtmfActions |
objekt | Da | Mapa DTMF ključeva za radnje |
DTMF akcije
Objekt dtmfActions mapira DTMF ključeve ili posebne uvjete u nizove akcija:
| DTMF ključ | Opis |
|---|---|
d0 |
Pritisnite 0 |
d1 |
Pritisnite 1 |
d2 |
Pritisnite 2 |
| ... | ... |
d9 |
Pritisnite 9 |
d* |
Pritisnite * |
d# |
Pritisnite # |
pogrešno |
Pokreće se kada se pritisne nevažeći ključ ili kada se postigne idleTimeoutMsec bez ikakvog unosa |
Svaki DTMF ključ/uslov preslikava se na niz akcija koje će se izvršavati u nizu.
Podržane akcije
| Akcija | Parametri | Opis |
|---|---|---|
webhook |
url (string, obavezan)body (objekat, opciono)headers (objekat, opciono) |
Šalje HTTP POST zahtjev u JSON formatu na navedeni URL. Objekt body će biti ugniježđen ispod polja action u webhook zahtjevu. Prilagođena zaglavlja su uključena kao HTTP zaglavlja. |
prekid |
Ništa | Završava poziv |
gotoMenu |
meni (niz ili cijeli broj) |
Prebacuje poziv na drugi meni u nizu menu koristeći indeks baziran na 0 (npr. "1") |
Format isporuke Webhook-a
Kada se pokrene akcija webhook, sistem šalje HTTP POST zahtjev na konfigurirani url sa Content-Type: application/json.
Zaglavlja zahtjeva Webhook-a
Ako je akcija konfigurirana s parametrom `headers', ti parovi ključ/vrijednost su uključeni kao HTTP zaglavlja u zahtjev.
Webhook zahtjev tijelo
JSON korisni učitavanje poslano na vaš webhook URL ima sljedeću strukturu:
| Polje | Vrsta | Opis |
|---|---|---|
od |
string | Broj telefona pozivaoca / ID pošiljaoca |
to |
string | Broj telefona primaoca |
sredina |
string | ID poruke |
akcija |
objekt | Prilagođeni JSON objekt definiran u polju body akcije |
Kompletan primjer
Jednostavan IVR sa Timeout & Input Validation
{
"messages": [
{
"from": "BazarCOM",
"to": "+380936670003",
"text": "ivr",
"type": "speechcall",
"menu": [
{
"introUrl": "ivr_651854",
"idleTimeoutMsec": 10000,
"dtmfActions": {
"d1": [
{
"action": "webhook",
"url": "https://api.example.com/callback/option1",
"body": {
"confirm": true
}
},
{
"action": "hangup"
}
],
"d2": [
{
"action": "webhook",
"url": "https://api.example.com/callback/option2",
"body": {
"confirm": false
}
},
{
"action": "hangup"
}
],
"wrong": [
{
"action": "hangup"
}
]
}
}
]
}
]
}
Kompleksni IVR sa više menija i DTMF rutiranjem
Ovaj primjer pokazuje kako definirati više menija i kretati se između njih koristeći akciju gotoMenu kada korisnik unese nevažeći ključ ili kada poziv istekne. Takođe prikazuje prilagođena tijela i prilagođena HTTP zaglavlja poslana sa okidačima webhook-a.
{
"messages": [
{
"from": "YourSender",
"to": "+380XXXXXXXXX",
"text": "ivr",
"type": "speechcall",
"menu": [
{
"introUrl": "ivr_651854",
"idleTimeoutMsec": 10000,
"dtmfActions": {
"d1": [
{
"action": "webhook",
"url": "http://api.smsbat.local/gatereq/temp/hook",
"body": {
"confirm": true
},
"headers": {
"test-header": "test"
}
},
{
"action": "hangup"
}
],
"d2": [
{
"action": "webhook",
"url": "http://api.smsbat.local/gatereq/temp/hook",
"body": {
"confirm": false
}
},
{
"action": "hangup"
}
],
"wrong": [
{
"action": "gotoMenu",
"menu": "1"
}
]
}
},
{
"introUrl": "ivr_651854",
"idleTimeoutMsec": 10000,
"dtmfActions": {
"d1": [
{
"action": "webhook",
"url": "http://localhost/1"
}
],
"d2": [
{
"action": "webhook",
"url": "http://localhost/1"
}
],
"wrong": [
{
"action": "hangup"
}
]
}
}
]
}
]
}
Format odgovora
Uspješan odgovor
{
"messages": [
{
"messageId": "unique-message-id",
"recipient": "+380936670003",
"status": "sent"
}
]
}
Rukovanje greškama
| HTTP status | Opis |
|---|---|
| 200 | Zahtjev uspješan |
| 400 | Nevažeći format zahtjeva |
| 401 | Autentifikacija nije uspjela |
| 429 | Ograničenje stope je premašeno |
| 500 | Interna greška servera |
cURL primjer
curl -X POST https://restapi.smsbat.com/bat/messagelist \
-u "username:password" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"from": "YourSender",
"to": "+380XXXXXXXXX",
"text": "ivr",
"type": "speechcall",
"menu": [
{
"introUrl": "ivr_651854",
"idleTimeoutMsec": 10000,
"dtmfActions": {
"d1": [
{
"action": "webhook",
"url": "http://api.smsbat.local/gatereq/temp/hook",
"body": {
"confirm": true
},
"headers": {
"test-header": "test"
}
},
{
"action": "hangup"
}
],
"d2": [
{
"action": "webhook",
"url": "http://api.smsbat.local/gatereq/temp/hook",
"body": {
"confirm": false
}
},
{
"action": "hangup"
}
],
"wrong": [
{
"action": "gotoMenu",
"menu": "1"
}
]
}
},
{
"introUrl": "ivr_651854",
"idleTimeoutMsec": 10000,
"dtmfActions": {
"d1": [
{
"action": "webhook",
"url": "http://localhost/1"
}
],
"d2": [
{
"action": "webhook",
"url": "http://localhost/1"
}
],
"wrong": [
{
"action": "hangup"
}
]
}
}
]
}
]
}'
Najbolje prakse
- Audio fajlovi - Osigurajte da su uvodni URL-ovi dostupni i audio datoteke u podržanim formatima
- Webhook pouzdanost - Dizajnirajte webhookove da brzo reaguju (unutar 2 sekunde)
- DTMF opcije - Ograničite opcije menija na 4-6 izbora za bolje korisničko iskustvo
- Rukovanje timeoutom - Koristite
idleTimeoutMsecda odredite prilagođena ograničenja neaktivnosti (npr. 10000 ms) i konfigurirajte graciozan rezervni korak ispodpogrešnogDTMF ključa (kao što je ponavljanje menija ili spuštanje slušalice) - Tok poziva sa više menija - Pažljivo koristite
gotoMenukako biste spriječili beskonačne petlje prilikom usmjeravanja korisnika nazad na prethodne menije - Zamjenska strategija - Koristite zamjenske poruke za korisnike koji ne odgovaraju ili prekinu vezu
Povezane teme
- Pošalji poruku - Opći vodič za slanje poruka
- Flash poziv - Jednostavni glasovni pozivi za potvrdu
- Provjeri status - Pratite status isporuke poruke
- Vrste poruka - Pregled svih podržanih tipova poruka