Anruf HTTP GET Schnittstelle V2: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
= 📞 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:''' | |||
<code> | |||
http://[instance]-classic.infra-struktur.[eu|com]/api/calllist/index.php | |||
</code> | |||
=== 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>) | |||
|} | |||
=== Optionale Parameter === | |||
{| class="wikitable" | |||
! Parameter | |||
! 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>) | |||
|} | |||
== 2. Anruf aktualisieren == | |||
''' | '''Endpoint:''' | ||
<code> | |||
http://[instance]-classic.infra-struktur.[eu|com]/api/calllist/update.php | |||
</code> | |||
''' | === Pflichtparameter === | ||
{| class="wikitable" | |||
! Parameter | |||
! Beschreibung | |||
|- | |||
| isdnKey | |||
| Der ISDN-Key | |||
|- | |||
| number | |||
| Rufnummer des zu aktualisierenden Anrufs ('''muss URL-encodiert werden''') | |||
|} | |||
=== Optionale Parameter === | |||
{| class="wikitable" | |||
! Parameter | |||
! Beschreibung | |||
|- | |||
| id | |||
| ID des Anrufs (hat Vorrang vor <code>number</code>) | |||
|- | |||
| 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 | |||
|} | |||
== 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 === | ||
{| class="wikitable" | |||
! Parameter | |||
! Beschreibung | |||
|- | |||
| fileSourceRaw | |||
| Audiodatei im '''Binary-Format''' (nur via '''POST''' möglich, wegen Größe und Format) | |||
|} | |||
== 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) === | |||
<syntaxhighlight lang="bash"> | |||
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" | |||
</syntaxhighlight> | |||
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 === | |||
<syntaxhighlight lang="bash"> | |||
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" | |||
</syntaxhighlight> | |||
Hier wird neben der Audiodatei zusätzlich ein '''Anrufgrund''' gesetzt (reason) und ein Bearbeiter eingetragen (acceptedBy). | |||
=== 5.3 GET-Beispiel: Text-Update ohne Datei === | |||
<syntaxhighlight lang="bash"> | |||
curl "http://[instance]-classic.infra-struktur.eu/api/calllist/update.php?isdnKey=DEIN_ISDN_KEY&number=%2B492941247790&reason=Rückruf+gewünscht&acceptedBy=AB" | |||
</syntaxhighlight> | |||
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. | |||
Version vom 22. August 2025, 10:23 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)
|
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) |
Optionale Parameter
| Parameter | Beschreibung |
|---|---|
| id | ID des Anrufs (hat Vorrang vor number)
|
| 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 |
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) |
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)
<syntaxhighlight lang="bash"> 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"
</syntaxhighlight>
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
<syntaxhighlight lang="bash"> 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"
</syntaxhighlight>
Hier wird neben der Audiodatei zusätzlich ein Anrufgrund gesetzt (reason) und ein Bearbeiter eingetragen (acceptedBy).
5.3 GET-Beispiel: Text-Update ohne Datei
<syntaxhighlight lang="bash"> curl "http://[instance]-classic.infra-struktur.eu/api/calllist/update.php?isdnKey=DEIN_ISDN_KEY&number=%2B492941247790&reason=Rückruf+gewünscht&acceptedBy=AB" </syntaxhighlight>
Ergebnis:
- Der Anruf mit der Nummer
+492941247790wird aktualisiert. - Als Grund wird Rückruf gewünscht gespeichert.
- Der Anruf wird als angenommen durch Benutzer AB markiert.