Anruf HTTP GET Schnittstelle V2: Unterschied zwischen den Versionen

Aus infra-struktur AdminWiki 2.10
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
 
(22 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Neue Anruflisten API'''
= 📞 Anruf-API – Version 2 =


Adresse: http://[instance]-classic.infra-struktur.[eu|com]/api/calllist/index.php
Die '''Anruf-API''' dient dazu, Anrufe per Webhook in die CRM-Infrastruktur ''infra-struktur'' einzutragen und zu aktualisieren.
Die Schnittstelle kann per '''HTTP GET''' oder '''POST''' aufgerufen werden – '''GET hat Vorrang'''.


Übergabe per GET oder POST (GET hat Vorrang vor POST)
== 1. Anruf eintragen ==


'''Endpoint:'''
<code>http://[instance]-classic.infra-struktur.[eu|com]/api/calllist/index.php</code>


Folgende Werte müssen übergeben werden:
=== Pflichtparameter ===
{| class="wikitable"
! Parameter
! Beschreibung
|-
| isdnKey
| Der ISDN-Key
|-
| location
| Name eines in der Anrufliste konfigurierten Standortes
|-
| msn
| Name einer in der Anrufliste konfigurierten eingehenden Rufnummer/Nebenstelle
|-
| number
| Rufnummer des Anrufers ('''muss URL-encodiert werden''', z. B. <code>+492941247790</code> → <code>%2B492941247790</code>)
|}


isdnKey - Der ISDN-Key.
=== Optionale Parameter ===
location - Der Name eines in der Anrufliste konfigurierten Standortes.
{| class="wikitable"
msn - Der Name einer in der Anrufliste konfigurierten MSN.
! Parameter
number - Die Nummer des Anrufers.
! Beschreibung
|-
| reason
| Base64-codierter Grund des Anrufs
|-
| fileSource
| Base64-codierter Inhalt einer Datei
|-
| fileType
| Dateityp (Standard: <code>fax</code>)
|-
| mimeType
| MIME-Type (Standard: <code>application/download</code>)
|-
| timestamp
| Unix-Timestamp (Standard: Zeitpunkt des Aufrufs)
|-
| direction
| <code>"in"</code> oder <code>"out"</code> (Standard: <code>in</code>)
|-  
| duration
| Dauer in Minuten eines Anrufs.
|-  
| externalId
| Eine eigene ID des Telefonsystems über den ich später mit dem update Aufruf einen Eintrag exakt diesem Eintrag zuordnen kann.
|}


Es sollte beachtet werden, das z.b. die Nummer „+492941247790“ zur Übergabe als Parameter codiert werden muss, damit das führende + auf dem Server passend ausgewertet werden kann. (http://de.wikipedia.org/wiki/URL-Encoding)
=== Rückgabe/Response ===
{| class="wikitable"
! Parameter
! Beschreibung
|-
|Done XYZ
|Der Wert "Done" zeigt den erfolgreichen Eintrag an gefolgt von der vom System vergebenen ID. Über die kann der Anruf später weiter aktualisiert werden.
|}


== 2. Anruf aktualisieren ==


Folgende Werte können übergeben werden:
'''Endpoint:'''
<code>http://[instance]-classic.infra-struktur.[eu|com]/api/calllist/update.php</code>


reason - Der base64 codierte Grund eines Anrufes.
=== Pflichtparameter ===
fileSource - Der base64 codierte Inhalt einer Datei.
{| class="wikitable"
fileType - Der Typ einer Datei. Der Standardwert liegt auf „fax“.
! Parameter
mimeType - Der mimetype einer Datei. Der Standardwert liegt auf „application/download“.
! Beschreibung
timestamp - Ein Unixtimestamp mit der der Eintrag erzeugt werden soll. Der Standardwert liegt auf dem Zeitpunkt des Aufrufs.
|-
| isdnKey
| Der ISDN-Key
|-
| number
| Rufnummer des zu aktualisierenden Anrufs ('''muss URL-encodiert werden''') (Wird nicht gebraucht wenn eine externalId übergeben wird.)
|}


Es können folgende Fehlerwerte auftreten:
Mit der Rufnummer wird nach Anrufen in den letzten 60 Minuten mit der gleichen Rufnummer gesucht und der Anruf wird dann für den Grund verwendet.
1001 - MISSING_MANDATORY_REQUEST_PARAM_ISDNKEY
Meldung: „isdnKey“ request param is mandatory, provide it via GET or POST (if both are set, GET will be preferred)
1002 - MISSING_MANDATORY_REQUEST_PARAM_LOCATION
Meldung: „location“ request param is mandatory, provide it via GET or POST (if both are set, GET will be preferred)
1003 - MISSING_MANDATORY_REQUEST_PARAM_MSN
Meldung: „msn“ request param is mandatory, provide it via GET or POST (if both are set, GET will be preferred)
1004 - MISSING_MANDATORY_REQUEST_PARAM_NUMBER
Meldung: „number“ request param is mandatory, provide it via GET or POST (if both are set, GET will be preferred)


2001 - MISSING_MANDATORY_DATABASE_CONNECTION_PARAM_HOST
=== Optionale Parameter ===
Meldung: „host“ database connection param is mandatory, please contact the support
{| class="wikitable"
2002 - MISSING_MANDATORY_DATABASE_CONNECTION_PARAM_USERNAME
! Parameter
Meldung: „username“ database connection param is mandatory, please contact the support
! Beschreibung
2003 - MISSING_MANDATORY_DATABASE_CONNECTION_PARAM_PASSWORD
|-
Meldung: „password“ database connection param is mandatory, please contact the support
| AnrufID
2004 - MISSING_MANDATORY_DATABASE_CONNECTION_PARAM_DATABASE
| ID des Anrufs (hat Vorrang vor <code>number</code>)
Meldung: „database“ database connection param is mandatory, please contact the support
|-
| externalId
| wurde beim initialen Eintrag des Anrufs eine externalId übergeben kann das update damit genau auf den Eintrag gemünzt werden.
|-
| reason
| Grund (Base64 oder Klartext, bei GET zusätzlich URL-encodiert)
|-
| reasonAppend
| Ergänzung zum Grund (Base64 oder Klartext, bei GET zusätzlich URL-encodiert)
|-
| acceptedBy
| Benutzerkürzel für „angenommen durch“
|-
| callFor
| Benutzerkürzel für „Anruf für“
|-
| recall
| Angabe, ob ein Rückruf gewünscht ist als "ja" oder "nein"
|-
| ownerInitial
| Benutzerkürzel des internen Benutzers, der das Gespräch geführt hat
|-
| fileSourceOut
| Ausgehender Audiostream als binärer Datei-Upload; nur via POST mit <code>multipart/form-data</code>
|-
| fileSourceIn
| Eingehender Audiostream als binärer Datei-Upload; nur via POST mit <code>multipart/form-data</code>
|}


3001 - DATABASE_CONNECTION_CREATE
== 3. Sonderfall: OpenAI Whisper Integration 🎙️ ==
Meldung: Connection Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3101 - DATABASE_QUERY_ON_VALIDATE_ISDNKEY_IN_DB
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3102 - DATABASE_QUERY_ON_GET_LOCATIONID_BY_LOCATIONNAME
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
Meldung: No results found while trying to get the location id by location name
3103 - DATABASE_QUERY_ON_GET_LOCATION_CONFIGURATION
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
Meldung: No results found while trying to get the location configuration
3104 - DATABASE_QUERY_ON_GET_INTERNATIONAL_PREFIX_ID_BY_INTERNATIONAL_PREFIX
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
Meldung: No results found while trying to get the internationalPrefixId
3105 - DATABASE_QUERY_ON_IS_MSN_A_FAX_MSN_FOR_MSN_AND_LOCATIONID
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
Meldung: No results found while checking if the msn is a fax msn
3106 - DATABASE_QUERY_ON_CHECK_SIGNAL_TOLERANCE
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3107 - DATABASE_QUERY_ON_GET_LIST_ID_FOR_MSN_AND_LOCATION_ID
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
Meldung: No results found while trying to get the list id for msn and location id
3108 - DATABASE_QUERY_ON_GET_NUMBER_TO_NAME_ID_BY_NUMBER
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3109 - DATABASE_QUERY_ON_GET_MSN_ID_BY_MSN_AND_LOCATION_ID
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
Meldung: No results found while trying to get the msn id by msn and location id
3110 - DATABASE_QUERY_ON_INSERT_ENTRY
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3111 - DATABASE_QUERY_ON_CITY_NAME_BY_PREFIX_AND_INTERNATIONAL_PREFIX
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3112 - DATABASE_QUERY_ON_FORMAT_NUMBER_WITH_LOCATION
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3113 - DATABASE_QUERY_ON_INSERT_CALL_TO_CALLLIST
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3114 - DATABASE_QUERY_ON_INSERT_FILE
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3115 - DATABASE_QUERY_ON_SET_REASON
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]
3116 - DATABASE_QUERY_ON_GET_COUNTRY_NAME_FOR_NATIONAL_PREFIX_ID
Meldung: Query Error (MySQLi: [MySQLi Fehlernummer]) [MySQLi Fehlermeldung]


4001 - API_INVALID_ISDNKEY
Jede ''infra-struktur''-Instanz verfügt über einen lokalen Whisper-Server, der Audiodateien automatisch transkribiert.
Meldung: the provided isdn key „[isdnKey]“ is not valid
Die '''Transkription wird im Anruf gespeichert''', die Originaldatei bleibt zusätzlich im Anruf per Mediaplayer abspielbar.
4002 - API_NOT_VALIDATED
 
Meldung: you first need to validate your isdn key
=== Parameter ===
4101 - API_MINIMUM_NUMBER_LENGTH
{| class="wikitable"
Meldung: the number „[number]“ is below the required minimum number length of [minimumNumberLength]
! Parameter
4102 - API_NUMBER_IS_HIDDEN_SIGNAL
! Beschreibung
Meldung: the number „[number]“ is the hidden signal „[hiddenSignal]“
|-
4103 - API_CALL_IS_WITHIN_SIGNAL_TOLERANCE
| fileSourceRaw
Meldung: the call from the number „[number]“ is within the signal tolerance of [signalTolerance] seconds
| Audiodatei im '''Binary-Format''' (nur via '''POST''' möglich, wegen Größe und Format)
4104 - API_NO_CALLLIST_FOUND
|}
Meldung: no appropriate call list found for MSN „[msn]“ and location id [locationId]
 
=== 3.1 Gesprächszusammenfassung mit getrennten Audiostreams ===
 
Alternativ zu einer einzelnen Audiodatei können der eingehende und der ausgehende Audiostream eines Gesprächs getrennt übertragen werden.
 
Die beiden Audiodateien werden dem über die <code>externalId</code> identifizierten Anruf zugeordnet und zur automatischen Transkription und Erstellung einer '''Anrufzusammenfassung''' verarbeitet.
 
Der Aufruf ist aufgrund der binären Audiodateien ausschließlich per '''HTTP POST''' mit <code>multipart/form-data</code> möglich.
 
==== Parameter ====
 
{| class="wikitable"
! Parameter
! Beschreibung
|-
| externalId
| Eindeutige ID des Gesprächs aus dem Telefonsystem. Die ID muss bereits beim initialen Eintragen des Anrufs übergeben worden sein und ordnet die Audiodateien exakt dem zugehörigen Anruf zu.
|-
| ownerInitial
| Benutzerkürzel des internen Benutzers, der das Gespräch geführt hat, beispielsweise <code>CT</code>.
|-
| fileSourceOut
| Binäre Audiodatei mit dem '''ausgehenden Audiostream''' des Gesprächs. Die Datei muss als Datei-Upload per <code>multipart/form-data</code> übertragen werden.
|-
| fileSourceIn
| Binäre Audiodatei mit dem '''eingehenden Audiostream''' des Gesprächs. Die Datei muss als Datei-Upload per <code>multipart/form-data</code> übertragen werden.
|}
 
Die Parameter <code>fileSourceOut</code> und <code>fileSourceIn</code> ermöglichen eine getrennte Verarbeitung beider Gesprächsseiten. Dadurch kann der interne Benutzer über <code>ownerInitial</code> dem Gespräch zugeordnet und eine automatische Zusammenfassung des Telefonats erzeugt werden.
 
Mindestens die zur eindeutigen Zuordnung benötigten Parameter <code>isdnKey</code> und <code>externalId</code> müssen übergeben werden.
 
== 4. Fehlercodes ==
 
=== 4.1 Fehlende Parameter ===
{| class="wikitable"
! Code
! Beschreibung
|-
| 1001
| isdnKey fehlt
|-
| 1002
| location fehlt
|-
| 1003
| msn fehlt
|-
| 1004
| number fehlt
|}
 
=== 4.2 Datenbankverbindung ===
{| class="wikitable"
! Code
! Beschreibung
|-
| 2001
| host fehlt
|-
| 2002
| username fehlt
|-
| 2003
| password fehlt
|-
| 2004
| database fehlt
|-
| 3001
| Verbindungsfehler (MySQLi)
|}
 
=== 4.3 Datenbankabfragen ===
Fehler bei einzelnen Abfragen, z. B.:
* 3102 – kein Standort mit dem Namen gefunden
* 3105 – MSN ist keine Fax-MSN
* 3113 – Fehler beim Einfügen eines Anrufs in die Calllist
* 3115 – Fehler beim Setzen eines Grundes
 
(Alle Fehler mit MySQLi-Fehlernummer und Fehlermeldung.)
 
=== 4.4 API-Fehler ===
{| class="wikitable"
! Code
! Beschreibung
|-
| 4001
| Ungültiger ISDN-Key
|-
| 4002
| ISDN-Key wurde noch nicht validiert
|-
| 4101
| Rufnummer zu kurz
|-
| 4102
| Rufnummer ist ein „Hidden Signal“
|-
| 4103
| Anruf liegt innerhalb der Signaltoleranz
|-
| 4104
| Keine passende Anrufliste für MSN & Standort gefunden
|}
 
== 5. Beispiele ==
 
=== 5.1 POST-Beispiel: Audiodatei hochladen & transkribieren (Whisper) ===
<pre>
curl -X POST "http://[instance]-classic.infra-struktur.eu/api/calllist/update.php" \
  -F "isdnKey=DEIN_ISDN_KEY" \
  -F "number=%2B492941247790" \
  -F "fileSourceRaw=@anruf.mp3;type=audio/mpeg"
</pre>
 
Ergebnis:
* Die Datei ''anruf.mp3'' wird an den Anruf angehängt.
* Der Whisper-Server erzeugt eine '''Transkription''' und speichert sie im Anruf.
* Die Originaldatei ist zusätzlich im CRM über einen Mediaplayer abspielbar.
 
=== 5.2 POST-Beispiel: Audiodatei mit zusätzlichen Parametern ===
<pre>
curl -X POST "http://[instance]-classic.infra-struktur.eu/api/calllist/update.php" \
  -F "isdnKey=DEIN_ISDN_KEY" \
  -F "number=%2B492941247790" \
  -F "reason=Kundenrückruf" \
  -F "acceptedBy=AB" \
  -F "fileSourceRaw=@anruf.mp3;type=audio/mpeg"
</pre>
 
Hier wird neben der Audiodatei zusätzlich ein '''Anrufgrund''' gesetzt (reason) und ein Bearbeiter eingetragen (acceptedBy).
 
=== 5.3 GET-Beispiel: Text-Update ohne Datei ===
<pre>
curl "http://[instance]-classic.infra-struktur.eu/api/calllist/update.php?isdnKey=DEIN_ISDN_KEY&amp;number=%2B492941247790&amp;reason=Rückruf+gewünscht&amp;acceptedBy=AB"
</pre>
 
Ergebnis:
* Der Anruf mit der Nummer <code>+492941247790</code> wird aktualisiert.
* Als Grund wird ''Rückruf gewünscht'' gespeichert.
* Der Anruf wird als '''angenommen durch Benutzer AB''' markiert.
 
=== 5.4 POST-Beispiel: Getrennte Audiostreams hochladen und Anruf zusammenfassen ===
 
<pre>
curl -X POST "https://netzkultur-classic.infra-struktur.com/api/calllist/update.php" \
-H "Content-Type: multipart/form-data" \
-F "isdnKey=247790" \
-F "ownerInitial=CT" \
-F "externalId=21cf1ada-a93c-4436-b3c9-eb404c1b954c" \
-F "fileSourceOut=@/var/starface/module/instances/repo/5dd8302c-eb41-4a3d-8479-29755315f960/var/files/monitor/21cf1ada-a93c-4436-b3c9-eb404c1b954c_00492941272630_0049532134070-in.wav" \
-F "fileSourceIn=@/var/starface/module/instances/repo/5dd8302c-eb41-4a3d-8479-29755315f960/var/files/monitor/21cf1ada-a93c-4436-b3c9-eb404c1b954c_00492941272630_0049532134070-out.wav"
</pre>
 
'''Bedeutung der Parameter:'''
 
{| class="wikitable"
! Parameter
! Beispielwert
! Bedeutung
|-
| isdnKey
| <code>247790</code>
| ISDN-Key der ''infra-struktur''-Instanz
|-
| ownerInitial
| <code>CT</code>
| Kürzel des internen Benutzers, der das Gespräch geführt hat
|-
| externalId
| <code>21cf1ada-a93c-4436-b3c9-eb404c1b954c</code>
| Eindeutige Gesprächs-ID des Telefonsystems
|-
| fileSourceOut
| <code>@/pfad/zum/audiostream.wav</code>
| Ausgehender Audiostream als binärer Datei-Upload
|-
| fileSourceIn
| <code>@/pfad/zum/audiostream.wav</code>
| Eingehender Audiostream als binärer Datei-Upload
|}
 
'''Ergebnis:'''
 
* Der über <code>externalId</code> identifizierte Anruf wird aktualisiert.
* Der eingehende und der ausgehende Audiostream werden dem Anruf zugeordnet.
* Das Benutzerkürzel aus <code>ownerInitial</code> kennzeichnet den internen Gesprächsteilnehmer.
* Die Audiostreams werden automatisch verarbeitet.
* Im Anruf wird eine automatische Transkription beziehungsweise Anrufzusammenfassung gespeichert.
* Die zugehörigen Audiodateien bleiben beim Anruf verfügbar.
 
'''Hinweis:''' Die Zuordnung von <code>fileSourceOut</code> und <code>fileSourceIn</code> richtet sich nach der Perspektive beziehungsweise Exportlogik des angebundenen Telefonsystems. Bei der STARFACE-Integration kann die Bezeichnung innerhalb des Dateinamens von der Bezeichnung des API-Parameters abweichen. Maßgeblich ist daher die im Integrationsmodul konfigurierte Zuordnung.

Aktuelle Version vom 22. Oktober 2026, 13:43 Uhr

📞 Anruf-API – Version 2

Die Anruf-API dient dazu, Anrufe per Webhook in die CRM-Infrastruktur infra-struktur einzutragen und zu aktualisieren. Die Schnittstelle kann per HTTP GET oder POST aufgerufen werden – GET hat Vorrang.

1. Anruf eintragen

Endpoint: http://[instance]-classic.infra-struktur.[eu|com]/api/calllist/index.php

Pflichtparameter

Parameter Beschreibung
isdnKey Der ISDN-Key
location Name eines in der Anrufliste konfigurierten Standortes
msn Name einer in der Anrufliste konfigurierten eingehenden Rufnummer/Nebenstelle
number Rufnummer des Anrufers (muss URL-encodiert werden, z. B. +492941247790 → %2B492941247790)

Optionale Parameter

Parameter Beschreibung
reason Base64-codierter Grund des Anrufs
fileSource Base64-codierter Inhalt einer Datei
fileType Dateityp (Standard: fax)
mimeType MIME-Type (Standard: application/download)
timestamp Unix-Timestamp (Standard: Zeitpunkt des Aufrufs)
direction "in" oder "out" (Standard: in)
duration Dauer in Minuten eines Anrufs.
externalId Eine eigene ID des Telefonsystems über den ich später mit dem update Aufruf einen Eintrag exakt diesem Eintrag zuordnen kann.

Rückgabe/Response

Parameter Beschreibung
Done XYZ Der Wert "Done" zeigt den erfolgreichen Eintrag an gefolgt von der vom System vergebenen ID. Über die kann der Anruf später weiter aktualisiert werden.

2. Anruf aktualisieren

Endpoint: http://[instance]-classic.infra-struktur.[eu|com]/api/calllist/update.php

Pflichtparameter

Parameter Beschreibung
isdnKey Der ISDN-Key
number Rufnummer des zu aktualisierenden Anrufs (muss URL-encodiert werden) (Wird nicht gebraucht wenn eine externalId übergeben wird.)

Mit der Rufnummer wird nach Anrufen in den letzten 60 Minuten mit der gleichen Rufnummer gesucht und der Anruf wird dann für den Grund verwendet.

Optionale Parameter

Parameter Beschreibung
AnrufID ID des Anrufs (hat Vorrang vor number)
externalId wurde beim initialen Eintrag des Anrufs eine externalId übergeben kann das update damit genau auf den Eintrag gemünzt werden.
reason Grund (Base64 oder Klartext, bei GET zusätzlich URL-encodiert)
reasonAppend Ergänzung zum Grund (Base64 oder Klartext, bei GET zusätzlich URL-encodiert)
acceptedBy Benutzerkürzel für „angenommen durch“
callFor Benutzerkürzel für „Anruf für“
recall Angabe, ob ein Rückruf gewünscht ist als "ja" oder "nein"
ownerInitial Benutzerkürzel des internen Benutzers, der das Gespräch geführt hat
fileSourceOut Ausgehender Audiostream als binärer Datei-Upload; nur via POST mit multipart/form-data
fileSourceIn Eingehender Audiostream als binärer Datei-Upload; nur via POST mit multipart/form-data

3. Sonderfall: OpenAI Whisper Integration 🎙️

Jede infra-struktur-Instanz verfügt über einen lokalen Whisper-Server, der Audiodateien automatisch transkribiert. Die Transkription wird im Anruf gespeichert, die Originaldatei bleibt zusätzlich im Anruf per Mediaplayer abspielbar.

Parameter

Parameter Beschreibung
fileSourceRaw Audiodatei im Binary-Format (nur via POST möglich, wegen Größe und Format)

3.1 Gesprächszusammenfassung mit getrennten Audiostreams

Alternativ zu einer einzelnen Audiodatei können der eingehende und der ausgehende Audiostream eines Gesprächs getrennt übertragen werden.

Die beiden Audiodateien werden dem über die externalId identifizierten Anruf zugeordnet und zur automatischen Transkription und Erstellung einer Anrufzusammenfassung verarbeitet.

Der Aufruf ist aufgrund der binären Audiodateien ausschließlich per HTTP POST mit multipart/form-data möglich.

Parameter

Parameter Beschreibung
externalId Eindeutige ID des Gesprächs aus dem Telefonsystem. Die ID muss bereits beim initialen Eintragen des Anrufs übergeben worden sein und ordnet die Audiodateien exakt dem zugehörigen Anruf zu.
ownerInitial Benutzerkürzel des internen Benutzers, der das Gespräch geführt hat, beispielsweise CT.
fileSourceOut Binäre Audiodatei mit dem ausgehenden Audiostream des Gesprächs. Die Datei muss als Datei-Upload per multipart/form-data übertragen werden.
fileSourceIn Binäre Audiodatei mit dem eingehenden Audiostream des Gesprächs. Die Datei muss als Datei-Upload per multipart/form-data übertragen werden.

Die Parameter fileSourceOut und fileSourceIn ermöglichen eine getrennte Verarbeitung beider Gesprächsseiten. Dadurch kann der interne Benutzer über ownerInitial dem Gespräch zugeordnet und eine automatische Zusammenfassung des Telefonats erzeugt werden.

Mindestens die zur eindeutigen Zuordnung benötigten Parameter isdnKey und externalId müssen übergeben werden.

4. Fehlercodes

4.1 Fehlende Parameter

Code Beschreibung
1001 isdnKey fehlt
1002 location fehlt
1003 msn fehlt
1004 number fehlt

4.2 Datenbankverbindung

Code Beschreibung
2001 host fehlt
2002 username fehlt
2003 password fehlt
2004 database fehlt
3001 Verbindungsfehler (MySQLi)

4.3 Datenbankabfragen

Fehler bei einzelnen Abfragen, z. B.:

  • 3102 – kein Standort mit dem Namen gefunden
  • 3105 – MSN ist keine Fax-MSN
  • 3113 – Fehler beim Einfügen eines Anrufs in die Calllist
  • 3115 – Fehler beim Setzen eines Grundes

(Alle Fehler mit MySQLi-Fehlernummer und Fehlermeldung.)

4.4 API-Fehler

Code Beschreibung
4001 Ungültiger ISDN-Key
4002 ISDN-Key wurde noch nicht validiert
4101 Rufnummer zu kurz
4102 Rufnummer ist ein „Hidden Signal“
4103 Anruf liegt innerhalb der Signaltoleranz
4104 Keine passende Anrufliste für MSN & Standort gefunden

5. Beispiele

5.1 POST-Beispiel: Audiodatei hochladen & transkribieren (Whisper)

curl -X POST "http://[instance]-classic.infra-struktur.eu/api/calllist/update.php" \
  -F "isdnKey=DEIN_ISDN_KEY" \
  -F "number=%2B492941247790" \
  -F "fileSourceRaw=@anruf.mp3;type=audio/mpeg"

Ergebnis:

  • Die Datei anruf.mp3 wird an den Anruf angehängt.
  • Der Whisper-Server erzeugt eine Transkription und speichert sie im Anruf.
  • Die Originaldatei ist zusätzlich im CRM über einen Mediaplayer abspielbar.

5.2 POST-Beispiel: Audiodatei mit zusätzlichen Parametern

curl -X POST "http://[instance]-classic.infra-struktur.eu/api/calllist/update.php" \
  -F "isdnKey=DEIN_ISDN_KEY" \
  -F "number=%2B492941247790" \
  -F "reason=Kundenrückruf" \
  -F "acceptedBy=AB" \
  -F "fileSourceRaw=@anruf.mp3;type=audio/mpeg"

Hier wird neben der Audiodatei zusätzlich ein Anrufgrund gesetzt (reason) und ein Bearbeiter eingetragen (acceptedBy).

5.3 GET-Beispiel: Text-Update ohne Datei

curl "http://[instance]-classic.infra-struktur.eu/api/calllist/update.php?isdnKey=DEIN_ISDN_KEY&number=%2B492941247790&reason=Rückruf+gewünscht&acceptedBy=AB"

Ergebnis:

  • Der Anruf mit der Nummer +492941247790 wird aktualisiert.
  • Als Grund wird Rückruf gewünscht gespeichert.
  • Der Anruf wird als angenommen durch Benutzer AB markiert.

5.4 POST-Beispiel: Getrennte Audiostreams hochladen und Anruf zusammenfassen

curl -X POST "https://netzkultur-classic.infra-struktur.com/api/calllist/update.php" \
 -H "Content-Type: multipart/form-data" \
 -F "isdnKey=247790" \
 -F "ownerInitial=CT" \
 -F "externalId=21cf1ada-a93c-4436-b3c9-eb404c1b954c" \
 -F "fileSourceOut=@/var/starface/module/instances/repo/5dd8302c-eb41-4a3d-8479-29755315f960/var/files/monitor/21cf1ada-a93c-4436-b3c9-eb404c1b954c_00492941272630_0049532134070-in.wav" \
 -F "fileSourceIn=@/var/starface/module/instances/repo/5dd8302c-eb41-4a3d-8479-29755315f960/var/files/monitor/21cf1ada-a93c-4436-b3c9-eb404c1b954c_00492941272630_0049532134070-out.wav"

Bedeutung der Parameter:

Parameter Beispielwert Bedeutung
isdnKey 247790 ISDN-Key der infra-struktur-Instanz
ownerInitial CT Kürzel des internen Benutzers, der das Gespräch geführt hat
externalId 21cf1ada-a93c-4436-b3c9-eb404c1b954c Eindeutige Gesprächs-ID des Telefonsystems
fileSourceOut @/pfad/zum/audiostream.wav Ausgehender Audiostream als binärer Datei-Upload
fileSourceIn @/pfad/zum/audiostream.wav Eingehender Audiostream als binärer Datei-Upload

Ergebnis:

  • Der über externalId identifizierte Anruf wird aktualisiert.
  • Der eingehende und der ausgehende Audiostream werden dem Anruf zugeordnet.
  • Das Benutzerkürzel aus ownerInitial kennzeichnet den internen Gesprächsteilnehmer.
  • Die Audiostreams werden automatisch verarbeitet.
  • Im Anruf wird eine automatische Transkription beziehungsweise Anrufzusammenfassung gespeichert.
  • Die zugehörigen Audiodateien bleiben beim Anruf verfügbar.

Hinweis: Die Zuordnung von fileSourceOut und fileSourceIn richtet sich nach der Perspektive beziehungsweise Exportlogik des angebundenen Telefonsystems. Bei der STARFACE-Integration kann die Bezeichnung innerhalb des Dateinamens von der Bezeichnung des API-Parameters abweichen. Maßgeblich ist daher die im Integrationsmodul konfigurierte Zuordnung.