Dokumentation
Eine Seite, vier Spuren. Fangen Sie hier an, geben Sie die beiden mittleren an die Person am Telefon und an die Person weiter, die den Betrieb führt, und schicken Sie die letzte an die Person, die den Code schreibt.
Für den Anfang
Ihre Telefonanlage in fünf Minuten
Alles Folgende gibt es in Ihrem Konto bereits. Nichts davon braucht einen Installateur, den Besuch eines Technikers oder ein Gerät, das Sie kaufen müssten.
- Nummern und Nebenstellen haben Sie bereits. Sie entstehen mit Ihrem Konto, samt der SIP-Zugangsdaten, die jedes Gerät braucht. Eine Nebenstelle ist eine Person oder ein Arbeitsplatz; eine Nummer ist das, was die Außenwelt wählt.
- Richten Sie eine Nummer auf ein Ziel. Im Reiter Nummern legen Sie fest, was ein dort eingehender Anruf tun soll: eine Nebenstelle klingeln lassen, eine Gruppe klingeln lassen, ein Menü öffnen, in eine Warteschlange gehen oder Ihren Öffnungszeiten folgen.
- Nehmen Sie ihn im Browser an. Öffnen Sie den Reiter Telefon, erlauben Sie das Mikrofon, und der Reiter ist ein funktionierender Apparat. Rufen Sie den Echotest mit
*43an, und Sie hören sich selbst zurück. - Und danach Öffnungszeiten und Mailbox. Diese beiden verhindern, dass um sieben Uhr abends ein Anruf verloren geht — und es sind die zwei Dinge, die einer frisch eingerichteten Anlage am häufigsten fehlen.
Eilig? Es gibt fünf Startvorlagen — eine Praxis, eine Kanzlei, eine Werkstatt, ein Laden und ein Privatanschluss —, die Öffnungszeiten, eingehende Route und Mailbox für außerhalb der Zeiten in einer einzigen Anfrage anlegen. Sie überschreiben nie etwas, das Sie schon eingerichtet haben.
So kommen Sie in Ihr Panelüber die API
Das Panel liegt auf Ihrer VOICE-Seite und erscheint nur mit einer Sitzung. Diese Sitzung stellt Ihr Kundenbereich aus; hier wird nichts eingetippt.
| Schritt | Was es tut |
|---|---|
| 1 | Sie melden sich in Ihrem Kundenbereich auf elportaldelcliente.com an. |
| 2 | Sie wählen «Meine Telefonanlage verwalten» im Menü Ihres Kontos. Das fordert bei VOICE in Ihrem Namen eine Sitzung an und schickt Sie mit den Zugangsdaten im Adressfragment auf Ihre VOICE-Seite. |
| 3 | Das Panel ersetzt die Verkaufsseite. Die Zugangsdaten werden aus der Adresszeile gelöscht, bevor überhaupt etwas gezeichnet wird, und sie laufen von selbst ab. |
Für alle, die diesen Knopf bauen, hier der ganze Vertrag:
POST /inquilinos/:inquilino/sesiones # Systembereich: nur das Portal darf eine ausstellen
{ "minutos": 15 }
→ { "clave": "pbx_ses_…", "caduca": "…", "ambito": "sesion", "minutos_max": 60 }
/telefonanlage#t=<clave>&exp=<ISO>&v=<inquilino>
Die Zugangsdaten reisen im Fragment und nicht in der Query, und zwar mit Absicht: Ein Fragment wird nie an einen Server geschickt, landet also weder in einem Referer-Header noch in Zugriffsprotokollen noch bei einem Zwischenknoten unterwegs. Sie laufen in Minuten ab, sind gedeckelt und können keinen dauerhaften Schlüssel ausstellen.
Für alle, die ans Telefon gehen
Das Panel, Reiter für Reiterüber die API
16 Bereiche, dieselben 16 in allen acht Sprachen. Alles davon gibt es auch in der API.
| Reiter | Was es tut |
|---|---|
| Überblick | Wie es Ihrer Anlage gerade geht: Anrufe heute, angenommen, laufend, Ihre Spitze und wie erreichbar Ihre Apparate waren. |
| Meine Nummern | Ihre Nummern, und was jede davon tut, wenn sie klingelt. |
| Menüs | Sprachmenüs: die 1 für den Vertrieb, und im Vertrieb ein weiteres Menü. |
| Nebenstellen | Personen und Geräte, mit Regeln je Person: Rufumleitung aufs Handy, Weiterleitungen, Nicht stören, was gewählt werden darf, und der Pförtner. |
| Telefon | Das Telefon selbst: wählen, annehmen, weitergeben, parken und sehen, wer telefoniert. |
| Warteschlangen | Warteschlangen mit Position, gemessener Wartezeit, Rückruf, wer im Dienst ist und wer was bearbeitet. |
| Räume | Konferenzräume mit Schlüssel, und wer gerade drin ist. |
| Mailbox | Nachrichten mit Abschrift, Ansagen, PIN, Papierkorb und Größengrenze. |
| Verzeichnis | Das Namensverzeichnis, das Anrufer durch Buchstabieren auf der Tastatur erreichen. |
| Empfang | Die Vermittlung, geparkte Anrufe in Echtzeit, Wartungsfenster und die Code-Tabelle. |
| Filter | Sperrliste, Filter für unterdrückte Nummern, Hinweise auf zu hartnäckige Anrufer und alles dazu, wer Sie erreichen darf. |
| Zeiten | Öffnungszeiten, Feiertage und die Tag-Nacht-Umschaltung. |
| Musik | Die Wartemusik und die Stücke, die jeder Ablauf abspielt. |
| Anrufe | Jeder Anruf mit Nummer, Dauer, Weg und Aufzeichnung. |
| Leitungen | Gleichzeitige Leitungen: was garantiert ist, was Sie gerade leihen und Ihre Spitze. |
| Verbrauch | Was Sie in diesem Monat verbraucht haben, Tag für Tag. |
Das Telefon im Browserechter Anruf
Ein Browser-Tab ist ein Apparat. Nichts zu installieren, kein Tischtelefon zu kaufen, keine Nummer zu portieren: Es ist eine Nebenstelle Ihrer eigenen Anlage, angemeldet aus dem Browser.
- Es ist eine echte Nebenstelle. Der Browser meldet sich an Ihrer Anlage an wie ein Tischtelefon, und der Ton läuft über eine verschlüsselte Verbindung. Wer Ihre Nummer anruft, erreicht den Reiter, und der Reiter kann nach draußen telefonieren.
- Der Reiter muss offen bleiben. Ein geschlossener Reiter ist ein ausgestecktes Telefon. Das ist die ehrliche Grenze eines Browser-Telefons und der Grund, warum es ein Tischgerät ergänzt, statt es überall zu ersetzen.
- Sie sehen, wer telefoniert.echter Anruf Die Lampen Ihrer Kolleginnen und Kollegen laufen live mit — frei, klingelt, im Gespräch —, damit Sie schon vor der Weitergabe wissen, ob überhaupt jemand da ist, an den Sie weitergeben können.
- Sie können ein laufendes Gespräch auf ein anderes Gerät holen.noch ungetestet «Ich muss los und telefoniere gerade»: Das Gespräch wandert auf Ihr Handy, ohne aufzulegen. Es ist mit Absicht ein Knopf und kein Tastencode — wer ein Gespräch verschiebt, hat einen Bildschirm vor sich.
- Weitergeben, Parken und Aufzeichnen sind dieselben Codes wie an jedem Apparat. Sie werden gewählt, nicht geklickt. Was Sie am Browser-Telefon lernen, gilt also auch am Tischtelefon und am Handy.
Das Browser-Telefon zeichnet nie auf Ihrem Rechner auf. Aufgezeichnet wird in der Anlage, denn dort greifen die Regeln dazu, wen man aufzeichnen darf und wem man es sagen muss — siehe «Aufzeichnen, und das Gesetz».
Codes, die Sie am Apparat wählen
Wo es eine Konvention gibt, bleibt sie erhalten (*72 Umleitung, *78 Nicht stören, *97 Mailbox, *8 Heranholen, *69 wer gerade angerufen hat). Genau darin liegt der Sinn eines Tastencodes: Die Funktion steckt schon im Panel, und der Code sorgt dafür, dass jemand, der seit zwanzig Jahren *72 wählt, dem Panel glaubt.
Bei aufgelegtem Hörer gewählt
| Code | Was es tut | Geprüft |
|---|---|---|
*43 | Echotest. Er nimmt auf, was Sie sagen, und spielt es zurück — und kann sagen «bei mir kam nichts an». | noch ungetestet |
*44 | Dasselbe, aber verzögert: Er entlarvt die Wörter, die verloren gehen. | noch ungetestet |
*45 | Tastaturtest. Er nennt jede Taste, während Sie sie drücken. | noch ungetestet |
*46 | Der Zustand Ihrer Leitung: Anmeldung, Codec, Adresse und Laufzeit. | noch ungetestet |
*60 | Uhrzeit und Datum, richtig gesprochen. | Prüfstand |
*62 | Ihr Verbrauch in diesem Monat (Anrufe und Minuten; der Betrag erst mit aktiver Abrechnung). | über die API |
*69 | Wer Sie zuletzt angerufen hat, laut angesagt, verpasste Anrufe eingeschlossen — danach die 1 für den Rückruf. | noch ungetestet |
*72 | Bedingungslose Umleitung. Sie liest Ihnen die Nummer zurück. | über die API |
*73 | Hebt alle Umleitungen auf. | über die API |
*74 | Parallele Umleitung: Ihre Nebenstelle und die Nummer klingeln gleichzeitig. | über die API |
*75 | Umleitung, wenn Sie besetzt sind. | über die API |
*76 | Umleitung, wenn Sie nicht abnehmen. | über die API |
*78 | Nicht stören ein, laut bestätigt. | über die API |
*79 | Nicht stören aus. | über die API |
*80 | Meldet Sie in allen Ihren Warteschlangen zum Dienst an. | über die API |
*81 | Meldet Sie in allen Ihren Warteschlangen vom Dienst ab. | über die API |
*90 | Sperrt eine Nummer (nur # sperrt die des letzten Anrufs). | noch ungetestet |
*91 | Entsperrt. | noch ungetestet |
*97 | Ihre Mailbox, mit Ihrer PIN. | Prüfstand |
*98 | Nimmt Ihre Ansage auf. | Prüfstand |
*99 | Nimmt Ihren Namen auf — Verzeichnis und Konferenzraum nutzen ihn. | Prüfstand |
*8 | Holt den Anruf heran, der am Nebentisch klingelt. | über die API |
*66 | Modus: normal · Mittag · geschlossen · Feiertag · automatisch. | über die API |
*411 | Das Namensverzeichnis. | Prüfstand |
*57 | Legt eine Akte über den belästigenden Anruf an, den Sie gerade hatten. Die Aufzeichnung läuft nicht mehr ab, und Uhrzeit, Weg und Ton bleiben für eine Anzeige erhalten. Der Anrufer wird dadurch nicht gesperrt — das entscheiden Sie. | noch ungetestet |
*85 | Sagen Sie mir Bescheid, wenn diese Nebenstelle frei wird. | noch ungetestet |
*86 | Hebt das wieder auf. | noch ungetestet |
*82 | Hört bei einem Gespräch in Ihrer eigenen Firma mit. Keine der beiden Seiten hört Sie. | noch ungetestet |
*83 | Flüstern: Nur Ihr Kollege hört Sie, der Kunde nicht. | noch ungetestet |
*84 | In das Gespräch einsteigen: Beide Seiten hören Sie. | noch ungetestet |
*88 | Die Anrufe, die niemand zurückgerufen hat, laut angesagt — danach die 1 für den ältesten. | noch ungetestet |
*47 | Die Anlage erklärt sich selbst: Sie liest ihre eigenen Codes vor, 9 für den nächsten, 0 zum Beenden. | noch ungetestet |
70N | Holt den auf Platz N geparkten Anruf. | über die API |
Während eines Gesprächs gewählt
| Code | Was es tut | Geprüft |
|---|---|---|
*1 | Dieses Gespräch jetzt aufzeichnen. Beide Seiten werden darauf hingewiesen. | über die API |
*7 | Parken: Der Anrufer bekommt Musik, und der Platz wird laut angesagt. | über die API |
##<ext># | Blinde Weitergabe: durchstellen und auflegen. | echter Anruf |
#<ext># | Weitergeben, ohne die Art zu wählen. Die Anlage prüft, ob überhaupt jemand da ist, und gibt sonst blind weiter. | noch ungetestet |
*2<ext># | Begleitete Weitergabe: Sie sprechen erst mit dem Kollegen. | noch ungetestet |
In der Rückfrage einer begleiteten Weitergabe
| Code | Was es tut | Geprüft |
|---|---|---|
*1 | Schließt die Weitergabe ab. | noch ungetestet |
*0 | Bricht ab und geht zum Anrufer zurück. | noch ungetestet |
*3 | Setzt alle drei in dasselbe Gespräch. | noch ungetestet |
Im Konferenzraum
| Code | Was es tut | Geprüft |
|---|---|---|
*6 | Alle: eigenes Mikrofon stumm schalten und wieder öffnen. | über die API |
*7 | Alle: wie viele Personen im Raum sind. | über die API |
*9 | Alle: verlassen. | über die API |
*1 | Organisation: Raum schließen, ohne den Schlüssel zu ändern. | über die API |
*2 | Organisation: Raum wieder öffnen. | über die API |
*3 | Organisation: Aufzeichnung starten oder stoppen. | über die API |
Manche Codes bedeuten zwei Dinge, ohne sich in die Quere zu kommen: *1 heißt im normalen Gespräch «jetzt aufzeichnen», in der Rückfrage «Weitergabe abschließen» und im Konferenzraum «Raum schließen». Das sind verschiedene Zustände desselben Telefons, die verschiedener Code bedient.
Bevor Sie einem neuen Apparat trauen: Tischtelefone und Adapter verarbeiten ihre eigenen Sterncodes und geben sie nie weiter. Wenn Sie einen Code wählen und Stille und danach den Wählton hören, hat der Apparat ihn geschluckt und die Anlage hat nichts gesehen. Lassen Sie uns ein neues Modell gegen die heutige Liste prüfen, bevor Sie es ausrollen.
Die Mailbox von jedem Telefon ausPrüfstand
Wählen Sie *97, geben Sie Ihre PIN ein, und die ganze Mailbox ist da — ohne App, ohne Browser. Sie ist für den Inhaber gedacht, der von einem geliehenen Telefon anruft.
Hauptmenü
| Taste | Was es tut |
|---|---|
1 | Neue Nachrichten. |
2 | Aufbewahrte Nachrichten. |
4 | Ansagen und Ihr aufgenommener Name. |
5 | PIN ändern. |
0 | Hinaus zur Vermittlung. |
9 | Auflegen. |
Während eine Nachricht läuft
| Taste | Was es tut |
|---|---|
1 | Wiederholen. |
2 | Behalten. |
3 | Löschen. Danach innerhalb von fünf Sekunden die 8 für rückgängig. |
4 | Die Person zurückrufen. |
6 | Die nächste, diese bleibt neu. |
7 | An einen Kollegen weiterleiten, mit einer eigenen aufgenommenen Notiz davor. |
Ansagenmenü
| Taste | Was es tut |
|---|---|
1 | Die Hauptansage aufnehmen. |
2 | Ihren Namen aufnehmen. |
3 | Eine Urlaubsansage setzen. |
4 | Sie wieder entfernen. |
Den Anruf selbst annehmen
Eine Rufgruppe sagt «es soll an mehreren Stellen klingeln». Alles auf dieser Liste kann etwas, das eine Rufgruppe nicht kann.
- Warteschlangen.über die API Eine Warteschlange weiß, wie viele Leute davor sind und wie lange es üblicherweise dauert — also kann sie es sagen. Die Wartezeit wird aus Ihren eigenen jüngsten Anrufen gemessen, nie erfunden: Bei weniger als drei Messwerten sagt sie gar nichts. Ist niemand im Dienst, wird auch niemand in die Schleife gestellt.
- Rückruf aus der Warteschlange.über die API Wird nach einer Weile in der Schleife angeboten — und nicht angeboten, wenn der Anruf ohnehin gleich angenommen wird. Der Wunsch übersteht einen Neustart, denn wer ihn äußert, legt auf, und der Rückruf kommt vorn in die Reihe. Genau das war versprochen.
- Konferenzräume.über die API Ein Raum mit einer Nummer und zwei Schlüsseln: einer zum Hineinkommen, einer zum Leiten. Niemand braucht irgendwo ein Konto. Kommen und Gehen wird mit dem Namen angesagt, den jede Person selbst aufgenommen hat.
- Das Namensverzeichnis.Prüfstand Anrufer buchstabieren einen Namen auf der Tastatur und werden durchgestellt. Jedes Wort eines Namens wird einzeln erfasst, denn hier sind zwei Nachnamen normal, und wer nur den ersten durchsucht, findet die halbe Firma. Akzente und ñ werden angeglichen, «Muñoz» findet man also über 686.
- Die Null für die Vermittlung.über die API Vermutlich die allgemeinste Erwartung, die es an ein Telefon gibt: eine Person erreichen zu können. Die Null fällt in Stufen von Ihrer Vermittlung über die allgemeine Mailbox bis zu einer gesprochenen Auskunft — nie ein stummes Auflegen.
- Parken und Heranholen.über die API Parken Sie ein Gespräch, und es wartet mit Musik auf einem nummerierten Platz, während Sie an einen anderen Arbeitsplatz gehen. Jeder holt es zurück, indem er diesen Platz wählt. Das Telefon, das neben Ihnen klingelt, holen Sie mit
*8heran.
Für alle, die den Betrieb führen
Kanäle: Garantie, Leihe und Rückgabeüber die API
Das ist der Teil des Produkts, den eine harte Obergrenze nicht kann, und es lohnt sich, ihn vor der Tarifwahl zu verstehen.
- Garantiert. Die gleichzeitigen Gespräche, die Ihr Tarif verkauft. Sie passen immer, egal was in der Anlage los ist, und niemand kann sie Ihnen wegnehmen.
- Geliehen. Über Ihrer Garantie nutzen Sie, was die Anlage frei hat. An den meisten Tagen sind Sie hier, und es kostet nichts extra.
- Die Reserve. Ein Polster an Kanälen, das niemandem geliehen wird, damit jeder jederzeit seine eigene Garantie erreichen kann.
- Die Rückgabe. Wenn die Anlage unter Druck steht, können geliehene Gespräche zurückgegeben werden, um die Garantie eines anderen zu schützen. Das gilt nur für Konten, die es erlaubt haben, nie für ein Gespräch innerhalb einer Garantie, nie für einen Notruf und nie stillschweigend: Die Anlage spricht, bevor sie freigibt.
- Sie lässt sich nicht überbuchen. Die Summe aller Garantien plus Reserve muss hineinpassen. Die Einrichtung prüft das und lehnt einen Tarif ab, der nicht hineinpasst — genau das gibt dem Wort «garantiert» seine Bedeutung.
- Und man sieht, wann es gezwickt hat. Überlast wird als einzelne Vorfälle mit Uhrzeit gemeldet, nicht als Monatssumme. «Zwölf Abweisungen in dreißig Tagen» liest sich wie Rauschen; «letzten Dienstag zwischen zehn und elf hörten fünf Leute besetzt» ist etwas, worauf man reagieren kann.
Was passiert, wenn etwas kaputtgeht
Eine Telefonanlage wird an dem Tag beurteilt, an dem der Strom ausfällt, nicht an dem Tag, an dem alles läuft.
- Mehr als ein Weg nach draußen. Die Anlage erreicht die Außenwelt über mehrere unabhängige Verbindungen und wählt selbst zwischen ihnen. Sie richten das nicht ein und sehen es nicht passieren.
- «Funktioniert» wird am Richtigen gemessen. Eine Verbindung kommt nur infrage, wenn sie sowohl das Internet als auch das Telefonnetz erreicht. Nur das Erste zu prüfen ist der Weg, auf dem eine Anlage ohne Leitung dasteht, während alle Lampen grün sind.
- Sie kommt nach einem Stromausfall von allein zurück. Wenn der Strom zurückkehrt, starten Anlage und Netzwerktechnik gleichzeitig und nicht immer in der richtigen Reihenfolge. Statt sich auf diese Reihenfolge zu verlassen, vergleicht die Anlage laufend, was sie tatsächlich hat, mit dem, was sie haben sollte, und repariert sich selbst — mit einer Obergrenze für die Versuche, damit eine echte Störung gemeldet wird, statt in einer Schleife zu enden.
- Sie trennt kein Gespräch, um sich zu reparieren. Jede Reparatur, die Gespräche unterbrechen würde, wartet, bis keines mehr läuft.
Aufzeichnungen und Mailbox-Nachrichten liegen außerhalb der Anlage und überleben damit die Maschine selbst.
Tarife und Minuten
5 Tarife, von $100 bis $300 im Jahr, und eine Nummer je Lizenz. Die eingehende Minute auf einer costa-ricanischen Nummer kostet $0.00.
| Tarif | Gleichzeitig, bis | Davon garantiert | Nebenstellen | Speicherung (Tage) | Pro Jahr |
|---|---|---|---|---|---|
| VOICE I | 3 | 1 | 3 | 3 | $100 |
| VOICE II | 4 | 2 | 4 | 4 | $150 |
| VOICE III | 6 | 3 | 6 | 6 | $200 |
| VOICE IV | 8 | 4 | 8 | 8 | $250 |
| VOICE V | 10 | 5 | Ohne Limit | 28 | $300 |
Minuten
| Ziel | Pro Minute |
|---|---|
| Eingehende Anrufe | $0.00 |
| Costa Rica · Festnetz | $0.03 |
| Costa Rica · Mobil | $0.08 |
| Mittelamerika | $0.45 |
| Karibik | $0.55 |
| Rest der Welt | $2.30 |
Preise in US-Dollar, Steuern inklusive. Mobilfunkgespräche rechnet unser Netzbetreiber sekundengenau ab. Jede Lizenz enthält 1 Nummer; zusätzliche Nummern teilen sich dieselbe Anlage, dieselben Abläufe und dasselbe Panel.
Aufzeichnen, und das Gesetzüber die API
Aufgezeichneter Ton ist die Stimme anderer Menschen. Das costa-ricanische Gesetz 8968 regelt das, und der Entwurf folgt daraus — nicht dem, was bequem wäre.
- Sie entscheiden, was aufgezeichnet wird.über die API Alles, oder nur bestimmte Nebenstellen, oder nur Anrufe auf einer bestimmten Nummer. Oder nichts, was eine legitime Antwort ist.
- Die Aufbewahrung kommt mit Ihrem Tarif. Aufzeichnungen werden automatisch gelöscht, wenn ihre Zeit um ist: nach der Frist des Tarifs, oder nach 90 Tagen bei denen, die während eines Anrufs angefordert wurden (mit
*1), und denen aus einem Konferenzraum. Die einzige Ausnahme ist eine Aufzeichnung, die an einer Akte über einen belästigenden Anruf hängt: Sie läuft nicht mehr ab, bis Sie die Akte schließen — und das Schließen setzt eine normale Frist, nie ein «jetzt sofort löschen». - Eine zu teilen heißt nicht, Zugang zu geben. Ein signierter Link spielt genau eine Aufzeichnung ab, läuft von selbst ab und lässt sich widerrufen. Die Person, der Sie ihn schicken, sieht Ihr Konto nie.
- Jedes Abhören wird protokolliert. Wer welche Aufzeichnung wann abgespielt hat. Es ist die Stimme eines anderen Menschen: zu wissen, wer sie gehört hat, gehört zum Aufbewahren dazu.
- Sie lassen sich einordnen. Kunde, Interessent oder intern. Es gibt mit Absicht keine Voreinstellung: nicht eingeordnet ist ehrlich, und eine Einordnung, die die Maschine geraten hat, lässt sich später nicht mehr von einer unterscheiden, die ein Mensch gewählt hat.
Beide Seiten werden immer informiert. Wer die Anlage bittet aufzuzeichnen, bekommt die Ansagepflicht gleich mit — die beiden lassen sich nicht trennen, denn genau beim Trennen wird jemand aufgezeichnet, ohne es zu wissen. Im Konferenzraum wird die Ansage jeder Person beim Eintreten gemacht.
Grenzen, Schutz und Rückgängig
Das, was entscheidet, wie schlimm ein schlechter Tag wird: gestohlene Zugangsdaten, ein Fehler in der Wegeführung, eine Nummer, die nicht aufhört anzurufen.
- Eine Ausgabengrenze, täglich und monatlich.Prüfstand Das ist es, was gestohlene Zugangsdaten daran hindert, Geld zu kosten. Ist die Grenze erreicht, hören die Gespräche auf.
- Was jede Nebenstelle wählen darf.über die API Nur intern, national, Mobilfunk oder alles. Das Telefon im Lager hat keinen Grund, eine Mehrwertnummer anrufen zu können. Notrufe sind davon nie betroffen.
- Der Preis, bevor Sie wählen.über die API Fragen Sie, was eine bestimmte Nummer kosten würde, und die Antwort berechnet dieselbe Maschinerie, die das Gespräch später auch führt — nicht eine Preisliste, die vielleicht gar nicht die angewandte ist.
- Ein Betrugsalarm, der auf Verhalten schaut.noch ungetestet Ungewöhnliches Tempo, ein Land, in das Sie nie telefonieren, eine Uhrzeit, zu der niemand arbeitet. Er warnt und trennt nicht: Ein Fehlalarm ist hier kein lästiger Hinweis, sondern ein Gespräch, das nicht stattgefunden hat. Er braucht zwei Signale, bevor er etwas sagt, denn einen Alarm, der täglich losgeht, lernt man zu ignorieren.
- Wer zu hartnäckig anruft, wird markiert.noch ungetestet Dieselbe Nummer fünfmal in zwei Minuten ist kein hartnäckiger Kunde, sondern ein Automat. Ab Werk wird nur gewarnt; automatisch sperren ist ein Häkchen, das Sie setzen — denn ein Fehlalarm kostet Sie einen Kunden, der nie wieder anrufen kann.
- Eine Akte für einen belästigenden Anruf.noch ungetestet Uhrzeit, Weg und Ton, zusammen aufbewahrt für eine Anzeige. Eine Akte zu eröffnen sperrt den Anrufer nicht: Jeder neue Anruf ist ein weiterer Beleg, und das entscheiden Sie, nicht wir.
- Wie erreichbar Ihre Apparate waren.über die API Nicht unsere Verfügbarkeit — Ihre. Und es wird immer mit ausgewiesen, wie viel des Zeitraums tatsächlich gemessen wurde, denn ein Prozentwert, der die unbeobachteten Stunden stillschweigend weglässt, irrt sich immer in die bequeme Richtung.
- Was sich geändert hat, wer es geändert hat, und Rückgängig.über die API «Gestern ging es noch» ist eine Frage mit Antwort. Jede Änderung an der Konfiguration wird festgehalten und lässt sich zurücknehmen, und das Zurücknehmen prüft, ob inzwischen jemand anderes diese Felder angefasst hat, statt sie stillschweigend zu überschreiben.
Was abgeschaltet ist, und warum
Ein Handbuch, das nur beschreibt, was funktioniert, zwingt Sie, den Rest allein herauszufinden — und man findet ihn immer im schlechtesten Moment. Diese Liste erzeugt der Schalter selbst; sie kann also nichts als abgeschaltet beschreiben, das längst eingeschaltet ist.
| Was es tut | Warum |
|---|---|
| Mailbox per E-Mail | Der Ton als Anhang, ohne anzurufen. Dafür braucht es Zugangsdaten für das Postfach, und die gibt es noch nicht. |
| Automatische Minutenabrechnung | Die Messung funktioniert, jedes Gespräch wird gemessen; nicht eingeschaltet ist der Abzug von einem Guthaben. Bis dahin werden die Minuten in Rechnung gestellt. |
| Ausweichadresse für die Apparate | Damit Telefone zwischen den beiden Eingängen der Anlage von selbst umschalten. Dafür braucht es Zugangsdaten für die Domain mit Schreibrecht; die vorhandenen lesen nur. |
| Eingehendes Fax | Den Ton zu erkennen und zu melden ist gebaut und mit Absicht abgeschaltet: Die Fax-Erkennung hört bei jedem eingehenden Anruf mit, und ein Fehlalarm würde ein echtes Gespräch abwerfen. Sie bleibt aus, bis es ein echtes Fax gibt, an dem sich das messen lässt. |
Für alle, die es anbinden
Die APIüber die API
Das Panel ist einer der Clients dieser API. Alles, was Sie von Hand ändern, lässt sich auch per Programm ändern — mit einem Schlüssel, der Ihrem Konto gehört.
curl -H "authorization: Bearer <clave>" \
https://api.voice.forhosting.com/inquilinos/<cuenta>/numeros
Geltungsbereiche
| Bereich | Was es tut |
|---|---|
sistema | Einrichtung, über Konten hinweg. So einen bekommen Sie nicht ausgestellt. |
inquilino | Ihr Konto, lesen und schreiben. Das ist der Schlüssel, mit dem Sie anbinden. |
lectura | Ihr Konto, nur GET. Für Dashboards, die nichts ändern können sollen. |
sesion | Dieselbe Reichweite wie Ihr Kontoschlüssel, läuft aber in Minuten ab. Das nutzt das Panel, damit ein Browser nie dauerhafte Zugangsdaten hält. |
dispositivo | Ein einziges Gerät an einer einzigen Nebenstelle, und er läuft in Minuten ab. Diesen Schlüssel trägt die Telefon-App: Er erreicht nur, was ein Telefon braucht, und nur für die eigene Nebenstelle. |
Wenn etwas schiefgeht
| Code | Was es tut |
|---|---|
400 | Die Anfrage ist fehlerhaft, oder ein Wert ist keiner, den wir annehmen. Die Meldung sagt, welcher. |
401 | Kein Schlüssel, ein unbekannter Schlüssel, oder eine bereits abgelaufene Sitzung. |
403 | Der Schlüssel ist echt, darf das aber nicht: Daten eines anderen Kontos, eine Route nur für die Einrichtung, oder ein Schreibzugriff mit einem Nur-Lese-Schlüssel. |
404 | So etwas gibt es in Ihrem Konto nicht. |
405 | Diesen Pfad gibt es, diese Methode nicht. Mit Absicht von 404 unterschieden — das spart eine Stunde. |
503 · 504 | Die Anlage war nicht erreichbar oder hat nicht rechtzeitig geantwortet. Es wird nie mit «Sie haben nichts» geantwortet: nicht nachsehen zu können ist nicht dasselbe, wie dass nichts da wäre. |
Alles, was die API antworten kann, wenn sie ablehnt
Das sind die genauen Zeichenketten, die die API im Feld error zurückgibt, gelesen aus dem Quelltext der Anlage. Sie kommen auf Spanisch heraus und stehen hier absichtlich unverändert: Erkennen müssen Sie, was ankommt, nicht eine Übersetzung davon. Ein … markiert die Stelle, an der ein Wert eingesetzt wird.
Jeder Fehler trägt einen stabilen Code. Werten Sie codigo aus, nicht die Meldung. Er ist immer da: Was keinen eigenen deklariert, bekommt den seiner Klasse, abgeleitet aus dem HTTP-Status. Der Text in error ist für Menschen gedacht und kann umformuliert werden; der Code nicht.
{ "error": "…", "codigo": "de_otra_cuenta" }
| Code | HTTP | Wann Sie ihn bekommen |
|---|---|---|
mala_peticion | 400 | Die Anfrage ist fehlerhaft, oder ein Wert gehört nicht zu den akzeptierten. Die Meldung sagt, welcher. |
no_autorizado | 401 | Kein Schlüssel, ein unbekannter, oder eine abgelaufene Sitzung. |
prohibido | 403 | Der Schlüssel ist gültig, darf das aber nicht. |
no_existe | 404 | Es gibt nichts, worauf sich das anwenden ließe. |
metodo_no_permitido | 405 | Den Pfad gibt es, dieses Verb nicht. Absichtlich von einem fehlenden Pfad unterschieden — das spart eine Stunde. |
conflicto | 409 | Der Zustand des Kontos lässt das gerade nicht zu. |
precondicion_fallida | 412 | Die Bedingung Ihrer Anfrage (If-Match) gilt nicht mehr: Was Sie ändern wollten, hat sich seit dem Lesen geändert. |
ambito_insuficiente | Ihr Schlüssel reicht nicht bis zu dieser Route. Die Bereitstellung gehört dem Portal, nicht Ihnen. | |
audio_ilegible | Das Audio ist angekommen, ließ sich aber nicht lesen: Es ist beschädigt oder abgeschnitten. Die Meldung nennt den Grund. | |
audio_no_valido | Eine Audiokette ist ungültig: Sie nimmt nur Audios der Anlage selbst an, ohne Pfade, höchstens 1000 Zeichen und ohne Zeilenumbruch. Die Meldung nennt die abgelehnten Teile. | |
cambio_de_sistema | Diese Änderung hat Ihr Anbieter vorgenommen, oder sie betrifft etwas, das nur er ändert: Ihr Schlüssel kann sie nicht rückgängig machen. | |
canales_por_troncal | Die bei der Bereitstellung gesendete Kanalaufteilung kann nicht angenommen werden, und nichts davon wird gespeichert. Das Detail sagt, was nicht stimmt. Das betrifft die Bereitstellung, nicht Ihr Konto. | |
cedula_mal_formada | Die Ausweisnummer hat nicht die Form ihres Typs: eine cédula física hat 9 Ziffern, eine cédula jurídica 10. | |
central_no_disponible | Die Anlage ist gerade nicht erreichbar. Versuchen Sie es mit wachsender Wartezeit erneut: an Ihrer Anfrage ist nichts falsch. | |
central_suspendida | Die Telefonanlage ist gesperrt: Solange sie gesperrt ist, werden keine neuen Telefone freigegeben. | |
clase_de_servicio | Dieser Wert ist keine der Anrufberechtigungen, die eine Nebenstelle haben kann. | |
clave_sin_cuenta | Der Schlüssel ist keinem Konto zugeordnet. | |
consulta_no_valida | Ein Abfrageparameter hat einen Wert, den wir nicht annehmen, etwa ein Ja/Nein, das weder 1/0 noch true/false ist. | |
cuenta_distinta | Dieser Kauf gehört zu einem anderen Portalkonto. Ein Kauf wechselt nicht den Besitzer. | |
cuenta_invalida | Das Portalkonto fehlt oder hat nicht die erwartete Form. | |
cuenta_portal_en_uso | Dieses Portalkonto ist bereits an eine andere Lizenz oder Anlage gebunden. Jede hat ihr eigenes. | |
cuenta_suspendida | Ihr Konto ist gesperrt: Sie können lesen, aber nichts ändern, bis es wieder aktiviert ist. | |
cupo_lleno | Der Tarif erlaubt keine weiteren Nebenstellen. Geben Sie eine frei oder wechseln Sie in einen größeren Tarif. | |
cursor_no_valido | Der Paginierungs-Cursor gilt hier nicht: Er stammt von einer anderen Anlage, einer anderen Liste oder anderen Filtern. Fordern Sie die erste Seite mit denselben Filtern an. | |
de_otra_cuenta | Es gehört zu einem anderen Konto — oder existiert in Ihrem nicht. Beide Fälle teilen sich absichtlich einen Code: sie zu unterscheiden würde verraten, ob es existiert. | |
demasiado_grande | Das Audio überschreitet die Höchstgröße (HTTP 413). Die Meldung nennt die Grenze. | |
duracion | Die Ansage ist zu kurz oder zu lang. Die Meldung nennt ihre Dauer und die Grenze. | |
es_titular | Das ist die Inhaber-Installation: Sie wird weder entzogen noch gesperrt; gesperrt wird die Anlage. | |
estado_invalido | Dieser Status gehört nicht zu den akzeptierten. Die Meldung nennt die gültigen. | |
extension_ajena | Diese Nebenstelle gehört nicht zu Ihrer Telefonanlage. | |
extension_de_la_tienda | Diese Nebenstelle ist ein über den Store freigegebener Platz (eine Lizenz, der Inhaber oder ein Mitglied): Sie wird nicht hier gelöscht, sondern in der App entzogen. | |
falta_confirmar | Das Löschen eines Kontos lässt sich nicht rückgängig machen: Die Anfrage muss confirmar: 'suprimir' enthalten. | |
falta_credencial | Sie haben gar keinen Schlüssel geschickt. | |
formato_no_soportado | Das Audio hat kein unterstütztes Format (HTTP 415): AAC in MP4 (m4a), MP3, WAV oder Ogg. | |
garantia_no_cabe | Für das Angefragte ist keine garantierte Kapazität mehr frei. Das ist keine Störung: Genau das verhindert, dass derselbe Kanal zweimal verkauft wird. Die Meldung sagt, wie viel noch frei ist. | |
identidad_ajena | Sie können eine Erlaubnis nur mit einer Nummer Ihres eigenen Kontos anfragen. | |
identidad_de_otro | Diese Ausweisnummer ist bereits einer anderen Lizenz zugeordnet. Zum Verschieben senden Sie mover: true. | |
instalacion_invalida | Die Kennung der Installation hat nicht die erwartete Form: 8 bis 128 Buchstaben, Ziffern, Punkt, Bindestrich, Doppelpunkt oder Unterstrich. | |
instalacion_sin_licencia | Diese Installation ist weder die dieser Lizenz noch die dieses Platzes. Jede Lizenz und jeder Platz einer im Store gekauften Anlage dient einem einzigen Telefon. | |
licencia_solo_app | Eine App-Lizenz hat nur das Telefon ihrer eigenen Installation: Weitere Geräte sind nicht möglich. | |
mensaje_con_enlace | Die Nachricht einer Erlaubnisanfrage darf keine Links enthalten. | |
mensaje_largo | Die Nachricht einer Erlaubnisanfrage hat höchstens 140 Zeichen. | |
misma_casa | Diese Nummer gehört zu Ihrem eigenen Konto: Zwischen Ihren eigenen Leitungen ist keine Erlaubnis nötig. | |
nacional | Ein nationaler Feiertag lässt sich weder ändern noch löschen. Um an diesem Tag zu öffnen, legen Sie eine Ausnahme mit cerrado:false an. | |
no_editable | Dieses Feld ändert Ihr Anbieter, nicht Sie von hier aus. | |
no_es_de_la_tienda | Dieses Konto wurde nicht im Shop gekauft: Seine Kündigung folgt einem anderen Verfahren. | |
no_es_de_tienda | Diese Anlage wurde nicht im Store gekauft: Sie wird über das Portal verwaltet. | |
no_existe | Es gibt nichts, worauf sich das anwenden ließe. | |
no_pude_mirar | Blindheit, keine Diagnose: Die Telefonanlage war nicht zu befragen (ARI ausgefallen, die Datenbank, der Container). Das heißt nicht, dass alles in Ordnung ist — es heißt, dass es niemand weiß. | |
permiso_no_existe | Diese Nummer hat keine Erlaubnis, Sie anzurufen: Es gibt nichts zu widerrufen. | |
plan_desconocido | Dieser Tarif wird nicht verkauft. Gültig sind die veröffentlichten. | |
plan_legado | Diese Anlage behält den Tarif, mit dem sie verkauft wurde. Der Wechsel auf die aktuelle Staffel muss ausdrücklich verlangt werden. | |
prueba_distinta | Eine Testanlage wird nicht zu einer echten und eine echte nicht zu einer Testanlage. Ein echter Kauf hat seine eigene Referenz. | |
reconfigurando | Die Anlage wechselt gerade die Leitung und sagt das selbst an. Es dauert Sekunden und ist richtig so, keine Störung. Das Fenster verfällt nach 3 Minuten von allein, damit ein vergessener Hinweis nicht den echten Alarm stummschaltet. | |
ref_de_otro_tipo | Diese Referenz gehört zu einer Lizenz und wurde als Anlage angefragt, oder umgekehrt. | |
ref_invalida | Die Portal-Referenz hat nicht die erwartete Form. | |
sesion_vieja_para_gastar | Die Sitzung ist älter als 15 Minuten. Für einen Vorgang, der Guthaben verbraucht, etwa einen Anruf tätigen oder zusammenführen, fordern Sie eine neue Sitzung an. | |
sin_numero_voice | Eine VOICE-Nummer konnte gerade nicht vergeben werden. Versuchen Sie es in ein paar Sekunden erneut. | |
sin_registrar | Die echte Störung: Der Betreiber hat uns nicht registriert, und darüber kommen keine Anrufe herein. Dafür lohnt es sich, jemanden zu wecken. | |
solicitud_cerrada | Diese Erlaubnisanfrage ist nicht mehr offen: Sie wurde genehmigt, abgelehnt, zurückgezogen oder ist abgelaufen. | |
solicitud_no_existe | Diese Erlaubnisanfrage existiert nicht oder gehört nicht zu Ihrem Konto. | |
solo_la_titular | In einer Anlage, die mehrere Personen teilen, entscheidet das die Inhaberin; ein Mitglied kann es nicht. | |
solo_lectura | Ihr Schlüssel ist nur lesend, und dies würde schreiben. | |
tope_aparatos | Diese Nebenstelle hat bereits alle zulässigen Geräte. Trennen Sie eines, bevor Sie ein weiteres hinzufügen. | |
tunel_retirado | Diese Adresse gehörte zum Tunnel, der am 25.09.2026 stillgelegt wurde: Die API geht direkt zur Anlage. Rufen Sie die normale Route auf; den Zustand des Weges zeigt /_directo/salud. | |
url_no_permitida | Diese Adresse ist für einen Webhook nicht zulässig: Sie muss https und öffentlich sein, nie in einem privaten Netz. | |
version_distinta | Diese Einstellung hat sich seit dem Lesen geändert. Lesen Sie sie erneut, entscheiden Sie anhand des aktuellen Stands und schreiben Sie mit der neuen Version; das Detail enthält aktuelle Version und aktuellen Wert. | |
ya_existe | Es gibt bereits etwas mit diesem Namen oder dieser Nummer. Versuchen Sie es mit einer anderen, nicht mit derselben Nutzlast. |
| Code | Wie viele | Meldung |
|---|---|---|
400 | 218 |
|
401 | 1 |
|
403 | 16 |
|
404 | 58 |
|
409 | 43 |
|
336 verschiedene Meldungen an 407 Stellen im Quelltext der Anlage. Bei jedem Build abgeleitet: Was sich dort ändert, ändert sich hier.
Heute gibt es fast keine Ratenbegrenzung. Die einzige ist eine Wartezeit von ein paar Sekunden zwischen zwei Versuchen, das Telefon im Browser zu öffnen. Ein allgemeines Kontingent gibt es nicht, und das sagen wir lieber, als Sie es entdecken zu lassen, nachdem Sie auf einer Annahme gebaut haben. Bleiben Sie vernünftig, und wenn Sie etwas Schweres planen, sagen Sie uns vorher Bescheid — dann messen wir es mit Ihnen und nicht hinter Ihnen her.
Was erreichbar ist
| Bereich | Endpunkte | Beispiele |
|---|---|---|
| Mailboxen | 15 | GET /buzones POST /buzones DELETE /buzones/:buz |
| Nebenstellen | 13 | GET /extensiones POST /extensiones DELETE /extensiones/:ext |
| Wer Sie aus dem Netz kostenlos anrufen darf | 13 | GET /red/bloqueos DELETE /red/bloqueos/:numero PUT /red/bloqueos/:numero |
| Warteschlangen | 12 | GET /colas POST /colas DELETE /colas/:cola |
| Wartemusik | 12 | GET /discos POST /discos DELETE /discos/:disco |
| Aufzeichnungen | 9 | GET /grabaciones PUT /grabaciones/:grabacion/categoria DELETE /grabaciones/:grb |
| Rufgruppen | 8 | GET /grupos POST /grupos DELETE /grupos/:grp |
| Sprachmenüs | 8 | GET /ivrs POST /ivrs DELETE /ivrs/:ivr |
| Bereitschaftspläne | 8 | GET /turnos POST /turnos DELETE /turnos/:turno |
| Konferenzräume | 7 | GET /conferencias POST /conferencias DELETE /conferencias/:sala |
| Öffnungszeiten | 7 | GET /horarios POST /horarios DELETE /horarios/:hor |
| Webhooks | 7 | GET /webhooks POST /webhooks DELETE /webhooks/:whk |
| Schritte programmierbarer Abläufe | 6 | GET /pasos POST /pasos DELETE /pasos/:pso |
| Feiertage | 5 | GET /feriados POST /feriados DELETE /feriados/:fer |
| Was jede Leitung sagt | 5 | GET /guiones POST /guiones DELETE /guiones/:gui |
| Nachrichten | 5 | GET /mensajes DELETE /mensajes/:msg GET /mensajes/:msg |
| Eingehende Routen | 5 | GET /rutas POST /rutas DELETE /rutas/:ruta |
| Wählbare Kurznamen | 4 | GET /alias POST /alias DELETE /alias/:als |
| Terminerinnerungen | 4 | GET /citas POST /citas DELETE /citas/:cita |
| Ihre Kontakte | 4 | GET /contactos POST /contactos DELETE /contactos/:con |
| Chat, mit der Stimme verbunden | 4 | GET /conversaciones GET /conversaciones/:cnv POST /conversaciones/:cnv/cerrar |
| Geräte | 4 | DELETE /dispositivos/:disp POST /dispositivos/:disp/estado POST /dispositivos/:disp/provision |
| Akten zu belästigenden Anrufen | 4 | GET /expedientes POST /expedientes GET /expedientes/:exp |
| Aufzeichnungsregeln | 4 | GET /grabacion/decidir GET /grabacion/reglas PUT /grabacion/reglas |
| Anrufliste | 4 | GET /llamadas GET /llamadas/:llamada GET /llamadas/csv |
| Nummern | 4 | GET /numeros DELETE /numeros/:numero/aviso-cambio GET /numeros/:numero/aviso-cambio |
| Gleichzeitige Leitungen | 3 | GET /canales GET /canales/episodios PUT /canales/modo |
| Änderungsverlauf und Rückgängig | 3 | GET /historial GET /historial/:cambio POST /historial/:cambio/revertir |
| Sperrliste | 3 | GET /lista-negra POST /lista-negra DELETE /lista-negra/:neg |
| Wartungsfenster | 3 | GET /mantenimientos POST /mantenimientos POST /mantenimientos/:mnt/cerrar |
| Ihr Konto und sein Zustand | 2 | GET / PATCH / |
| Verzeichnis | 2 | GET /directorio GET /directorio/buscar |
| Links zum Teilen | 2 | GET /enlaces DELETE /enlaces/:token |
| Klingelsignale der App | 2 | GET /timbres/:timbre POST /timbres/:timbre/rechazar |
| Sonstiges | 1 | GET /guiones/claves |
| Geparkte Anrufe | 1 | GET /aparcadas |
| Was Ihr Schlüssel darf | 1 | GET /capacidades |
| Wer anruft, und weswegen | 1 | GET /contexto |
| Was ein Anruf kosten würde | 1 | GET /cotizar-llamada |
| Wohin ein Anruf gehen darf | 1 | GET /destinos |
| Erreichbarkeit Ihrer Apparate | 1 | GET /disponibilidad |
| Kontoauszug | 1 | GET /estado-cuenta |
| Der Live-Kanal | 1 | POST /eventos/ticket |
| App-Installationen | 1 | DELETE /instalaciones/:instalacion |
| Laufende Gespräche | 1 | GET /llamadas-en-curso |
| Anrufen per Klick | 1 | POST /llamar |
| Vermittlung | 1 | PUT /operadora |
| Wohin dieses Haus telefoniert | 1 | GET /paises |
| Startvorlagen | 1 | POST /plantilla |
| Was gewählt werden darf | 1 | GET /politica-salida |
| Präsenz | 1 | GET /presencia |
| Sich von der Anlage anrufen und etwas vorspielen lassen | 1 | POST /probar-audio |
| Testen, wo ein Anruf landen würde | 1 | GET /probar-entrada |
| Einen ausgehenden Anruf testen, ohne ihn zu führen | 1 | GET /probar-salida |
| Guthaben | 1 | GET /saldo |
| Nicht zurückgerufene Anrufe | 1 | GET /sin-devolver |
| Zwei externe Nummern verbinden | 1 | POST /unir |
| Bevorzugte Anrufer | 1 | GET /vips |
| Das Telefon im Browser | 1 | POST /webphone/sesion |
304 Endpunkte insgesamt, am 2026-10-21 aus der Anlage selbst gelesen.
Diese Tabelle ist eine Zusammenfassung. Die Liste, die nicht veralten kann, ist die, die die Anlage über sich selbst erzeugt: GET /api.
Jeder Endpunkt, einzeln
Aus dem Router der Anlage selbst gelesen: Er kann also weder eine Route beschreiben, die es nicht gibt, noch eine vergessen, die es gibt. Hier steht nur der Bereich Ihres Kontos; die Bereitstellungsrouten gehören dem Portal, und einen Schlüssel, der dorthin reicht, erhalten Sie nicht.
| Was es tut | Was er tut | Beispiel |
|---|---|---|
GET /guiones/claves | Qué frases admite un guion | |
GET / | über die API | |
PATCH / | Editar la ficha (el cliente, sus datos; plan y límites, el portal). Parcial; If-Match → 412über die API | |
GET /alias | über die API | |
POST /alias | über die API | |
DELETE /alias/:als | über die API | |
PATCH /alias/:als | über die API | |
GET /aparcadas | Las llamadas aparcadas ahora mismo (#60)über die API | ansehen |
GET /buzones | echter Anruf | |
POST /buzones | echter Anruf | |
DELETE /buzones/:buz | Borrar un buzón. If-Match opcional → 412echter Anruf | |
GET /buzones/:buz | echter Anruf | |
PATCH /buzones/:buz | Saludo, correo, transcripción, duración máxima. Parcial; If-Match → 412über die API | |
GET /buzones/:buz/mensajes | Mensajes de un buzón. ?paginar=1 / ?cursor= → {elementos, siguiente}über die API | |
PUT /buzones/:buzon/clave | Poner o quitar la clave del buzón (#10)Prüfstand | |
GET /buzones/:buzon/ocupacion | Cuántos mensajes hay y cuántos caben (#14)Prüfstand | |
GET /buzones/:buzon/papelera | Lo borrado que todavía se puede recuperar (#15)Prüfstand | |
POST /buzones/:buzon/papelera/:mensaje/recuperar | Deshacer un borrado (#15)Prüfstand | |
GET /buzones/:buzon/saludos | Los saludos del buzón, por motivo (con su audio: duración, bytes, huella)Prüfstand | |
POST /buzones/:buzon/saludos | Poner el saludo de un motivo (normal, ocupado, vacaciones…): de texto, o volver a un audio de la cuentaPrüfstand | |
DELETE /buzones/:buzon/saludos/:saludo | Prüfstand | |
GET /buzones/:buzon/saludos/:saludo/audio | Escuchar un saludo: WAV o MP3 (Accept), con Range y ETagPrüfstand | |
PUT /buzones/:buzon/saludos/:tipo/audio | Subir el saludo de un motivo con la voz del cliente (bytes: m4a, mp3, wav u ogg; 1-90 s)Prüfstand | |
GET /canales | über die API | |
GET /canales/episodios | über die API | |
PUT /canales/modo | über die API | |
GET /capacidades | Qué puede esta llave, qué campos edita cada ajuste y con qué límites, y qué hay en cada áreaüber die API | |
GET /citas | über die API | |
POST /citas | Programar un recordatorio de cita por teléfonoüber die API | ansehen |
DELETE /citas/:cita | über die API | ansehen |
GET /citas/:cita | über die API | ansehen |
GET /colas | über die API | ansehen |
POST /colas | Crear una cola de espera con agentesüber die API | ansehen |
DELETE /colas/:cola | Borrar una cola. If-Match opcional → 412über die API | |
GET /colas/:cola | über die API | ansehen |
PUT /colas/:cola | Estrategia, tiempos, anuncios, música y destinos. PUT PARCIAL; If-Match → 412über die API | ansehen |
GET /colas/:cola/callbacks | Las devoluciones de llamada pedidasüber die API | ansehen |
GET /colas/:cola/estado | Cuánta gente espera, quién está de turno y cuánto se tardaüber die API | |
GET /colas/:cola/habilidades | Qué habilidades existen hoy en esta cola | |
POST /colas/:cola/miembros | Añadir un agente (extensión o número de fuera)über die API | |
DELETE /colas/:cola/miembros/:miembro | über die API | |
PUT /colas/:cola/miembros/:miembro/habilidades | Las etiquetas de un agente (#70) | |
POST /colas/turno | Entrar o salir de turno (lo mismo que *80 / *81)über die API | |
GET /conferencias | über die API | |
POST /conferencias | Crear una sala con número y claveüber die API | ansehen |
DELETE /conferencias/:sala | über die API | |
GET /conferencias/:sala | über die API | ansehen |
PUT /conferencias/:sala | Cambiar la sala (las claves se cambian, no se leen)über die API | |
GET /conferencias/:sala/historial | Quién estuvo y cuántoüber die API | |
POST /conferencias/:sala/invitar | Llamar a alguien y meterlo en la salaüber die API | |
GET /contactos | über die API | |
POST /contactos | Alta o importación masivaüber die API | |
DELETE /contactos/:con | über die API | |
PUT /contactos/:contacto/vip | Marcar o quitar el VIP de un contacto | |
GET /contexto | Quién llama y de qué habló la última vezüber die API | |
GET /conversaciones | Prüfstand | |
GET /conversaciones/:cnv | Prüfstand | |
POST /conversaciones/:cnv/cerrar | Prüfstand | |
POST /conversaciones/:cnv/turnos | Prüfstand | |
GET /cotizar-llamada | Cuánto costaría llamar a ese número, antes de marcarloüber die API | |
GET /destinos | Qué destinos se pueden elegir en esta cuentaechter Anruf | |
GET /directorio | Quién sale en el directorio por nombrePrüfstand | |
GET /directorio/buscar | A quién encontraría el directorio con esas teclasPrüfstand | |
GET /discos | über die API | |
POST /discos | über die API | |
DELETE /discos/:disco | über die API | |
GET /discos/:disco | über die API | |
PATCH /discos/:disco | über die API | |
GET /discos/:disco/estadisticas | über die API | |
GET /discos/:disco/frases | über die API | |
PUT /discos/:disco/frases | über die API | |
DELETE /discos/:disco/frases/:frase | über die API | |
PUT /discos/:disco/pistas | über die API | |
DELETE /discos/:disco/pistas/:pista | über die API | |
GET /discos/:disco/probar | über die API | |
GET /disponibilidad | Cuánto tiempo estuvo arriba cada extensiónüber die API | |
DELETE /dispositivos/:disp | Revocar una credencial (y colgar lo que ese aparato tenga en curso)echtes Gerät | |
POST /dispositivos/:disp/estado | Suspender o reactivar un dispositivoechtes Gerät | |
POST /dispositivos/:disp/provision | Emitir un token para configurar la app sin teclear la claveüber die API | |
POST /dispositivos/:disp/rotar | Cambiar la clave de un dispositivoechtes Gerät | |
GET /enlaces | Prüfstand | |
DELETE /enlaces/:token | Revocar un enlace compartido por errorPrüfstand | |
GET /estado-cuenta | Estado de cuenta: movimientos, consumo y lo pendiente de reportar, con su semántica (el disponible es del portal)über die API | |
POST /eventos/ticket | Ticket para mirar el canal de eventos en vivo (sin teléfono)über die API | ansehen |
GET /expedientes | Los expedientes abiertos (#64) | |
POST /expedientes | Abrir expediente sobre una llamada | |
GET /expedientes/:exp | Un expediente, con su llamada y su grabación | |
POST /expedientes/:exp/cerrar | Cerrar un expediente (la fila NUNCA se borra) | |
GET /extensiones | über die API | ansehen |
POST /extensiones | Alta de extensión (crea buzón y credencial)über die API | ansehen |
DELETE /extensiones/:ext | Borrar una extensión. If-Match opcional → 412über die API | |
GET /extensiones/:ext | über die API | |
PATCH /extensiones/:ext | Editar una extensión. Parcial; If-Match → 412über die API | |
POST /extensiones/:ext/dispositivos | Añadir un dispositivo (celular, computadora…)über die API | |
POST /extensiones/:ext/no-molestar | über die API | |
GET /extensiones/:ext/reglas | echter Anruf | |
PUT /extensiones/:ext/reglas | Sígueme, desvío, no molestar y destino de fallo. PUT PARCIAL; If-Match → 412über die API | |
GET /extensiones/:extension/camp | Los avisos de desocupado que pidió esta extensión (#58) | |
DELETE /extensiones/:extension/camp/:objetivo | Cancelar un aviso de desocupado | |
POST /extensiones/:extension/mover | Mover la llamada en curso a otro aparato de la misma extensión (#57) | |
GET /extensiones/siguiente-libre | über die API | ansehen |
GET /feriados | über die API | |
POST /feriados | Feriado propio o excepción a uno nacional (idempotente por fecha)über die API | |
DELETE /feriados/:fer | Borrar un feriado de la cuenta. If-Match opcional → 412über die API | |
GET /feriados/:fer | Un feriado de la cuenta o nacional, con su versión (ETag)über die API | |
PATCH /feriados/:fer | Nombre y cerrado de un feriado de la cuenta (la fecha ES el feriado). If-Match → 412über die API | |
GET /grabacion/decidir | ¿Se grabaría esta llamada? Y con qué avisoüber die API | |
GET /grabacion/reglas | über die API | |
PUT /grabacion/reglas | Qué se graba y cuánto se guardaüber die API | |
DELETE /grabacion/reglas/:regla | über die API | |
GET /grabaciones | Grabaciones; desde/hasta son fechas. ?paginar=1 / ?cursor= → {elementos, siguiente}Prüfstand | |
PUT /grabaciones/:grabacion/categoria | cliente | prospecto | interno, o nada (#68) | |
DELETE /grabaciones/:grb | Prüfstand | |
GET /grabaciones/:grb | Ficha: transcripción, resumen, acuerdos y hablantesnoch ungetestet | |
GET /grabaciones/:grb/accesos | Quién ha escuchado esta grabaciónPrüfstand | |
POST /grabaciones/:grb/analizar | Volver a transcribir y resumirnoch ungetestet | |
GET /grabaciones/:grb/audio | El audio (queda auditado)Prüfstand | |
POST /grabaciones/:grb/enlace | Enlace firmado para compartir sin dar acceso a la cuentaPrüfstand | |
GET /grabaciones/buscar | Buscar por lo que se dijo dentro de las llamadasPrüfstand | |
GET /grupos | über die API | |
POST /grupos | über die API | |
DELETE /grupos/:grp | Borrar un grupo. If-Match opcional → 412über die API | |
GET /grupos/:grp | über die API | |
PUT /grupos/:grp | Estrategia, timbrado, fallo y miembros (si vienen, reemplazan la lista). Parcial; If-Match → 412über die API | |
POST /grupos/:grp/miembros | über die API | |
DELETE /grupos/:grp/miembros/:miembro | über die API | |
GET /grupos/:grp/orden | En qué orden sonaría ahora mismoüber die API | |
GET /guiones | echter Anruf | |
POST /guiones | Los textos que dice una líneaechter Anruf | |
DELETE /guiones/:gui | echter Anruf | |
GET /guiones/:gui | echter Anruf | |
PATCH /guiones/:gui | Cambiar textos, nombre o voz declaradaechter Anruf | |
GET /historial | Qué cambió en esta cuenta, quién y cuándoüber die API | ansehen |
GET /historial/:cambio | über die API | ansehen |
POST /historial/:cambio/revertir | Deshacer un cambio de configuraciónüber die API | ansehen |
GET /horarios | über die API | |
POST /horarios | über die API | |
DELETE /horarios/:hor | Borrar un horario. If-Match opcional → 412über die API | |
GET /horarios/:hor | über die API | |
PUT /horarios/:hor | Nombre, zona y tramos (si vienen, reemplazan la lista). Parcial; If-Match → 412über die API | |
GET /horarios/:hor/estado | ¿Abierto ahora? Y por quéüber die API | |
POST /horarios/:hor/manual | Interruptor: abierto, cerrado, almuerzo o feriado, con caducidad; null vuelve al automáticoüber die API | |
DELETE /instalaciones/:instalacion | Desvincular el teléfono de una instalación de la app (borra sus aparatos y cuelga sus llamadas)über die API | |
GET /ivrs | echter Anruf | |
POST /ivrs | Crear un menú (detecta bucles al guardar)echter Anruf | |
DELETE /ivrs/:ivr | Borrar un menú. If-Match opcional → 412echter Anruf | |
GET /ivrs/:ivr | echter Anruf | |
PUT /ivrs/:ivr | Saludo, espera, reintentos, agotado y opciones (si vienen, reemplazan la lista). Parcial; If-Match → 412; ciclo → 409echter Anruf | |
GET /ivrs/:ivr/guion | El texto exacto que se va a decirüber die API | |
DELETE /ivrs/:ivr/opciones/:tecla | echter Anruf | |
PUT /ivrs/:ivr/opciones/:tecla | echter Anruf | |
GET /lista-negra | über die API | |
POST /lista-negra | Bloquear un número entranteüber die API | |
DELETE /lista-negra/:neg | über die API | |
GET /llamadas | Registro de llamadas; desde/hasta son fechas (con la llave de un aparato, las de su extensión). ?paginar=1 / ?cursor= → {elementos, siguiente}echter Anruf | |
GET /llamadas-en-curso | Las llamadas del inquilino ahora mismo (vista de operadora)über die API | ansehen |
GET /llamadas/:llamada | echter Anruf | |
GET /llamadas/csv | Exportar el CDRechter Anruf | |
GET /llamadas/resumen | Totales, atención y repartoechter Anruf | |
POST /llamar | Timbrar a la extensión y conectarla con un destinoechter Anruf | |
GET /mantenimientos | über die API | ansehen |
POST /mantenimientos | Avisar a quien llame de que hay un mantenimiento en cursoüber die API | ansehen |
POST /mantenimientos/:mnt/cerrar | über die API | ansehen |
GET /mensajes | Bandeja de toda la cuenta (con la llave de un aparato, la de su extensión). ?paginar=1 / ?cursor= → {elementos, siguiente}über die API | |
DELETE /mensajes/:msg | über die API | |
GET /mensajes/:msg | über die API | |
GET /mensajes/:msg/audio | El audio del mensaje: WAV o MP3 (Accept), con Range y ETag; no lo marca leído y queda auditadoüber die API | |
POST /mensajes/:msg/leido | über die API | |
GET /numeros | über die API | ansehen |
DELETE /numeros/:numero/aviso-cambio | Apagar el aviso de cambio y devolver la línea a su destinonoch ungetestet | |
GET /numeros/:numero/aviso-cambio | Estado del aviso de cambio de númeronoch ungetestet | |
POST /numeros/:numero/aviso-cambio | Anunciar que este número cambió y decir el nuevonoch ungetestet | |
PUT /operadora | A dónde va el cero (#109)über die API | ansehen |
GET /paises | La memoria del cortafuegos de fraude: a dónde llama esta casa (#65) | |
GET /pasos | Pasos de flujo del cliente | |
POST /pasos | Alta de un paso de flujo | |
DELETE /pasos/:pso | ||
GET /pasos/:pso | ||
PUT /pasos/:pso | ||
POST /pasos/:pso/rotar-secreto | Rotar el secreto con el que se firma la consulta | |
POST /plantilla | Aplicar una plantilla de arranque (horario + ruta + buzón)über die API | |
GET /politica-salida | über die API | |
GET /presencia | Presencia de las extensiones de la cuenta, agregada por extensiónüber die API | |
POST /probar-audio | Llamarte y reproducirte una cadena de audio — la prueba de verdadechter Anruf | |
GET /probar-entrada | A dónde iría una llamada ahora mismoechter Anruf | |
GET /probar-salida | Simular una salida sin cursarlaechter Anruf | |
GET /red/bloqueos | Los números bloqueadosüber die API | |
DELETE /red/bloqueos/:numero | Desbloquear un númeroüber die API | |
PUT /red/bloqueos/:numero | Bloquear un número (cuelga sus llamadas de red en curso)über die API | |
GET /red/enviadas | Las solicitudes que envié (pendiente | aprobada | no_aprobada)über die API | |
POST /red/enviadas | Pedir permiso para llamar gratis (202 siempre igual)über die API | |
DELETE /red/enviadas/:sol | Retirar una solicitud, o renunciar a un permiso concedidoüber die API | |
GET /red/permisos | Quién me puede llamar gratisüber die API | |
DELETE /red/permisos/:numero | Revocar un permiso (la llamada en curso sigue; la siguiente ya no es gratis)über die API | |
GET /red/solicitudes | Las solicitudes de llamada gratis que le llegaron (estado=pendiente)über die API | |
POST /red/solicitudes/:sol/aprobar | Aceptar: ese número llama gratis (en una central, la titular; extension_id = dónde suena)über die API | |
POST /red/solicitudes/:sol/bloquear | Rechazar y bloquear ese númeroüber die API | |
POST /red/solicitudes/:sol/rechazar | Rechazar (a quien pidió no se le avisa)über die API | |
GET /red/veredicto | Antes de llamar: gratis | pago (con su tarifa) | solicitud | no_disponibleüber die API | |
GET /rutas | echter Anruf | |
POST /rutas | Qué hace una llamada que entra por un númeroechter Anruf | |
DELETE /rutas/:ruta | Borrar una ruta de entrada. If-Match opcional → 412echter Anruf | |
GET /rutas/:ruta | echter Anruf | |
PATCH /rutas/:ruta | Destino, horario, modos, saludo y grabación. Parcial; If-Match → 412echter Anruf | |
GET /saldo | Saldo: el espejo local, los topes y el gasto, con su semántica (el disponible es del portal)Prüfstand | |
GET /sin-devolver | Las perdidas que nadie ha devuelto, agrupadas por número (#67) | |
GET /timbres/:timbre | Estado de un timbre de la app (conciliar al despertar)über die API | |
POST /timbres/:timbre/rechazar | Rechazar un timbre desde la app (antes o después de registrarse)über die API | |
GET /turnos | Las rotas de guardia (#66) | |
POST /turnos | Crear una rota de guardia | |
DELETE /turnos/:turno | Borrar una rota (falla si una ruta apunta a ella) | |
GET /turnos/:turno | Una rota, con quién está de guardia AHORA | |
PUT /turnos/:turno | Cambiar una rota | |
POST /turnos/:turno/miembros | Meter a alguien en la rota, con su franja | |
DELETE /turnos/:turno/miembros/:miembro | Sacar a alguien de la rota | |
PUT /turnos/:turno/miembros/:miembro | Cambiar la franja de alguien | |
POST /unir | Llamar a dos números externos y unirlosechter Anruf | |
GET /vips | Quién se salta la fila de la cola (#61) | |
GET /webhooks | über die API | |
POST /webhooks | über die API | |
DELETE /webhooks/:whk | über die API | |
PATCH /webhooks/:whk | über die API | |
GET /webhooks/:whk/entregas | über die API | |
POST /webhooks/:whk/probar | Mandar un evento de pruebaüber die API | |
POST /webhooks/:whk/rotar | über die API | |
POST /webphone/sesion | Registrar el navegador o la app como teléfono de una extensión (la app manda su instalacion)über die API |
Aufgezeichnete Beispiele
Sie sind nicht getippt, sondern bei einem echten Lauf gegen diese API aufgezeichnet worden — in einem Wegwerfkonto, das danach gelöscht wurde. Anfrage, Status und Antwort, genau so, wie sie über die Leitung gingen. Konto- und Objektkennungen sind durch Platzhalter ersetzt, sonst nichts. Ein geschriebenes Beispiel belegt, was sein Autor glaubte; ein aufgezeichnetes belegt, was die Anlage getan hat.
24 von 226 Routen haben ein aufgezeichnetes Beispiel, aus dem Lauf vom 2026-10-16. Die übrigen stehen oben, sind aber noch nicht auf diese Weise erprobt — wir zeigen Ihnen lieber die Zahl, als Sie annehmen zu lassen, es seien alle.
GET /inquilinos/:inquilino/aparcadas 200
Antwort
{
"plazas": []
}
DELETE /inquilinos/:inquilino/citas/:id 200
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"numero": "50688889999",
"nombre": null,
"cuando": "2026-10-16T22:44:57.219Z",
"avisar_el": "2026-10-15T22:44:57.219Z",
"guion": null,
"estado": "cancelada",
"intentos": 0,
"ultimo_intento": null,
"respondido_el": null,
"nota": null,
"creado": "2026-10-16T21:44:58.732Z",
"actualizado": "2026-10-16T21:44:58.942Z"
}
GET /inquilinos/:inquilino/citas/:id 200
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"numero": "50688889999",
"nombre": null,
"cuando": "2026-10-16T22:44:57.219Z",
"avisar_el": "2026-10-15T22:44:57.219Z",
"guion": null,
"estado": "pendiente",
"intentos": 0,
"ultimo_intento": null,
"respondido_el": null,
"nota": null,
"creado": "2026-10-16T21:44:58.732Z",
"actualizado": "2026-10-16T21:44:58.732Z"
}
POST /inquilinos/:inquilino/citas 201
Anfrage
{
"numero": "50688889999",
"cuando": "2026-10-16T22:44:57.219Z",
"texto": "ensayo"
}
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"numero": "50688889999",
"nombre": null,
"cuando": "2026-10-16T22:44:57.219Z",
"avisar_el": "2026-10-15T22:44:57.219Z",
"guion": null,
"estado": "pendiente",
"intentos": 0,
"ultimo_intento": null,
"respondido_el": null,
"nota": null,
"creado": "2026-10-16T21:44:58.732Z",
"actualizado": "2026-10-16T21:44:58.732Z"
}
GET /inquilinos/:inquilino/colas/:id/callbacks 200
Antwort
[]
GET /inquilinos/:inquilino/colas/:id 200
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Soporte",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": "<id>",
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-10-16T21:44:57.230Z",
"actualizado": "2026-10-16T21:44:57.230Z",
"miembros": [],
"estado": {
"de_turno": 0,
"miembros": 0,
"espera_estimada_s": null,
"callbacks_pendientes": 0,
"atendidas_hoy": 0,
"abandonos_hoy": 0
}
}
PUT /inquilinos/:inquilino/colas/:id 200
Anfrage
{
"nombre": "Ya editada"
}
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Ya editada",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": "<id>",
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-10-16T21:44:59.058Z",
"actualizado": "2026-10-16T21:44:59.287Z",
"miembros": [],
"estado": {
"de_turno": 0,
"miembros": 0,
"espera_estimada_s": null,
"callbacks_pendientes": 0,
"atendidas_hoy": 0,
"abandonos_hoy": 0
}
}
GET /inquilinos/:inquilino/colas 200
Antwort
[
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Soporte",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": "<id>",
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-10-16T21:44:57.230Z",
"actualizado": "2026-10-16T21:44:57.230Z",
"version": "\"v1-73d179cfb86c534a9bfccc\""
}
]
POST /inquilinos/:inquilino/colas 201
Anfrage
{
"nombre": "Soporte",
"estrategia": "todos"
}
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Soporte",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": "<id>",
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-10-16T21:44:57.230Z",
"actualizado": "2026-10-16T21:44:57.230Z",
"miembros": [],
"estado": {
"de_turno": 0,
"miembros": 0,
"espera_estimada_s": null,
"callbacks_pendientes": 0,
"atendidas_hoy": 0,
"abandonos_hoy": 0
}
}
GET /inquilinos/:inquilino/conferencias/:id 200
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Sala 1",
"numero": null,
"max_personas": 10,
"esperar_organizador": 0,
"anunciar_entradas": 1,
"pedir_nombre": 1,
"bloqueada": 0,
"grabar": 0,
"musica": "default",
"activa": 1,
"creado": "2026-10-16T21:44:57.733Z",
"actualizado": "2026-10-16T21:44:57.733Z",
"tiene_pin": false,
"tiene_pin_organizador": false,
"dentro": 0,
"grabando": false
}
POST /inquilinos/:inquilino/conferencias 201
Anfrage
{
"nombre": "Sala 1",
"clave": "<secreto>"
}
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Sala 1",
"numero": null,
"max_personas": 10,
"esperar_organizador": 0,
"anunciar_entradas": 1,
"pedir_nombre": 1,
"bloqueada": 0,
"grabar": 0,
"musica": "default",
"activa": 1,
"creado": "2026-10-16T21:44:57.733Z",
"actualizado": "2026-10-16T21:44:57.733Z",
"tiene_pin": false,
"tiene_pin_organizador": false
}
POST /inquilinos/:inquilino/eventos/ticket 201
Anfrage
{}
Antwort
{
"ticket": "<secreto>",
"eventos": [
"wss://<puerta>:<puerto>/eventos",
"wss://<puerta>:<puerto>/eventos",
"wss://<puerta>:<puerto>/eventos"
],
"inquilino": "<cuenta>"
}
POST /inquilinos/:inquilino/extensiones/:id/credencial-dispositivo 201
Anfrage
{
"instalacion": "ejercicio-api-ventana-tranquila"
}
Antwort
{
"id": "<id>",
"clave": "<secreto>",
"caduca": "2026-10-16T22:00:02.449Z",
"segundos": 900,
"ambito": "dispositivo",
"vinculo": {
"inquilino": "<cuenta>",
"extension": "<id>",
"dispositivo": "<id>"
},
"extension": {
"id": "<id>",
"numero": "100",
"nombre": "Ejercicio API"
},
"dispositivo_nuevo": true,
"minutos_max": 60,
"resumen": "credencial de UN aparato de UNA extensión, que caduca; para la app móvil"
}
GET /inquilinos/:inquilino/extensiones/siguiente-libre 200
Antwort
{
"numero": "100"
}
GET /inquilinos/:inquilino/extensiones 200
Antwort
[
{
"id": "<id>",
"inquilino": "<cuenta>",
"numero": "100",
"nombre": "Ejercicio API",
"correo": null,
"cid_saliente": null,
"timbrado_s": 25,
"estado": "activa",
"creado": "2026-10-16T21:45:00.167Z",
"actualizado": "2026-10-16T21:45:00.167Z",
"nombre_audio": null,
"en_directorio": 1,
"departamento": null,
"version": "\"v1-a1a25e330e8bc32c8289ab\""
}
]
POST /inquilinos/:inquilino/extensiones 201
Anfrage
{
"nombre": "Ejercicio API",
"numero": "100"
}
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"numero": "100",
"nombre": "Ejercicio API",
"correo": null,
"cid_saliente": null,
"timbrado_s": 25,
"estado": "activa",
"creado": "2026-10-16T21:45:00.167Z",
"actualizado": "2026-10-16T21:45:00.167Z",
"nombre_audio": null,
"en_directorio": 1,
"departamento": null,
"reglas": {
"extension_id": "<id>",
"dnd": 0,
"dnd_hasta": null,
"sigueme": 0,
"sigueme_numeros": [],
"sigueme_modo": "tras",
"sigueme_confirmar": 1,
"sigueme_s": 20,
"desvio_siempre": null,
"desvio_ocupado": null,
"desvio_nocontesta": null,
"fallo_tipo": "buzon",
"fallo_id": "<id>",
"actualizado": "2026-10-16T21:45:00.168Z",
"desvio_confirmar": 1,
"screening": 0,
"clase_servicio": "todo",
"supervisar": 0,
"transferencia_retorno": 0
},
"dispositivos": [
{
"id": "<id>",
"etiqueta": "principal",
"usuario_sip": "tf3zfmm96cfq100",
"transporte": "udp",
"estado": "activo",
"ultimo_registro": null,
"ultima_ip": null,
"creado": "2026-10-16T21:45:00.168Z",
"rotado": null,
"instalacion": null
}
],
"buzon": {
"id": "<id>",
"inquilino": "<cuenta>",
"extension_id": "<id>",
"nombre": "Buzón de Ejercicio API",
"saludo_texto": "Ha llamado a Ejercicio API. Deje su mensaje después del tono.",
"saludo_audio": null,
"correo": null,
"enviar_correo": 1,
"adjuntar": 1,
"transcribir": 1,
"max_s": 120,
"creado": "2026-10-16T21:45:00.168Z",
"actualizado": "2026-10-16T21:45:00.168Z",
"max_mensajes": 50,
"aviso_activo": 0,
"aviso_numero": null,
"revisar": 0,
"ofrecer_operadora": 1,
"guion": null,
"aviso_numeros": null,
"aviso_modo": "tras",
"reintentar": 0,
"reintentos_max": 2,
"compartido": 0,
"extensiones_acceso": null,
"abrir_caso": 1,
"tiene_pin": false
},
"credencial": {
"id": "<id>",
"usuario_sip": "tf3zfmm96cfq100",
"clave": "<secreto>",
"realm": "pbx.forhosting.com",
"transporte": "udp"
}
}
POST /inquilinos/:inquilino/historial/:id/revertir 201
Anfrage
{}
Antwort
{
"revertido": "<id>",
"tabla": "colas",
"fila_id": "<id>",
"columnas": [
"nombre"
],
"fila": {
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Para editar",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": "<id>",
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-10-16T21:44:59.058Z",
"actualizado": "2026-10-16T21:44:59.671Z"
}
}
GET /inquilinos/:inquilino/historial/:id 200
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"tabla": "colas",
"fila_id": "<id>",
"columna_clave": "id",
"antes": {
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Para editar",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": "<id>",
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-10-16T21:44:59.058Z",
"actualizado": "2026-10-16T21:44:59.058Z"
},
"despues": {
"id": "<id>",
"inquilino": "<cuenta>",
"nombre": "Ya editada",
"numero": null,
"estrategia": "todos",
"timbrado_s": 20,
"espera_max_s": 600,
"decir_posicion": 1,
"decir_espera": 1,
"anuncio_cada_s": 30,
"musica": "default",
"callback": 1,
"callback_min_espera_s": 45,
"agotada_tipo": "buzon",
"agotada_id": "<id>",
"vacia_tipo": null,
"vacia_id": null,
"creado": "2026-10-16T21:44:59.058Z",
"actualizado": "2026-10-16T21:44:59.287Z"
},
"actor": "apikey:<id> primera clave de sistema (sistema)",
"origen": "api",
"revertido_de": null,
"creado": "2026-10-16T21:44:59.287Z",
"cambios": {
"nombre": {
"antes": "Para editar",
"despues": "Ya editada"
}
}
}
GET /inquilinos/:inquilino/historial 200
Antwort
{
"inquilino": "<cuenta>",
"cambios": [
{
"id": "<id>",
"tabla": "colas",
"fila_id": "<id>",
"actor": "apikey:<id> primera clave de sistema (sistema)",
"origen": "api",
"revertido_de": null,
"creado": "2026-10-16T21:44:59.287Z",
"cambios": {
"nombre": {
"antes": "Para editar",
"despues": "Ya editada"
}
}
}
]
}
GET /inquilinos/:inquilino/llamadas-en-curso 200
Antwort
{
"activas": []
}
POST /inquilinos/:inquilino/mantenimientos/:id/cerrar 201
Anfrage
{}
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"motivo": "ensayo",
"desde": "2026-10-16T21:44:58.365Z",
"hasta": "2026-10-16T21:44:58.588Z",
"avisar": 1,
"activo": 0,
"creado": "2026-10-16T21:44:58.365Z"
}
GET /inquilinos/:inquilino/mantenimientos 200
Antwort
[
{
"id": "<id>",
"inquilino": "<cuenta>",
"motivo": "ensayo",
"desde": "2026-10-16T21:44:58.365Z",
"hasta": null,
"avisar": 1,
"activo": 1,
"creado": "2026-10-16T21:44:58.365Z"
}
]
POST /inquilinos/:inquilino/mantenimientos 201
Anfrage
{
"motivo": "ensayo",
"minutos": 5
}
Antwort
{
"id": "<id>",
"inquilino": "<cuenta>",
"motivo": "ensayo",
"desde": "2026-10-16T21:44:58.365Z",
"hasta": null,
"avisar": 1,
"activo": 1,
"creado": "2026-10-16T21:44:58.365Z"
}
GET /inquilinos/:inquilino/numeros 200
Antwort
[]
PUT /inquilinos/:inquilino/operadora 200
Anfrage
{
"destino": "buzon"
}
Antwort
{
"operadora": null
}
DELETE /inquilinos/:inquilino 200
Antwort
{
"borrado": "<cuenta>"
}
POST /inquilinos 201
Anfrage
{
"nombre": "Ejercicio API 2026-10-16T21:44:54"
}
Antwort
{
"id": "<cuenta>",
"nombre": "Ejercicio API 2026-10-16T21:44:54",
"cuenta_portal": null,
"cedula": null,
"correo": null,
"telefono": null,
"plan": "zero",
"zona": "America/Costa_Rica",
"idioma": "es",
"estado": "activo",
"canales_max": 4,
"notas": null,
"creado": "2026-10-16T21:44:56.852Z",
"actualizado": "2026-10-16T21:44:56.852Z",
"canales_garantizados": 2,
"modo_presion": "firme",
"presion_canales": 1,
"duracion_max_s": null,
"operadora_tipo": null,
"operadora_id": null,
"filtro_anonimas": 0,
"cdr_retencion_dias": null,
"codigo_asunto_digitos": 0,
"supervision_activa": 0,
"canales_troncal": null,
"limites": {
"canales": 2,
"canales_max": 4,
"extensiones": 3,
"retencion": 30,
"tope_diario": 3,
"tope_mensual": 25
},
"canales": {
"existe": true,
"garantizados": 2,
"max": 4,
"modo": "firme",
"presion_canales": 1,
"por_troncal": null
}
}
Sitzungen: Der Browser hält nie einen dauerhaften Schlüssel
Kurzlebige Zugangsdaten, gedeckelt bei 60 Minuten, die keine dauerhaften ausstellen können. Das ist der Vertrag, wenn Sie den Knopf bauen.
- Nur das Portal darf eine ausstellen. Eine Sitzung auszustellen braucht einen Einrichtungsschlüssel, denn nur das Portal kann behaupten, dass hinter der Anfrage ein angemeldeter Kunde steht. VOICE weiß nichts von Kundenpasswörtern und muss es auch nicht.
- Sie entsteht nie ohne Ablauf. Fragt niemand nach einer Dauer, wird eine gesetzt. Ein Bereich, der zum Ablaufen da ist und ewig geboren werden könnte, ist schlimmer als gar keiner — weil man ihm vertraut.
- Mehr Zeit zu verlangen bringt nichts. Es gibt eine harte Obergrenze. Dass jemand acht Stunden verlangt, macht die Zugangsdaten nicht sicher.
- Sie kann sich nicht selbst befördern. Die Schlüsselverwaltung liegt vollständig hinter dem Einrichtungsbereich, eine Sitzung kann sich also keinen dauerhaften Schlüssel ausstellen. Das wird im Router erzwungen, bevor irgendein Handler läuft.
- Sie lässt sich vorzeitig beenden. Die Kennung kommt beim Ausstellen zurück — genau damit Sie sie vor der Zeit widerrufen können.
Webhooksüber die API
Ihre Systeme erfahren, was passiert ist, statt alle paar Sekunden nachzufragen. 31 Ereignisse, signiert, mit Wiederholung, und keines fällt still unter den Tisch.
x-pbx-evento: llamada.entrante
x-pbx-marca: 1755300000
x-pbx-firma: <hex>
{ "evento": "llamada.entrante", "inquilino": "…", "cuando": "…", "datos": { … } }
Jede Zustellung ist signiert: Die Signatur deckt den Zeitstempel und genau den Rumpf ab, den Sie erhalten haben — prüfen Sie sie also gegen die rohen Bytes und nicht gegen eine neu serialisierte Kopie. Das Geheimnis wird beim Anlegen des Abonnements einmal angezeigt und lässt sich wechseln, ohne die Zustellungen anzuhalten.
Eine fehlgeschlagene Zustellung wird nach 10 · 30 · 60 · 300 · 900 · 3600 Sekunden erneut versucht, und jeder Versuch bekommt 10 Sekunden. Ein Abonnement, das weiterhin fehlschlägt, wird nach 20 Fehlschlägen in Folge pausiert, statt stillschweigend verworfen zu werden — und Sie sehen jeden Versuch.
Die Ereignisse
| Ereignis | Wann es auslöst |
|---|---|
llamada.entrante | Ein Anruf kommt herein, mit Nummer, Route und Ziel. |
llamada.contestada | Jemand hat abgenommen. |
llamada.terminada | Er ist zu Ende, mit Dauer und Art des Endes. |
llamada.perdida | Es hat geklingelt, und niemand ist rangegangen. |
buzon.mensaje | Jemand hat eine Nachricht hinterlassen, samt Abschrift. |
grabacion.lista | Eine Aufzeichnung ist fertig verarbeitet und kann geladen werden. |
grabacion.analizada | Abschrift, Sprecher und Zusammenfassung liegen vor. |
saldo.bajo | Das Guthaben geht zur Neige. |
tope.alcanzado | Eine Ausgabengrenze wurde erreicht, die Gespräche sind gestoppt. |
registro.anomalo | Eine Geräteanmeldung sieht falsch aus — etwa mehrere Zugangsdaten von derselben Stelle. |
canales.al_limite | Sie sind nahe an der Obergrenze Ihrer gleichzeitigen Leitungen. |
cita.confirmada | Jemand hat seinen Termin über die Tastatur bestätigt. |
cita.reagendar | Jemand hat um einen anderen Termin gebeten. Das ist eine Bitte an einen Menschen, nichts, was die Anlage von allein löst. |
cita.cancelada | Jemand hat seinen Termin abgesagt. |
desvio.activado | Eine Weiterleitung wurde eingeschaltet. |
desvio.recordatorio | Eine Weiterleitung ist immer noch eingeschaltet. Die vergessene Weiterleitung ist der häufigste Phantomfehler einer Telefonanlage. |
buzon.lleno | Eine Mailbox ist voll — ab hier gingen Nachrichten verloren. |
buzon.casi_lleno | Eine Mailbox ist fast voll, solange noch Zeit bleibt, etwas zu tun. |
cola.vacia | In einer Warteschlange ist niemand im Dienst. |
cola.callback | Jemand hat um einen Rückruf gebeten, statt zu warten. |
conferencia.entra | Jemand ist einem Raum beigetreten. |
conferencia.sale | Jemand hat einen Raum verlassen. |
canales.desalojo | Eine geliehene Leitung wurde zurückgegeben, um die Garantie eines anderen zu schützen. |
emergencia.marcada | Jemand hat von einer Nebenstelle den Notruf gewählt. Der Anruf wird dadurch nie verzögert. |
fax.entrante | Bei einem eingehenden Anruf wurde ein Faxton erkannt. |
supervision.iniciada | Jemand hat mitgehört, geflüstert oder sich eingeschaltet. Genau das trennt ein Aufsichtswerkzeug von einer Wanze: die Frage «wer hat dieses Gespräch gehört, und wann» beantworten zu können. |
fraude.sospecha | Ein Verhaltensmuster, das nach Betrug aussieht. Es warnt; es trennt nicht. |
filtro.insistencia | Eine Nummer ruft viel zu oft an. |
red.solicitud.nueva | Eine andere Leitung im Netz hat um Erlaubnis gebeten, Sie kostenlos anzurufen. |
red.solicitud.respondida | Ihr Konto hat eine Erlaubnisanfrage genehmigt oder abgelehnt. |
red.permiso.revocado | Ihr Konto hat einer Nummer die Erlaubnis entzogen, Sie kostenlos anzurufen. |
Der Live-Kanalechter Anruf
Webhooks reisen in Bündeln und kommen binnen Sekunden an. Manches muss jetzt auf dem Bildschirm stehen: Eine Lampe, die zeigt, dass ein Kollege telefoniert, darf nicht fünfzehn Sekunden zu spät sein.
- Was er transportiert. Anrufe, während sie passieren, neue Nachrichten und den Lampenzustand jeder Nebenstelle — das ist es, was ein Besetztlampenfeld auf einem Bildschirm überhaupt erst lebendig macht.
- Er ist nur lesend.über die API Sie können einen Zugang zum Kanal öffnen, ohne ein Telefon herauszugeben: zuzusehen, was passiert, sollte keine Zugangsdaten erfordern, die auch etwas ändern können.
- Er ersetzt keine Webhooks. Der Live-Kanal ist für einen Bildschirm, auf den jemand schaut. Wenn es darauf ankommt, dass Ihr System es erfährt, nehmen Sie einen Webhook: Er wiederholt, und er hängt nicht an einem offenen Socket.
Referenz
Wie die Nachweise zu lesen sind
Jede Funktion auf dieser Seite trägt einen Nachweis, wie sie geprüft wurde. Wir veröffentlichen auch die, die noch niemand ausgeführt hat — so gekennzeichnet, denn dass Sie es selbst herausfinden, wäre schlimmer.
| Nachweis | Was es tut | Wie viele |
|---|---|---|
| echter Anruf | Jemand hat wirklich angerufen, und es tat, was hier steht. | 14 |
| Testanruf | Ein echter Anruf gegen die laufende Anlage, mit wirklich gedrückten Tasten — aber ohne Stimme und ohne Zuhörer. Alles, was davon abhängt, dass der Anrufer spricht, ist weiterhin ungetestet. | 3 |
| echtes Gerät | Mit einem echten Apparat nachgewiesen, der sich anmeldet. | 1 |
| über die API | Über die öffentliche API ausgeführt. | 47 |
| Prüfstand | Auf dem Prüfstand ausgeführt, gegen eine Wegwerfkopie der Datenbank. | 13 |
| noch ungetestet | Der Code ist da und lädt, aber niemand hat ihn bisher ausgeführt. | 36 |
114 Funktionen, am 2026-09-19 aus der Anlage gezählt.
Der Nachweis gehört zu einer Funktion, nicht zu einer einzelnen Zeile: Wo eine Funktion mehrere Codes abdeckt, zeigen alle die Stufe der Gruppe. Ein Nachweis kann also untertreiben, was tatsächlich geprüft wurde — nie übertreiben. Das ist die einzige Richtung, in die wir auf einer Seite, die Sie als Versprechen lesen, falsch liegen wollen.
Glossar
Die Wörter, die eine Telefonanlage benutzt und sonst nichts.
| Begriff | Was es tut |
|---|---|
| Nebenstelle | Eine Person oder ein Arbeitsplatz in Ihrer Firma, mit einer kurzen Nummer, die andere wählen. Sie ist kein Telefon: Eine Nebenstelle kann mehrere Geräte haben. |
| Nummer (DID) | Was die Außenwelt wählt, um Sie zu erreichen. Eine Nummer zeigt auf etwas — eine Nebenstelle, eine Gruppe, ein Menü —, und Sie bestimmen, worauf. |
| Rufgruppe | Mehrere Nebenstellen, die für denselben Anruf klingeln. Einfach — und ohne jede Ahnung, wer wartet und wie lange schon. |
| Warteschlange | Eine Gruppe, die eine Reihe führt. Sie kennt die Position, die gemessene Wartezeit und wer im Dienst ist, und sie kann einen Rückruf anbieten. |
| Sprachmenü (IVR) | «Die 1 für den Vertrieb». Menüs können Menüs enthalten, und ein Anrufer kann immer zurück oder zu einem Menschen. |
| Gleichzeitige Leitung (Kanal) | Ein laufendes Gespräch. Zehn Kanäle heißt zehn Gespräche auf einmal, egal wie viele Telefone Sie besitzen. |
| Anrufdatensatz (CDR) | Eine Zeile je Anruf: wer, wann, wie lange, über welchen Weg und wie er endete. Daraus wird eine Rechnung gebaut. |
| Besetztlampe | Die Anzeige, die zeigt, ob ein Kollege frei ist, klingelt oder spricht — ohne ihn anrufen zu müssen, um es herauszufinden. |
| Tastentöne (DTMF) | Die Töne, die ein Telefon beim Drücken einer Taste erzeugt. Über sie hören ein Menü, eine Mailbox und jeder Code auf dieser Seite, was Sie drücken. |
| Rufumleitung aufs Handy | Ihre Nebenstelle klingelt auch auf Ihrem Handy — oder stattdessen. Die meistgenutzte Funktion jeder kleinen Telefonanlage. |
| Parken | Ein Gespräch auf einem nummerierten Platz warten lassen, damit jeder an jedem Telefon es durch Wählen dieses Platzes heranholen kann. |
| Begleitete Weitergabe | Mit dem Kollegen sprechen, bevor Sie das Gespräch übergeben — mit der Möglichkeit, es zurückzunehmen. |