Als das geschäftliche Problem der Erstellung eines Hochgeschwindigkeitsmechanismus zur Benachrichtigung des Benutzers über Ereignisse im Contact Center (Überlauf von Warteschlangen) und einer Telefonvermittlung (Benachrichtigung über verpasste Anrufe) aufkam, kam der Gedanke über Telegramm auf.
In dieser Situation, Telegramm, ist dies nur eine der möglichen Optionen. Kann per SMS erfolgen. Sie können es per E-Mail kitschig machen, und dann kommt es auf einem Handy zum Benutzer und der Server Push wird daraus herauskommen. Oder machen Sie es direkt in der Anwendung auf Ihrem Handy, damit Push direkt von ihr bezogen wird.
Aber jede Methode hat ihre Nachteile. Sie müssen für SMS bezahlen. E-Mail macht den Benutzer ständig blind und der Benutzer reagiert nicht mehr. Für jede Plattform muss eine separate Anwendung auf dem Telefon erstellt werden. Installieren und organisieren Sie die Registrierung von Token auf den internen Servern des Unternehmens. Eine Lösung mit Telegramm hat diese Nachteile nicht, obwohl die Anwendung natürlich auf einem Handy, Desktop oder woanders installiert werden sollte. Telegramm hat jedoch auch ein Minus. Dies ist unser lieber Roskomnadzor, der ihn nicht sehr mag. Dies führt zu einer zusätzlichen Pikantheit der Implementierung.
Also.
Inspiriert von
diesem und
jenem machte ich mich an die Arbeit.
Zu Beginn habe ich in BotFather einen Bot erstellt

Als nächstes sollten Sie bereits direkt mit der API arbeiten.
Nachdem ich
diese würdige Veröffentlichung gefunden hatte, wandte ich mich an
Hetzner und organisierte meinen http-Proxy für die Arbeit mit API für nur 3 Euro pro Monat auf deutschem Gebiet.
Der nächste erforderliche Schritt besteht darin, eine Gruppe zu erstellen, die Ihre Benutzer und den neu erstellten Chat-Bot enthält. Dies ist Spam-Schutz. Was Viber zum Beispiel fehlt.

Als nächstes müssen Sie die Nummern der erforderlichen Benutzer finden.
Dazu muss jeder Benutzer eine Nachricht in den Chat werfen. Im Allgemeinen ist es willkürlich. Zu diesem Zweck verwenden wir jedoch beispielsweise das Phrasenregister und eine bestimmte Nummer. Die Nummer ist die Kennung für die TK-Anlage.

Wenden wir uns nun der API zu.
Mit dem neu erstellten Proxy stellen wir die folgende Anfrage direkt von der Proxy-Shell. Wenn Sie Ihren Browser bereits auf die Verwendung umgestellt haben, können Sie dies direkt über den Browser tun.
root@ubuntu-dsenash ~ # wget https://api.telegram.org/bot553:AAGrXfKHw/getUpdates --2018-06-21 11:11:25-- https://api.telegram.org/bot553:AAGrXfKHw/getUpdates Resolving api.telegram.org (api.telegram.org)... 149.154.167.220, 2001:67c:4e8:f004::9 Connecting to api.telegram.org (api.telegram.org)|149.154.167.220|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 370 [application/json] Saving to: 'getUpdates' getUpdates 100%[==================================================================================>] 370 --.-KB/s in 0s 2018-06-21 11:11:25 (14.1 MB/s) - 'getUpdates' saved [370/370] root@ubuntu-dsenash ~ # cat getUpdates {:true,:[{:90770, :{:43,:{:3918,:false,:,:,:},:{:3918,:,:,:},:1529572218,:,:[{:0,:9,:}]}}]}root@ubuntu-dsenash ~ #
Anstelle von "553XXXXXXX: AAGrXfKHwhhhhhhhhhhhhhhhhhhhhhhhhh" wird angezeigt, was Sie von BotFather erhalten haben.
In der Antwort suchen wir nach der Kennung des Benutzers, der die Registernachricht hinterlassen hat.
Im obigen Text sehen wir die Nachricht selbst: "/ register 1000"
Und die gesuchte Benutzer-ID: "id": 3918xxxxx "
Anstelle von xxxxx gibt es natürlich reelle Zahlen.
Jetzt können Sie den Betrieb des Bots und der API direkt von der Shell oder von Ihrem Browser aus mit der folgenden Anfrage überprüfen:
api.telegram.org/bot553XXXXXXX : AAGrXfKHwhhhhhhhhhhhhhhhhhhhhhhhhh / sendMessage? text = Your_queue_is_overloaded & chat_id = 3918xxxxx
Wobei bot553XXXXXXX: AAGrXfKHwhhhhhhhhhhhhhhhhhhhhhhhhhh die Bot-Nummer und der Schlüssel ist, die von BotFather empfangen wurden, und 3918xxxxx die Benutzernummer ist, die aus dem vorherigen Schritt erhalten wurde.
Sie können im Text Russisch verwenden, aber Leerzeichen müssen durch% 20 ersetzt werden.
Als Ergebnis dieses Befehls wurde die Nachricht gleichzeitig per Telegramm auf dem Desktop und auf dem Mobiltelefon empfangen.


Der Browser gab die folgende Antwort zurück:

Die API funktioniert also. Jetzt werden wir mit der Integration in die Avaya-Telefonzentrale fortfahren. Zu diesem Zweck werde ich Avaya Aura Experience Portal 7.1 verwenden. Es wird zur Organisation von IVR im Avaya-Ökosystem verwendet und ist eine vollständig softwarebasierte, virtualisierte und intelligente Serviceplattform. Das wichtige Merkmal ist die Möglichkeit, Java-Code einzufügen, den wir für die Integration in Telegram benötigen. Ich werde keine Anzeigen erstellen, aber meiner Meinung nach ist dies eines der besten Avaya-Produkte, und Sie können wirklich erstaunliche Dinge darauf schreiben. Zum Beispiel
Sprachsteuerung einer Teekanne oder ernsthaftere
Transkription von Gesprächen im laufenden Betrieb .
Dieses IVR-System ist sicherlich nicht billig, aber es gibt einige Besonderheiten. Es ist vom Hafen lizenziert. Weil Wir planen, es in Kürze zu verwenden, ein Port wird ausreichen. Und ein Port hat relativ niedrige Kosten. Bei der Virtualisierung benötigt das System nur 2 Core / 4 GB RAM / 60 GB HDD. Im Allgemeinen kann es auf fast jedem Laptop oder Desktop installiert werden. Nun, wie eine Kirsche auf einem Kuchen - dieses Produkt verfügt über einen Testmodus, mit dem Sie es 30 Tage lang kostenlos verwenden können.
Um die Aufgabe zu erfüllen, müssen wir einen IVR-Anruf nach einem Ereignis in der Telefonvermittlung organisieren und dann so konfigurieren, dass das entsprechende Ereignis an die neu erstellte API gesendet wird.
Wenn wir die Aufgabe in Betracht ziehen, den Supervisor über den Überschuss der Anzahl der Anrufe in der Warteschlange an das Contact Center zu informieren, muss in der Telefonvermittlung der Hauptvektor geändert und ein zusätzlicher erstellt werden.
CALL VECTOR
Nummer: 5 Name: Vektor für Fähigkeit 5
01 gehe zu Schritt 5, wenn Anrufe in Fertigkeit 5 pri m> 5 in die Warteschlange gestellt werden
02 Warteschlange bis Fertigkeit 5 pri m
03 Wartezeit 30 Sekunden Hörstille
04 gehe zu Schritt 3, wenn bedingungslos
05 Route-zu-Nummer 1214 mit cov n, wenn bedingungslos
06 gehe zu Schritt 2, wenn bedingungslos
Dieser Vektor überprüft unmittelbar vor dem Tätigen eines Anrufs in der Warteschlange die Anzahl der Anrufe in dieser Warteschlange. Wenn es 5 überschreitet, geht der Anruf zu Schritt 5, wo er an die Nummer 1214 weitergeleitet wird. Diese Nummer wird an IVR weitergeleitet.
In der Bedingung in Schritt 1 können Sie eine große Anzahl von Parametern überprüfen, die ein Indikator für die Last im Contact Center sind. Zum Beispiel EWT, die Anzahl der verfügbaren Agenten, die Anzahl der angemeldeten Agenten, die Anzahl der Anrufe in der Warteschlange, das Servicelevel usw. und wenn dieser oder jener Indikator überschritten wird, leiten Sie den Anruf an IVR weiter.
Eine Anwendung in IVR sendet eine Nachricht an Telegram und leitet den Anruf sofort an das Contact Center an einen ähnlichen Vektor weiter, nur ohne die Schritte 1 und 5.
Die Verzögerungszeit für einen solchen Verarbeitungsanruf beträgt ungefähr 100 Millisekunden, was für den Anrufer absolut unbedeutend ist.
Der zweite Vektor sieht folgendermaßen aus:
CALL VECTOR
Nummer: 6 Name: Fähigkeit 5 Direkt
01 Warteschlange bis Fertigkeit 5 pri m
02 Wartezeit 30 Sekunden Hörstille
03 gehe zu Schritt 2, wenn bedingungslos
Der Ereignisaufruf wird also an IVR umgeleitet. Fahren wir mit der Entwicklung einer Anwendung fort.
Anwendungen für das Avaya Aura Experience Portal werden in Eclipse mit dem installierten Orchestration Designer-Plugin entwickelt. Auf diese Weise können Sie die Entwicklung für ungelernte Benutzer in den Drag & Drop-Modus zum Verschieben von Quadraten und Pfeilen übertragen, ohne in Java-Code einzutauchen.
Nun, qualifizierte Benutzer können bereits Java-Code einbetten. Als Nächstes wird die Anwendung als Servlet zusammengestellt und in Tomcat bereitgestellt, wo der IVR beim Empfang eines Anrufs verweist.
Die Anwendung ist wie folgt:

Der Aufruf geht an den AppRoot-Knoten, dann werden die Variablen vorverarbeitet und der Aufruf geht an den Telegram Connector, der bereits reiner Java-Code ist. Nach dem Senden der Nachricht wird der Anruf an das Contact Center weitergeleitet.
Um die Einstellungen zu vereinfachen, werden konfigurierbare Variablen verwendet, mit denen Sie die Einstellungen interner Anwendungsvariablen im Webportal des Experience Portals selbst anzeigen können. Dies ist erforderlich, damit beim Ändern der Einstellungen die Anwendung nicht neu erstellt wird.
Der Variablenblock lautet wie folgt:

Wie konfigurierbare Variablen eine DNIS-Variable mit Untervariablen verwenden. Um Variablen in Java-Code zu übertragen, werden in Großbuchstaben geschriebene Variablen verwendet.
Die primäre Verarbeitungseinheit ist wie folgt:

Vergib mir Liebhaber von sauberem Code. Der URL-Block sieht schrecklich aus. Dies sind die Funktionen von Orchestration Designer. Natürlich war es richtiger, es direkt in Java-Code in einer Zeile zu sammeln, aber es war wichtig für mich zu überprüfen, welche URL in Java-Code gelangt und musste es so sammeln.
Der Stecker selbst sieht extrem minimalistisch aus:
String response = ""; String str = mySession.getVariable(IProjectVariables.URL).getSimpleVariable().getStringValue(); str = str.replaceAll(" ", "%20"); IVariableField variable = mySession.getVariableField(IProjectVariables.RESPONSEINFO); variable.setValue(str); URL url; try { url = new URL(str); InputStream is = url.openConnection().getInputStream(); BufferedReader reader = new BufferedReader( new InputStreamReader( is ) ); String line = null; response = ""; while( ( line = reader.readLine() ) != null ) { response = response + line; } reader.close(); } catch (IOException e) { e.printStackTrace(); }
Die Funktionen mySession.getVariable und mySession.getVariableField werden benötigt, um Informationen aus der Anwendung in Java-Code zu übertragen und eine Antwort zurückzugeben.
Das heißt, Wir haben die URL nach dem oben genannten Prinzip gebildet und sie gestartet, indem wir das zurückgegeben haben, was der Server zurückgegeben hat.
Das ist die gesamte Anwendung und im Allgemeinen die gesamte Lösung. Das IVR-Webportal selbst mit konfigurierbaren Variablen lautet wie folgt:

Wenn jemand daran interessiert ist, eine echte Demonstration des Prototyps zu sehen, kann er sie
hier sehen .
Nun, es gab einige Kirschen auf dem Kuchen. Genauer gesagt sogar zwei.
Ich habe schon über das erste geschrieben. Damit die Lösung funktioniert, müssen Sie den Anwendungsserver über einen Proxy, der sich nicht in Russland befindet, mit Telegram verbinden. Ich hoffe, dieser Unsinn endet jemals.
Nun, die zweite Kirsche. Natürlich muss die Verbindung zum Telegramm verschlüsselt sein und die Verbindung erfolgt über https. Und natürlich wird dafür ein nicht selbstsigniertes Zertifikat verwendet. Und dieses Zertifikat gibt kein Telegramm. Und im Gegensatz zum Browser kann der Anwendungsserver ohne Zertifikat keine einfache Verbindung herstellen. Die Kirsche auf dem Kuchen ist also der Prozess, dieses Zertifikat zu finden und es auf den Anwendungsserver hochzuladen. Nach diesem Vorgang funktionierte sofort alles auf magische Weise.
Ich glaube, dass eine Person, die meinen Weg erfolgreich besteht, dieses Zertifikat auch erfolgreich finden wird. Die Hauptsache ist, dass er weiß, dass er gefunden werden muss.
Vielen Dank für Ihre Aufmerksamkeit.