Hallo zusammen,
ich befinde mich zu den nachfolgenden Themen bereits im Austausch mit dem Support. Da es absehbar ist, dass diese Veränderungen/Probleme nicht rückgängig gemacht bzw. behoben werden, halte ich es für wichtig, dass man als Benutzer der API zumindest weiß, was sich verändert hat und wie man darauf reagieren sollte.
1) Unterschiedliche Schreibweise gleicher Attribute
Abhängig davon, ob, der Benutzer einen Telefonbucheintrag hat oder nicht, gibt der API endpoint /queue/{{team-name}}
unter phonebookentry
entweder displayname
oder displayName
zurück. Das Problem betrifft weitere Felder. Als Entwickler und Nutzer der API gibt es dafür zwei Lösungen:
a.) Man prüft auf beide bekannten Schreibweisen und nimmt das Attribute, das existiert. (Nicht empfohlen, da es weitere unbekannte Schreibweisen geben könnte)
b.) Man misstraut der Schreibweise der Attribute ausnahmslos und konvertiert diese zu lowercase, um sicherzustellen, dass die abgefragten Attribute immer gleich bezeichnet sind. (Empfohlen)
2.) Der CDR Endpoint gibt leere Felder nicht mehr zurück
Früher war es so, dass der Endpoint /cdr
immer das gleiche Datenmodell zurückgegeben hat und Attribute ohne Wert eben leer waren. Seit dem Update Anfang Dezember ist es jedoch so, dass viele Felder nicht mehr zurückgegeben werden. Das heißt, statt connected: 0
für einen Anruf, der nicht verbunden ist, fehlt das Attribute connected
nun vollständig. Das betrifft auch Attribute wie holdDuration
, srcInternal
, dstInternal
, etc. Als Entwickler und Nutzer der API ist das wichtig zu wissen, denn man darf sich nicht mehr darauf verlassen, dass ein Attribute im Payload existiert und muss diesem Attribute daher einen Standardwert geben, für den Fall, dass es nicht existiert. In PHP könntest dies z. B. so aussehen:
$connected = (int) ($cdrItem['connected'] ?? 0);
Hier durch wird sicher gestellt, dass connected immer die Anzahl der verbundenen Sekunden zurückgibt und auch immer eine Ganzzahl ist. Hierdurch kann im Code auf $connected > 0
geprüft werden, wenn man wissen möchte, ob der Anruf verbunden war.