Dokumentation
Call Control Voice API
Anfrageparameter (von TENIOS zu Ihrem Server):
| requestType | Der Typ der API-Anfrage. Hat immer den Wert EXTERNAL_CALL_CONTROL für alle External Call Control API Anfragen |
| customerNumber | Ihre Kundennummer (Der selbe Wert, den Sie auch in Klammern in der rechten oberen Ecke des Kundenportals sehen). Bitte überprüfen Sie diesen Wert bei jeder Anfrage. |
| accessKey | Der accessKey, den Sie in Ihrer Konfiguration des Call Control API block (Im TENIOS-Kundenportal) definiert haben. Der access key muss von Ihnen definiert werden und dient zur Absicherung der API gegen unbefugten Zugriff. Bitte überprüfen Sie diesen Wert bei jeder Anfrage. |
| variables | Eine key/value Map mit den Keys, die mit übermittelt werden. Kann für beliebige Zwecke verwendet werden, z.B. Logging oder zum Bestimmen der nächsten Schritte. |
| loopCount | Beginnend von 0, die Anzahl der Anfragen, die innerhalb dieser Instanz des Call Control API Blocks gemacht wurden. In vielen einfachen Anwendungen, können alle Blöcke in der initialen Anfrage zurückgegeben werden, wenn der loopCount gleich 0 ist. Bei komplizierteren Anwendungen ist es eventuell erforderlich, verschiedene Blöcke bei mehreren Iterationen zurückzugeben. |
| requestStatus | Mögliche Typen sind:
|
| blocksProcessingResult (nur wenn loopCount > 0) | Enthält das Feld validationErrors , welches eine Liste von Fehlermeldungen enthält. In zukünftigen Versionen kann das blocksProcessingResult weitere Informationen beinhalten. |
Antwortparameter (von Ihren Server an TENIOS ):
| blocks | Ein Array von Blöcken. Wenn dieses Array leer ist, wird von TENIOS die Ausführung des Call Control API Blocks beendet. |
Jeder Block muss das folgende Format haben:
| blockType Obligatorisch | Art des Blockes. Mögliche Typen sind:
|
| blockTimeout
| Timeout in Sekunden für den gesamten Block.Einige Blöcke benötigen dieses Attribut, bei anderen ist es NICHT erlaubt
|
Prozessablauf:

TENIOS POST-Request 0:
{
"requestType" : "EXTERNAL_CALL_CONTROL",
"customerNumber" : 200000,
"accessKey" : "XXXXX-XXXX-XXXXXX",
"variables" : {
"call_uuid" : "1ecd8430-a926-11e3-a701-f9e70cd7ff59",
"destination_number" : "+49800123456789",
"caller_id_number" : "+4989444444444"
},
"loopCount" : 0,
"requestStatus" : "REQUESTING_BLOCKS",
"blocksProcessingResult" : null
}- loopCount: 0 bedeutet, dass dieses die erste Anfrage von diesem Call Control API Block ist (es gibt noch weitere Anfragen, siehe weiter unten)
- requestStatus: „REQUESTING_BLOCKS“ bedeutet, dass Sie berechtigt sind Routing-Blöcke in Ihrer Antwort zu senden
- Ein blocksProcessingResult mit dem Wert null, kann bei dieser ersten Anfrage ignoriert werden
Beispiel-Antwort von Ihren Server an TENIOS
Sie können auf diese HTTPS-Anfrage wie folgt antworten:
Kundenserver-Response 0:
{
"blocks" : [ {
"blockType" : "ANNOUNCEMENT",
"announcementName" : "Voicemail_Ansage",
"standardAnnouncement" : true
} ]
}- Sie können auch mehrere mit Komma getrennte Ansagen innerhalb des Blocks senden
- Der Ansage- Block (blockType: „ANNOUNCEMENT“) verwendet eine vordefinierte (Standard-) Ansage. D.h. KEINE Ansage, die Sie selber hochgeladen haben.
- Die Ansage ist definiert über den Namen „Voicemail_Ansage“ (Weitere Informationen erhalten Sie hier.)
Kundenserver-Response 0:
{
"blocks" :
[
{ "blockType" : "ANNOUNCEMENT",
"announcementName" : "Voicemail_Ansage",
"standardAnnouncement" : true
},
{ "blockType" : "SAY",
"text" : "Hello, how are you doing?",
"voiceName" : "de.female.3",
"useSsml" : false
},
{
"blockType" : "BRIDGE",
"destinations" : [ { "destination" : "1001",
"destinationType" : "SIP_USER",
"timeout" : 25 },
{ "destination" : "+4978787878",
"destinationType" : "EXTERNALNUMBER",
"timeout" : 30 }
],
"bridgeMode" : "SEQUENTIAL"
}
]
}
Sobald die Antwort von TENIOS empfangen wurde, werden die darin enthaltenen Blöcke ausgeführt. Vorausgesetzt die Antwort ist syntaktisch korrekt und die Ansage existiert und kann abgespielt werden, erhalten Sie danach weitere Anfragen wie folgt:
TENIOS POST-Request 1:
{
"requestType" : "EXTERNAL_CALL_CONTROL",
"customerNumber" : 200000,
"accessKey" : "XXXXX-XXXX-XXXXXX",
"variables" : {
"call_uuid" : "1ecd8430-a926-11e3-a701-f9e70cd7ff59",
"destination_number" : "+49800123456789",
"caller_id_number" : "+4989444444444"
},
"loopCount" : 1,
"requestStatus" : "REQUESTING_BLOCKS",
"blocksProcessingResult" : {
"validationErrors" : [ ]
}
}- loopCount: 1 bedeutet, dass es sich um die zweite Anfrage Call Control API Blocks handelt.Die Zählung hat bei 0 begonnen, somit hat die zweite Anfrage den Wert 1
- Der requestStatus hat weiterhin den Wert „REQUESTING_BLOCKS“, was bedeutet, dass Sie weiterhin berechtigt sind, Routing-Blöcke in Ihren Antworten zurückzugeben (falls gewünscht).
- Der blocksProcessingResult beinhaltet ein leeres Array von validationErrors – was in diesem Fall positiv ist. Es bedeutet, dass in Ihrer zuvor gelieferten Antwort keine Validierungsfehler aufgetreten sind.
Kundenserver-Response 1:
keine weitere Blocks
{
"blocks": []
}Beispiele für fehlerhafte Anfragen:
Für dem Fall, dass die von Ihnen gelieferte Antwort 0 Fehler enthält:
Kundenserver-Response 0:
(mit Fehler)
{
"blocks" : [
{ "blockType" : "ANNOUNCEMENT",
"standardAnnouncement" : true
}
]
}TENIOS POST-Request 1:
Informationen zu dem Fehler
{
"requestType" : "EXTERNAL_CALL_CONTROL",
"customerNumber" : 200000,
"accessKey" : "XXXXX-XXXX-XXXXXX",
"variables" : { "call_uuid" : "1ecd8430-a926-11e3-a701-f9e70cd7ff59",
"destination_number" : "+49800123456789",
"caller_id_number" : "+4989444444444" },
"loopCount" : 1,
"requestStatus" : "VALIDATION_ERRORS",
"blocksProcessingResult" : {
"validationErrors" : [ "Validation error: blocks[0].announcementName may not be null" ]
}
}- Der requestStatus hat den Wert VALIDATION_ERRORS – was bedeutet, dass Sie keine weiteren Blöcke mehr in der Antwort zurücksenden können (Diese würden ignoriert) und Sie sich blocksProcessingResult genauer anschauen müssen
- blocksProcessingResult enthält eine Liste von Fehlermeldungen, welche Ihnen bei der Fehleranalyse weiterhelfen können. Bitte beachten Sie, dass bei LOW-Level Fehlern auf JSON-Ebene nur die Zeilen und Spaltennummer geliefert bekommen.
Allgemeine Hinweise
Wenn Sie eine Anfrage empfangen, haben Sie (derzeit) einen Zeitrahmen von 30 Sekunden, um eine Antwort zu schicken.
Bitte beachten Sie, dass in der Zeit zwischen dem TENIOS die Anfrage sendet und die Antwort empfängt, mit dem Anruf nichts gemacht wird. Sie sollten zusehen, dass Ihre Anwendung so schnell wie möglich auf Anfragen antwortet, damit keine unnötigen Verzögerungen entstehen.
Aus dem gleichen Grund, falls Sie mehrere Blöcke ausführen möchten, ist es am besten wenn Sie diese direkt nach der ersten Anfrage zurückgeben (falls Ihre Applikationslogik dieses erlaubt) und nicht jeden Block einzeln nach mehreren Anfragen zurückgeben.
Wenn Sie eine HTTPS-Antwort mit einem Code ungleich 200 zurückgeben, wird der Call Control API Block beendet.
Um den Block korrekt zu beenden sollten Sie immer eine Antwort mit dem HTTP Code 200, und dem Inhalt {„blocks“:[]} zurückliefern!