Help Center SpeechCall-berichten

SpeechCall-berichten

SpeechCall is een interactief voice response-berichttype (IVR) waarmee u geautomatiseerde spraakoproepen kunt maken met menuopties en DTMF-interacties (dual-tone multi-frequency).

Overzicht

Met SpeechCall kunnen bedrijven:

  • Voer geautomatiseerde spraakoproepen naar klanten
  • Speel inleidende audioberichten af
  • Presenteer interactieve menu-opties
  • Behandel DTMF-toetsaanslagreacties (0-9, *, #)
  • Definieer aangepast gedrag voor ongeldige/time-outinvoer
  • Activeer webhooks met aangepaste hoofdteksten en headers op basis van gebruikersselecties
  • Beheer de oproepstroom dynamisch (navigeer tussen menu’s)

Gebruiksscenario’s

  • Klantenonderzoeken - Verzamel feedback via telefoonmenu-opties
  • Afspraakherinneringen - Bevestig of verplaats uw afspraak met steminteractie
  • Bestellingen volgen - Geef updates van de bestelstatus
  • Interactieve meldingen - Lever belangrijke informatie met actie-opties
  • Spraakverificatie - Multi-factor authenticatie via spraakoproepen

Verzoekformaat

Basisstructuur

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

Parameterbeschrijving

ParameterTypVereistBeschrijving
vantekenreeksJaAfzender-ID (alfanaam of ID)
naartekenreeksJaTelefoonnummer van de ontvanger in internationaal formaat
teksttekenreeksJaTekstwaarde, meestal ‘ivr’ voor SpeechCall
typetekenreeksJaMoet "toespraak" zijn
menuarrayJaArray van menuconfiguraties voor de oproep

Elk menu-object bevat:

ParameterTypVereistBeschrijving
introUrltekenreeksJaURL of identificatie van het inleidende audiobestand
idleTimeoutMsecgeheel getalNeeTime-out in milliseconden om te wachten op een toetsaanslag (bijvoorbeeld 10000). Als de gebruiker niet reageert, worden de acties uitgevoerd die zijn geconfigureerd onder de verkeerde sleutel
dtmfActionsvoorwerpJaKaart met DTMF-sleutels voor acties

DTMF-acties

Het object dtmfActions wijst DTMF-sleutels of speciale voorwaarden toe aan reeksen acties:

DTMF-sleutelBeschrijving
d0Druk op 0
d1Druk op 1
d2Druk op 2
d9Druk op 9
d*Druk op *
d#Druk op #
verkeerdWordt geactiveerd wanneer een ongeldige toets wordt ingedrukt of wanneer idleTimeoutMsec wordt bereikt zonder enige invoer

Elke DTMF-sleutel/voorwaarde verwijst naar een reeks acties die achtereenvolgens worden uitgevoerd.

Ondersteunde acties

ActieParametersBeschrijving
webhookurl (tekenreeks, vereist)
body (object, optioneel)
headers (object, optioneel)
Verzendt een HTTP POST-verzoek in JSON-indeling naar de opgegeven URL. Het body-object wordt genest onder het action-veld in de webhookaanvraag. Aangepaste headers zijn opgenomen als HTTP-headers.
ophangenGeenBeëindigt het gesprek
ga naarMenumenu (tekenreeks of geheel getal)Navigeer door de oproep naar een ander menu in de menu array met behulp van de op 0 gebaseerde index (bijvoorbeeld "1")

Gedetailleerd actiegedrag

Webhook-actie (webhook)

De actie webhook verzendt een HTTP POST-verzoek naar uw callback-URL met de metagegevens van de oproep en optionele aangepaste gegevens:

  • Als er een body wordt opgegeven, worden de sleutel-waardeparen ervan binnen het action-veld van de payload-body verzonden.
  • Als er ‘headers’ zijn opgegeven, worden deze als aangepaste HTTP-headers in het verzoek verzonden.

Ophangactie (ophangen)

De actie ‘ophangen’ beëindigt het actieve gesprek onmiddellijk. Na een actie ‘ophangen’ worden geen verdere acties in de reeks of menu’s verwerkt.

Ga naar menuactie (“gotoMenu”)

De actie gotoMenu leidt de stroom van de oproep om naar een andere menustructuur binnen de menu-array. Er is een enkele parameter menu nodig die de op 0 gebaseerde index van het doelmenu specificeert (bijvoorbeeld 1 om naar het tweede menu te gaan, of 0 om het eerste menu opnieuw te starten).


Inactiviteit en foutafhandeling (“verkeerd”)

De verkeerde sleutel in dtmfActions is een speciale fallthrough-handler. Het voert zijn reeks acties uit in twee scenario’s:

  1. Ongeldige invoer: de beller drukt op een DTMF-toets die niet is gedefinieerd in dtmfActions (ze drukken bijvoorbeeld op 3 maar het menu definieert alleen d1 en d2).
  2. Time-out bij inactiviteit: De beller drukt op geen enkele toets binnen de tijdsduur gespecificeerd door idleTimeoutMsec.

Als ‘verkeerd’ niet is gedefinieerd en de beller op een ongeldige toets drukt of een time-out optreedt, wordt de gespreksstroom standaard ophangen. Door fout te definiëren, kunt u lusmenu’s bouwen (bijvoorbeeld teruggaan naar hetzelfde menu met "action": "gotoMenu", "menu": "0") of de gebruiker omleiden naar een helpmenu.


Webhook-leveringsformaat

Wanneer de actie webhook wordt geactiveerd, verzendt het systeem een HTTP POST-verzoek naar de geconfigureerde url met Content-Type: application/json.

Webhook-verzoekheaders

Als de actie is geconfigureerd met de parameter headers, worden deze sleutel-waardeparen als HTTP-headers in het verzoek opgenomen.

Webhookverzoektekst

De JSON-payload die naar uw webhook-URL wordt verzonden, heeft de volgende structuur:

{
  "from": "0443914272",
  "to": "50001",
  "mid": "7748021",
  "action": {
    "confirm": true
  }
}
VeldTypBeschrijving
vantekenreeksTelefoonnummer beller/afzender-ID
naartekenreeksTelefoonnummer ontvanger
middentekenreeksBericht-ID
actievoorwerpHet aangepaste JSON-object dat is gedefinieerd in het body-veld

Compleet voorbeeld

Eenvoudige IVR met time-out en invoervalidatie

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

Complexe IVR met meerdere menu’s en DTMF-routering

Dit voorbeeld demonstreert hoe u meerdere menu’s definieert en ertussen navigeert met behulp van de actie gotoMenu wanneer de gebruiker een ongeldige sleutel invoert of wanneer de oproep een time-out heeft. Het toont ook aangepaste hoofdteksten en aangepaste HTTP-headers die met de webhooktriggers zijn verzonden.

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

Antwoordformaat

Succesreactie

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

Foutafhandeling

HTTP-statusBeschrijving
200Aanvraag succesvol
400Ongeldig verzoekformaat
401Authenticatie mislukt
429Tarieflimiet overschreden
500Interne serverfout

cURL-voorbeeld

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

Beste praktijken

  1. Audiobestanden - Zorg ervoor dat intro-URL’s toegankelijk zijn en dat audiobestanden de ondersteunde indelingen hebben
  2. Webhook-betrouwbaarheid - Ontwerp webhooks om snel te reageren (binnen 2 seconden)
  3. DTMF-opties - Beperk menu-opties tot 4-6 keuzes voor een betere gebruikerservaring
  4. Time-outafhandeling - Gebruik idleTimeoutMsec om aangepaste inactiviteitslimieten op te geven (bijvoorbeeld 10.000 ms), en configureer een elegante terugval onder de verkeerde DTMF-sleutel (zoals het herhalen van het menu of ophangen)
  5. Multi-Menu Call Flow - Gebruik gotoMenu zorgvuldig om oneindige lussen te voorkomen bij het terugsturen van gebruikers naar vorige menu’s
  6. Fallback-strategie - Gebruik fallback-berichten voor gebruikers die niet opnemen of de verbinding verbreken

Gerelateerde onderwerpen