Skip to content

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:

{
  "from": "0443914272",
  "to": "50001",
  "mid": "7748021",
  "action": {
    "confirm": true
  }
}
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

  1. Audio fajlovi - Osigurajte da su uvodni URL-ovi dostupni i audio datoteke u podržanim formatima
  2. Webhook pouzdanost - Dizajnirajte webhookove da brzo reaguju (unutar 2 sekunde)
  3. DTMF opcije - Ograničite opcije menija na 4-6 izbora za bolje korisničko iskustvo
  4. Rukovanje timeoutom - Koristite idleTimeoutMsec da odredite prilagođena ograničenja neaktivnosti (npr. 10000 ms) i konfigurirajte graciozan rezervni korak ispod pogrešnog DTMF ključa (kao što je ponavljanje menija ili spuštanje slušalice)
  5. Tok poziva sa više menija - Pažljivo koristite gotoMenu kako biste spriječili beskonačne petlje prilikom usmjeravanja korisnika nazad na prethodne menije
  6. Zamjenska strategija - Koristite zamjenske poruke za korisnike koji ne odgovaraju ili prekinu vezu

Povezane teme