Preskoči na sadržaj

Govorne poruke

SpeechCall je vrsta poruke interaktivnog glasovnog odgovora (IVR) koja vam omogućuje upućivanje automatiziranih glasovnih poziva s opcijama izbornika i DTMF (dual-tone multi-frequency) interakcijama.

Pregled

SpeechCall tvrtkama omogućuje: - Upućujte automatizirane glasovne pozive korisnicima - Reproducirajte uvodne audio poruke - Predstavite interaktivne opcije izbornika - Rukovanje DTMF odgovorima na pritisak tipke (0-9, *, #) - Definirajte prilagođeno ponašanje za nevažeće/istek vremena - Pokreni webdojavnike s prilagođenim tijelima i zaglavljima na temelju korisničkih odabira - Dinamički upravljajte protokom poziva (krećite se između izbornika)

Slučajevi upotrebe

  • Ankete kupaca - Prikupite povratne informacije putem opcija izbornika telefona
  • Podsjetnici za sastanke - Potvrdite ili promijenite termin glasovnom interakcijom
  • Praćenje narudžbi - Omogućite ažuriranje statusa narudžbe
  • Interaktivne obavijesti - Dostavite važne informacije s opcijama radnji
  • Glasovna potvrda - Višefaktorska provjera autentičnosti 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 Upišite Obavezno Opis
od niz Da Identifikator pošiljatelja (alfa ime ili ID)
za niz Da Telefonski broj primatelja u međunarodnom formatu
tekst niz Da Tekstualna vrijednost, obično "ivr" za SpeechCall
tip niz Da Mora biti "speechcall"
izbornik niz Da Niz konfiguracija izbornika za poziv

Konfiguracija izbornika

Svaki objekt izbornika sadrži:

Parametar Upišite Obavezno Opis
introUrl niz Da URL ili identifikator uvodne audio datoteke
IdleTimeoutMsec cijeli broj Ne Istek vremena u milisekundama za čekanje pritiska tipke (npr. 10000). Ako korisnik ne odgovori, izvršit će se radnje konfigurirane pod tipkom wrong
dtmfAkcije objekt Da Karta DTMF tipki za akcije

DTMF radnje

Objekt dtmfActions preslikava DTMF ključeve ili posebne uvjete u nizove radnji:

DTMF ključ Opis
d0 Pritisnite 0
d1 Pritisnite 1
d2 Pritisnite 2
... ...
d9 Pritisnite 9
d* Pritisnite *
d# Pritisnite #
pogrešno Aktivira se kada se pritisne nevažeća tipka ili kada se dosegne idleTimeoutMsec bez ikakvog unosa

Svaki DTMF ključ/uvjet preslikava se u niz radnji koje će se izvršavati u nizu.

Podržane radnje

Radnja Parametri Opis
webhook url (niz, obavezno)
tijelo (objekt, izborno)
zaglavlja (objekt, izborno)
Šalje HTTP POST zahtjev u JSON formatu na navedeni URL. Objekt body bit će ugniježđen ispod polja action u zahtjevu web-dojavnika. Prilagođena zaglavlja uključena su kao HTTP zaglavlja.
prekidanje Ništa Završava poziv
gotoMenu izbornik (string ili cijeli broj) Usmjerava poziv do drugog izbornika u nizu izbornik koristeći njegov indeks temeljen na 0 (npr. "1")

Webhook format isporuke

Kada se pokrene radnja webhook, sustav šalje HTTP POST zahtjev na konfigurirani url s Content-Type: application/json.

Webhook zaglavlja zahtjeva

Ako je radnja konfigurirana s parametrom headers, ti parovi ključ-vrijednost uključeni su kao HTTP zaglavlja u zahtjev.

Webhook tijelo zahtjeva

JSON sadržaj poslan na vaš URL web-dojavnika ima sljedeću strukturu:

{
  "from": "0443914272",
  "to": "50001",
  "mid": "7748021",
  "action": {
    "confirm": true
  }
}
Polje Upišite Opis
od niz Telefonski broj pozivatelja / ID pošiljatelja
za niz Broj telefona primatelja
sredina niz ID poruke
akcija objekt Prilagođeni JSON objekt definiran u polju tijelo akcije

Kompletan primjer

Jednostavan IVR s vremenskim ograničenjem i provjerom valjanosti unosa

{
  "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"
              }
            ]
          }
        }
      ]
    }
  ]
}

Složeni IVR s više izbornika i DTMF usmjeravanjem

Ovaj primjer pokazuje kako definirati više izbornika i kretati se između njih pomoću radnje gotoMenu kada korisnik unese nevažeću tipku ili kada poziv istekne. Također prikazuje prilagođena tijela i prilagođena HTTP zaglavlja poslana s okidačima web-dojavnika.

{
  "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"
    }
  ]
}

Rješavanje grešaka

HTTP status Opis
200 Zahtjev uspješan
400 Nevažeći format zahtjeva
401 Autentifikacija nije uspjela
429 Ograničenje brzine premašeno
500 Interna greška poslužitelja

Primjer cURL-a

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"
                }
              ]
            }
          }
        ]
      }
    ]
  }'

Najbolji primjeri iz prakse

  1. Audio datoteke - Provjerite jesu li uvodni URL-ovi dostupni i audio datoteke u podržanim formatima
  2. Pouzdanost web-dojavnika - Dizajnirajte web-dojavnike za brzi odgovor (unutar 2 sekunde)
  3. DTMF opcije - Ograničite opcije izbornika na 4-6 izbora za bolje korisničko iskustvo
  4. Upravljanje vremenskim ograničenjem - Koristite idleTimeoutMsec za određivanje prilagođenih ograničenja neaktivnosti (npr. 10000 ms) i konfigurirajte elegantnu zamjenu pod pogrešnom DTMF tipkom (poput ponavljanja izbornika ili prekidanja veze)
  5. Tijek poziva s više izbornika - pažljivo koristite gotoMenu kako biste spriječili beskonačne petlje prilikom preusmjeravanja korisnika natrag na prethodne izbornike
  6. Rezervna strategija - Koristite rezervne poruke za korisnike koji ne odgovore ili prekinu vezu

Povezane teme