SIP-Telefone. Computer mit einem Mobilteil. Theoretisch kann viel mit ihnen gemacht werden, aber sie werden nur für Anrufe verwendet :-)
Vor kurzem war AsterConf auf der Konferenz, und dort sprachen die Verkäufer über ihre Telefone. Wir werden niemanden herausgreifen. Sie sind alle gut, irgendwo besser, irgendwo billiger. Tatsächlich tun sie dasselbe.
Einige der Anbieter verbessern die Klangqualität, jemand befestigt ein Tablet mit einem Android, jemand versucht, eine Anwendung hinzuzufügen. Und das alles, damit wir diese Telefone auf Desktops installieren können.
Und vielleicht sind die Telefone gute Kandidaten für die Rolle der Fernbedienung in der IoT-Welt: Ich habe auf die Schaltfläche geklickt und das Ergebnis erhalten. Und meiner bescheidenen Meinung nach gibt es nicht genug einfache Möglichkeiten, um Telefone mit Ihrem „Manager“ zu verbinden. Als Teil dieses Artikels möchte ich zeigen, wie es in einem Diagramm und einer Videodemonstration einfach aussehen könnte.
Und Sie teilen in den Kommentaren bitte mit, dass vielleicht schon irgendwo etwas Ähnliches implementiert wurde oder ergänzen Ihre Vorschläge und Gedanken.
Telefone verfügen über Aktions-URLs und Aktions-URIs.
Mit der Aktions-URL können wir verschiedene Ereignisse an eine beliebige URL senden. In der URL können wir vordefinierte Variablen angeben, die während eines Aufrufs mit realen Daten gefüllt werden.
So sieht zum Beispiel die Einstellung meines Telefons aus.
Action URL Designer Online für YealinkMit dem Aktions-URI können wir Befehle über die IP-Adresse des Telefons empfangen. Das Telefon kann Anrufe tätigen, Anrufe auf Befehl entgegennehmen, Lautstärke hinzufügen, einen Neustart durchführen usw. Im Video unten können Sie sehen, wie dies alles passiert. Wir müssen die Adresse angeben, von der die Teams kommen werden.

Alles ist konfigurierbar, was ist das Problem, Bruder?
Dies sind ziemlich funktionale Schnittstellen, aber ... sie sind ziemlich schwer zu integrieren. Das heißt Wir müssen 100.500 Maßnahmen ergreifen, damit es funktioniert. Oder füllen Sie 100 Felder in den Einstellungen des Geräts aus (die Sie selbst auf dem Bildschirm sehen), oder verwechseln Sie die Bestimmungen und schreiben Sie einige Konfigurationsvorlagen vor.
Infolgedessen gibt es viele Aktionen, bei denen es einfach ist, einen Fehler zu machen und nicht das zu bekommen, was Sie wollen, und dann viel Zeit zu investieren, um die Gründe für das unangemessene Verhalten des Geräts herauszufinden. Und nun, wenn Sie mit einem fertig werden und fünf bis zehn, einhundert und ein paar Verkäufer und sogar Modelle verschiedener Generationen haben. Puff Puff Puff ...
Ist das ein Problem? Muss jemand das Telefon eines Teilnehmers verwalten? Zum Abonnenten? Von Ihrem Desktop, Laptop oder Smartphone? Technischer Support? Sowohl intern als auch extern, zum Beispiel ein virtueller Telefonvermittlungsanbieter? Muss ich anders als nur SIP auf das Telefon zugreifen können? Integrieren Sie das Telefon in Anwendungen und umgehen Sie die IP-PBX?
Ich kann nicht eindeutig antworten, es gibt Vor- und Nachteile. Und um die Vorteile zu realisieren, möchte ich in der Lage sein, die Aktions-URL und die Aktions-URI schnell mit meinem "Manager" zu verbinden. Ich bezeichne einen Manager als einen Server, auf dem ich eine Liste der Telefone und deren Status zentral einsehen und von jedem der Telefone aus eine verfügbare Aktion ausführen kann.
Schauen wir uns das Diagramm an.

Stellen Sie sich vor, wir haben einen Websocket-Client in unserem Telefon.
Dann müssen wir im Telefon nur die Netzwerkadresse des „Managers“ angeben und unser Telefon stellt eine Verbindung dazu her. Wenn die Verbindung hergestellt ist, sendet das Telefon seine ID, seinen Namen und seinen Mac. So können wir es beispielsweise mit unserer Liste der PBX-Teilnehmer vergleichen.
Dann abonnieren wir Ereignisse, die am Telefon auftreten. Es gibt viele von ihnen, das sind Ummeldungen, Antworten auf Anrufe, Drücken von Tasten usw. Dann können wir die Nummer von unserem Manager durch Senden eines Befehls wählen. Entweder DND einstellen oder DND entfernen. Dann sende ich eine Benachrichtigung oder Erinnerung an das Telefon, setze ein neues Logo.
Was ist mit Sicherheit? Im Allgemeinen können SIP-Telefone für NAT verwendet werden, sie benötigen keine externe Adresse. Wenn Sie jedoch den Webserver-Port des Telefons auf das Action-URI-Netzwerk einstellen (in dem übrigens der Administratorbereich funktioniert), erwarten Sie unangenehme Überraschungen.
Wenn das Telefon jedoch über Websockets eine Verbindung zum „Manager“ herstellt, ist dies seine Initiative und sein Recht. Möglicherweise trennt er die Verbindung. Wenn Sie aufgrund von NAT eine Verbindung zum Remote-Server herstellen, sieht dies wie eine Browserverbindung aus.
Genug der Worte, näher am Punkt. Ich habe einen kleinen Telefon-Client geschrieben (der meiner Meinung nach im Telefon sein sollte), der sich über den Web-Socket mit dem Server verbindet. Außerdem ist ein Browser mit diesem Server verbunden, der Nachrichten vom Telefon empfangen und dort Befehle senden kann.
Der Client ist nur ein Wrapper für die Aktions-URL und die Aktions-URI, die über die vertrauten Schnittstellen mit dem Telefon zusammenarbeiten und alle Daten in einem Web-Socket zusammenfassen. In Web-Sockets gibt es regelmäßige JSON-Nachrichten, mit denen jeder Webentwickler arbeiten kann.
Sehen Sie sich das Video an, alles ist ganz einfach. Der gesamte Code ist minimal genug, um das Konzept zu veranschaulichen.
Was ist im Video los?
- Wir starten den Server, der Verbindungen über Websockets akzeptiert.
- Wir starten den Client (der per Action URL & URI mit dem Telefon funktioniert)
- Der Client stellt eine Verbindung zum Server her
- Wir starten den Webserver (mit der Seite, auf der sich der Code für die Verbindung vom Browser über Websockets befindet)
- Öffnen Sie die Seite im Browser. Die Seite stellt eine Verbindung zum Server her
- Wir senden eine Informationsanfrage von der Seite
- Die Anfrage geht bis zum Telefon und gibt Informationen über die Telefonleitungen zurück
- Wir können auch verschiedene Teams schicken
- einschließlich des Befehls zum Tätigen eines Anrufs
- und dann den Befehl zum Auflegen
- Alle Daten werden im Protokoll auf der Seite sowie in der Konsole des funktionierenden Servers und des Client-Telefons angezeigt
- Dann können Sie auf der Telefonseite sehen, wie es auf Befehle reagiert
Daher ist das Verbinden des Telefons mit dem Manager nur eine Adresse. Und Nachrichten von Web-Sockets an eine andere Präsentation und umgekehrt können jeder Entwickler sein. In meinem Fall ist eine Seite mit dem Manager verbunden. Im Allgemeinen kann es sich um ein komplexeres System handeln, das Befehle verarbeitet und Nachrichten an das Telefon sendet.
Eine einfache Verbindungsmethode zu haben kann praktisch und daher einfacher zu erlernen sein. Über diese Schnittstelle können theoretisch sowohl neue Konfigurationen als auch zusätzliche Nachrichten gesendet werden, sodass sich das Telefon problemlos in jede Infrastruktur integrieren lässt.
Im Allgemeinen sind dies nur meine Gedanken zu den Ergebnissen der Besichtigung neuer Produkte bei Asterkonf. Ich werde mich freuen, in den Kommentaren die Vor- und Nachteile zu sehen. Und vielleicht sieht einer der Hersteller das Rationale darin und stellt den Chip vor :-)
Github-Projekt