Help Center Poruke govornog poziva

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": "YourSender",
      "to": "+380XXXXXXXXX",
      "text": "ivr",
      "type": "speechcall",
      "menu": [
        {
          "introUrl": "ivr_XXXXX",
          "idleTimeoutMsec": 10000,
          "dtmfActions": {
            "d1": [
              {
                "action": "webhook",
                "url": "https://YourWebhookURL/0",
                "body": {
                  "confirm": true
                },
                "headers": {
                  "test-header": "test"
                }
              },
              {
                "action": "hangup"
              }
            ],
            "d2": [
              {
                "action": "webhook",
                "url": "https://YourWebhookURL/1",
                "body": {
                  "confirm": false
                }
              },
              {
                "action": "hangup"
              }
            ],
            "wrong": [
              {
                "action": "gotoMenu",
                "menu": "1"
              }
            ]
          }
        }
      ]
    }
  ]
}

Opis parametra

ParametarVrstaObaveznoOpis
odstringDaIdentifikator pošiljaoca (alfa ime ili ID)
tostringDaTelefonski broj primaoca u međunarodnom formatu
tekststringDaVrijednost teksta, obično “ivr” za SpeechCall
tipstringDaMora biti "speechcall"
menunizDaNiz konfiguracija menija za poziv

Konfiguracija menija

Svaki objekat menija sadrži:

ParametarVrstaObaveznoOpis
introUrlstringDaURL ili identifikator uvodne audio datoteke
idleTimeoutMseccijeli brojNeVremensko 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
dtmfActionsobjektDaMapa DTMF ključeva za radnje

DTMF akcije

Objekt dtmfActions mapira DTMF ključeve ili posebne uvjete u nizove akcija:

DTMF ključOpis
d0Pritisnite 0
d1Pritisnite 1
d2Pritisnite 2
d9Pritisnite 9
d*Pritisnite *
d#Pritisnite #
pogrešnoPokreć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

AkcijaParametriOpis
webhookurl (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.
prekidNištaZavršava poziv
gotoMenumeni (niz ili cijeli broj)Prebacuje poziv na drugi meni u nizu menu koristeći indeks baziran na 0 (npr. "1")

Detailed Action Behavior

Webhook Akcija (webhook)

Akcija webhook šalje HTTP POST zahtjev na vaš URL povratnog poziva s metapodacima poziva i opcijskim prilagođenim podacima:

  • Ako je dostavljeno tijelo, njegovi parovi ključ-vrijednost se šalju unutar polja akcija tijela korisnog opterećenja.
  • Ako su zaglavlja navedena, ona se šalju kao prilagođena HTTP zaglavlja u zahtjevu.

Akcija prekida (prekid)

Akcija prekid odmah prekida aktivni poziv. Nijedna daljnja radnja u nizu ili izbornicima neće biti obrađena nakon akcije prekidanja.

Idite na radnju menija (gotoMenu)

Akcija gotoMenu preusmjerava tok poziva na drugu strukturu menija unutar menu niza. Potreban je jedan parametar meni koji specificira indeks ciljnog menija zasnovan na 0 (npr. "1" za odlazak na drugi meni, ili "0" za ponovno pokretanje prvog menija).


Neaktivnost i rukovanje greškama (pogrešno)

Pogrešan ključ unutar dtmfActions je poseban rukovatelj propusta. On izvršava svoj niz akcija u dva scenarija:

  1. Nevažeći unos: Pozivalac pritisne DTMF taster koji nije definisan u dtmfActions (na primer, oni pritisnu 3, ali meni definiše samo d1 i d2).
  2. Idle Timeout: Pozivatelj ne pritisne nijednu tipku unutar trajanja određenog idleTimeoutMsec.

Ako pogrešno nije definirano i pozivalac pritisne nevažeći taster ili istekne, tok poziva će po defaultu prekinuti vezu. Definiranje pogrešnog omogućava vam da napravite menije petlje (npr. vraćanje na isti meni sa "action": "gotoMenu", "menu": "0") ili preusmjeravanje korisnika na meni pomoći.


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
  }
}
PoljeVrstaOpis
odstringBroj telefona pozivaoca / ID pošiljaoca
tostringBroj telefona primaoca
sredinastringID poruke
akcijaobjektPrilagođeni JSON objekt definiran u polju body akcije

Kompletan primjer

Jednostavan IVR sa Timeout & Input Validation

{
  "messages": [
    {
      "from": "YourSender",
      "to": "+380XXXXXXXXX",
      "text": "ivr",
      "type": "speechcall",
      "menu": [
        {
          "introUrl": "ivr_651854",
          "idleTimeoutMsec": 10000,
          "dtmfActions": {
            "d1": [
              {
                "action": "webhook",
                "url": "https://YourWebhookURL/0",
                "body": {
                  "confirm": true
                }
              },
              {
                "action": "hangup"
              }
            ],
            "d2": [
              {
                "action": "webhook",
                "url": "https://YourWebhookURL/1",
                "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_XXXXX",
          "idleTimeoutMsec": 10000,
          "dtmfActions": {
            "d1": [
              {
                "action": "webhook",
                "url": "https://YourWebhookURL/0",
                "body": {
                  "confirm": true
                },
                "headers": {
                  "test-header": "test"
                }
              },
              {
                "action": "hangup"
              }
            ],
            "d2": [
              {
                "action": "webhook",
                "url": "https://YourWebhookURL/1",
                "body": {
                  "confirm": false
                }
              },
              {
                "action": "hangup"
              }
            ],
            "wrong": [
              {
                "action": "gotoMenu",
                "menu": "1"
              }
            ]
          }
        },
        {
          "introUrl": "ivr_651854",
          "idleTimeoutMsec": 10000,
          "dtmfActions": {
            "d1": [
              {
                "action": "webhook",
                "url": "https://YourWebhookURL/0",
                "body": {
                  "confirm": true
                }
              },
              {
                "action": "hangup"
              }
            ],
            "d2": [
              {
                "action": "webhook",
                "url": "https://YourWebhookURL/1",
                "body": {
                  "confirm": false
                }
              },
              {
                "action": "hangup"
              }
            ],
            "wrong": [
              {
                "action": "hangup"
              }
            ]
          }
        }
      ]
    }
  ]
}

Format odgovora

Uspješan odgovor

{
  "messages": [
    {
      "messageId": "unique-message-id",
      "recipient": "+380XXXXXXXXX",
      "status": "sent"
    }
  ]
}

Rukovanje greškama

HTTP statusOpis
200Zahtjev uspješan
400Nevažeći format zahtjeva
401Autentifikacija nije uspjela
429Ograničenje stope je premašeno
500Interna 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_XXXXX",
            "idleTimeoutMsec": 10000,
            "dtmfActions": {
              "d1": [
                {
                  "action": "webhook",
                  "url": "https://YourWebhookURL/0",
                  "body": {
                    "confirm": true
                  },
                  "headers": {
                    "test-header": "test"
                  }
                },
                {
                  "action": "hangup"
                }
              ],
              "d2": [
                {
                  "action": "webhook",
                  "url": "https://YourWebhookURL/1",
                  "body": {
                    "confirm": false
                  }
                },
                {
                  "action": "hangup"
                }
              ],
              "wrong": [
                {
                  "action": "gotoMenu",
                  "menu": "1"
                }
              ]
            }
          },
          {
            "introUrl": "ivr_651854",
            "idleTimeoutMsec": 10000,
            "dtmfActions": {
              "d1": [
                {
                  "action": "webhook",
                  "url": "https://YourWebhookURL/0",
                  "body": {
                    "confirm": true
                  }
                },
                {
                  "action": "hangup"
                }
              ],
              "d2": [
                {
                  "action": "webhook",
                  "url": "https://YourWebhookURL/1",
                  "body": {
                    "confirm": false
                  }
                },
                {
                  "action": "hangup"
                }
              ],
              "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