Help Center SpeechCall-meddelanden

SpeechCall-meddelanden

SpeechCall är en interaktiv röstsvarsmeddelandetyp (IVR) som låter dig ringa automatiska röstsamtal med menyalternativ och DTMF (dual-tone multi-frequency) interaktioner.

Översikt

SpeechCall gör det möjligt för företag att:

  • Ring automatiska röstsamtal till kunder
  • Spela inledande ljudmeddelanden
  • Presentera interaktiva menyalternativ
  • Hantera DTMF-knapptryckssvar (0-9, *, #)
  • Definiera anpassat beteende för ogiltiga/timeout-ingångar
  • Utlösa webhooks med anpassade kroppar och rubriker baserat på användarval
  • Hantera samtalsflödet dynamiskt (navigera mellan menyer)

Användningsfall

  • Kundundersökningar - Samla in feedback via telefonmenyalternativ
  • Avtalspåminnelser - Bekräfta eller boka om med röstinteraktion
  • Beställningsspårning - Ge orderstatusuppdateringar
  • Interaktiva meddelanden - Leverera viktig information med åtgärdsalternativ
  • Röstverifiering - Multifaktorautentisering via röstsamtal

Begärformat

Grundläggande struktur

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

Parameter Beskrivning

ParameterSkrivKrävsBeskrivning
frånsträngJaAvsändaridentifierare (alfanamn eller ID)
tillsträngJaMottagarens telefonnummer i internationellt format
textsträngJaTextvärde, vanligtvis “ivr” för SpeechCall
typsträngJaMåste vara "speechcall"
menyarrayJaArray av menykonfigurationer för samtalet

Menykonfiguration

Varje menyobjekt innehåller:

ParameterSkrivKrävsBeskrivning
introUrlsträngJaURL eller identifierare för den inledande ljudfilen
idleTimeoutMsecheltalNejTimeout i millisekunder för att vänta på en knapptryckning (t.ex. “10000”). Om användaren inte svarar kommer de åtgärder som konfigurerats under “fel” nyckel att utföras
dtmfActionsobjektJaKarta över DTMF-nycklar till åtgärder

DTMF-åtgärder

“dtmfActions”-objektet mappar DTMF-nycklar eller speciella villkor till arrayer av åtgärder:

DTMF-nyckelBeskrivning
d0Tryck på 0
d1Tryck på 1
d2Tryck på 2
d9Tryck på 9
d*Tryck på *
d#Tryck #
felUtlöses när en ogiltig tangent trycks ned eller när idleTimeoutMsec nås utan någon inmatning

Varje DTMF-nyckel/villkor mappas till en rad åtgärder som kommer att utföras i sekvens.

Åtgärder som stöds

ÅtgärdParametrarBeskrivning
webhookurl (sträng, obligatorisk)
body (objekt, valfritt)
headers (objekt, valfritt)
Skickar en HTTP POST-begäran i JSON-format till den angivna URL:en. “body”-objektet kommer att kapslas under “action”-fältet i webhook-begäran. Anpassade rubriker ingår som HTTP-rubriker.
lägg påIngaAvslutar samtalet
gotoMenumeny (sträng eller heltal)Navigerar samtalet till en annan meny i meny-arrayen med hjälp av dess 0-baserade index (t.ex. "1")

Detaljerat åtgärdsbeteende

Webhook Action (webhook)

Åtgärden “webhook” skickar en HTTP POST-begäran till din återuppringnings-URL med samtalsmetadata och valfria anpassade data:

  • Om en “kropp” tillhandahålls, skickas dess nyckel-värdepar in i “action”-fältet i nyttolastkroppen.
  • Om “headers” tillhandahålls skickas de som anpassade HTTP-rubriker i begäran.

Lägg på åtgärd (‘lägg på’)

“Lägg på”-åtgärden avslutar det aktiva samtalet omedelbart. Inga ytterligare åtgärder i sekvensen eller menyerna kommer att bearbetas efter en “lägg på”.

Gå till Menyåtgärd (gotoMenu)

Åtgärden gotoMenu omdirigerar flödet av anropet till en annan menystruktur inom meny-arrayen. Det krävs en enstaka parameter meny som specificerar det 0-baserade indexet för målmenyn (t.ex. "1" för att gå till den andra menyn, eller "0" för att starta om den första menyn).


Inaktivitet och felhantering (‘fel’)

Den felaktiga nyckeln i dtmfActions är en speciell fallthrough-hanterare. Den utför sin uppsättning av handlingssekvenser i två scenarier:

  1. Ogiltig inmatning: Den som ringer trycker på en DTMF-tangent som inte är definierad i dtmfActions (de trycker till exempel 3 men menyn definierar bara d1 och d2).
  2. Idle Timeout: Den som ringer trycker inte på någon knapp inom den tid som anges av idleTimeoutMsec.

Om “fel” inte är definierat och den som ringer trycker på en ogiltig knapp eller timeout kommer samtalsflödet att lägga på som standard. Genom att definiera fel kan du bygga loopmenyer (t.ex. gå tillbaka till samma meny med "action": "gotoMenu", "menu": "0") eller omdirigera användaren till en hjälpmeny.


Webhook leveransformat

När “webhook”-åtgärden utlöses, skickar systemet en HTTP POST-begäran till den konfigurerade “url” med “Content-Type: application/json”.

Webhook Request Headers

Om åtgärden är konfigurerad med parametern “headers”, inkluderas dessa nyckel-värdepar som HTTP-huvuden i begäran.

Webhook Request Body

JSON-nyttolasten som skickas till din webhook-URL har följande struktur:

{
  "from": "0443914272",
  "to": "50001",
  "mid": "7748021",
  "action": {
    "confirm": true
  }
}
FältSkrivBeskrivning
frånsträngUppringarens telefonnummer / avsändar-ID
tillsträngMottagarens telefonnummer
mittsträngMeddelande-ID
åtgärdobjektDet anpassade JSON-objektet definierat i åtgärdens “kropp”-fält

Komplett exempel

Enkel IVR med 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"
              }
            ]
          }
        }
      ]
    }
  ]
}

Komplex IVR med flera menyer och DTMF-routing

Det här exemplet visar hur man definierar flera menyer och navigerar mellan dem med “gotoMenu”-åtgärden när användaren matar in en ogiltig nyckel eller när samtalet timeout. Den visar också anpassade kroppar och anpassade HTTP-rubriker som skickas med webhook-utlösare.

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

Svarsformat

Framgångssvar

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

Felhantering

HTTP-statusBeskrivning
200Begäran lyckades
400Ogiltigt format för begäran
401Autentisering misslyckades
429Frekvensgränsen har överskridits
500Internt serverfel

cURL Exempel

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

Bästa metoder

  1. Ljudfiler - Se till att introduktionsadresser är tillgängliga och att ljudfiler är i format som stöds
  2. Webhook Reliability - Designa webhooks för att svara snabbt (inom 2 sekunder)
  3. DTMF-alternativ - Begränsa menyalternativen till 4-6 val för bättre användarupplevelse
  4. Timeout-hantering - Använd “idleTimeoutMsec” för att ange anpassade inaktivitetsgränser (t.ex. 10 000 ms) och konfigurera en graciös reserv under “fel” DTMF-nyckel (som att upprepa menyn eller lägga på)
  5. Multi-Menu Call Flow - Använd gotoMenu noggrant för att förhindra oändliga loopar när du dirigerar användare tillbaka till tidigare menyer
  6. Reservstrategi - Använd reservmeddelanden för användare som inte svarar eller kopplar bort

Relaterade ämnen