eDie Rolle CHAT wird für das Durchführen von Chat-Sessions, ausgehend von externe Webseiten, mit den Agenten verwendet.
Der Chat-Server ist eine Java Anwendung, was parallel auf den Webservern - bei entsprechende RAM Erweiterung um ca. 4 GB pro Server - mit installiert werden kann, oder auf einem separaten Server installiert wird.
Java 8 Installation
In diesem Schritt wird Java 8 auf dem Server installiert.
yum -y install https://cdn.jtel.de/downloads/java/jdk-8u202-linux-x64.rpm
ClientMessenger Installieren und Konfigurieren
ClientMessenger Installation
Das Verzeichnis ClientMessenger wird nach /home/jtel kopiert.
cp -R /home/jtel/shared/JTELCarrierPortal/Utils/Install/ClientMessenger/ /home/jtel/ClientMessenger chown -R jtel:jtel /home/jtel/ClientMessenger
Hazelcast Cluster Konfiguration
Die Konfiguration des Hazelcast-Clusters muss geprüft werden. Bei Neuinstallationen von Release 3.11 ab 01.04.2018 sind die Einträge in hazelcast.xml vorhanden, davor hingegen nicht.
- Zum einen, wird der Chat-Server als Member im Cluster aufgenommen.
Zum anderen werden die CHAT Buffer und Counter der Konfiguration - falls nicht vorhanden - hinzugefügt.
Die notwendigen Konfigurationsabschnitte in hazelcast.xml sind hier aufgeführt:
... <tcp-ip enabled="true"> ... <member>CHATSERVER</member> </tcp-ip> ... <ringbuffer name="CHAT"> <in-memory-format>BINARY</in-memory-format> <backup-count>1</backup-count> <async-backup-count>0</async-backup-count> <time-to-live-seconds>60</time-to-live-seconds> <capacity>500</capacity> </ringbuffer> <map name="CHATCOUNTERS"> <backup-count>0</backup-count> <async-backup-count>1</async-backup-count> <time-to-live-seconds>600</time-to-live-seconds> <eviction-policy>LRU</eviction-policy> <max-size policy="PER_NODE">5000</max-size> </map>
Sämtliche Rechner im Hazelcast-Cluster betrachten:
- Rolle DATA, DB-Master
- hazelcast.xml updaten
- updatepl.sh ausführen
- Rolle TEL
- hazelcast.xml updaten
- PlatformUDPListener neu starten
- Rolle WEB
- hazelcast.xml updaten
updatejb.sh ausführen
- Rolle CHAT (das System, was gerade installiert wird!)
- hazelcast.xml am besten kopieren
ClientMessenger als Daemon Prozess installieren
Falls die Repositories auf einer Windows Maschine liegen (dies kann nur alte Installationen betreffen), muss der Start-Skript /etc/init.d/jtel-clientmessenger vorher repariert werden, damit aus CR+LF nur LF wird.
sed -i -e 's/\r//g' /home/jtel/ClientMessenger/init.d/jtel-clientmessenger
Die Konfiguration, bzw. die Startdatei jtel-clientmessenger muss ggf. angepasst werden, damit die Datenbank-Verbindung aufgebaut werden kann. Hierbei muss <password> mit den Passwort für den root User der Datenbank ersetzt werden:
... -Dde.jtel.platform.clientmessenger.connection=jdbc:mysql://acd-dbm/JTELWeb?user=root\&password=<password>\&characterEncoding=utf8 \ ...
Anschließend, wird der Prozess als Linux Daemon installiert:
cd /home/jtel/ cp /home/jtel/ClientMessenger/init.d/jtel-clientmessenger /etc/init.d/ chmod 755 /etc/init.d/jtel-clientmessenger chkconfig jtel-clientmessenger on service jtel-clientmessenger start
Update Skript anlegen
Für das Updaten des Chat-Servers wird ein Update-Skript angelegt:
cat <<EOFF>/usr/local/bin/updatesc.sh #!/bin/bash service jtel-clientmessenger stop cp /home/jtel/shared/JTELCarrierPortal/Utils/Install/ClientMessenger/bin/* /home/jtel/ClientMessenger/bin chown -R jtel:jtel /home/jtel/ClientMessenger service jtel-clientmessenger start EOFF chmod +x /usr/local/bin/updatesc.sh
Firewall Konfiguration
Als nächstes müssen in der Firewall die Port-Freigaben für den Chat Dienst eingetragen und persistent gespeichert werden. Hierbei kann unterschieden werden, ob http (sprich unsecure websocket) oder https (secure websocket) genutzt wird.
Da der Load-Balancer den https üblicherweise entschlüsselt, muss bei https nur der Port 3003 auf den Load-Balancer geöffnet werden.
Firewall Konfiguration http
Folgende Befehle, auf folgende Maschinen ausführen:
- Auf CHAT Server (hier der Chat-Port sowie die Hazelcast Cluster Ports)
firewall-cmd --zone=public --add-port=5701-5801/tcp --permanent firewall-cmd --zone=public --add-port=3000/tcp --permanent firewall-cmd --reload
- Auf alle LB - bei http Verbindung nach Aussen
firewall-cmd --zone=public --add-port=3000/tcp --permanent firewall-cmd --reload
Firewall Konfiguration https
- Auf alle LB - bei https Verbindung nach Aussen
firewall-cmd --zone=public --add-port=3003/tcp --permanent firewall-cmd --reload
Firewall Centos 6
service iptables status iptables -I INPUT 4 -p tcp -m tcp --dport 5701:5801 -j ACCEPT iptables -I INPUT 4 -p tcp -m tcp --dport 3000:3003 -j ACCEPT service iptables save service iptables restart
Load Balancer Konfiguration
haproxy.cfg Anpassungen
Für http
Folgende Anpassungen werden am haproxy vorgenommen, bei einer http Verbindung für den Chat nach Aussen:
frontend acdportal_chat_ws mode http bind :3000 timeout client 1d default_backend backend_chat_ws backend backend_chat_ws mode http balance leastconn # roundrobin server chatserver1 <ip_addresse_oder_name>:3000 weight 1 check inter 1m server chatserver2 <ip_addresse_oder_name>:3000 weight 1 check inter 1m
Für https
frontend acdportal_chat_wss mode http bind :3003 ssl crt /etc/haproxy/haproxy.pem timeout client 1d default_backend backend_chat_ws backend backend_chat_ws mode http balance leastconn # roundrobin server chatserver1 <ip_addresse_oder_name>:3000 weight 1 check inter 1m server chatserver2 <ip_addresse_oder_name>:3000 weight 1 check inter 1m
Haproxy neu laden
Anschließend, den haproxy neu laden mit folgenden Befehl:
service haproxy reload
Chat Konfiguration
Parameter (als sysadmin)
Für https / wss
ACD.Chat.Script.Library.URL | https://<load-balancer>:3003/gui/ |
ACD.Chat.Server.Base.URL | wss://<load-balancer>:3003 |
Für http / ws
ACD.Chat.Script.Library.URL | https://<load-balancer>:3000/gui/ |
ACD.Chat.Server.Base.URL | ws://<load-balancer>:3000 |
Status
Ein entsprechender Agentenstatus für "Chat" - oder einen vorhandenen Status - muss konfiguriert werden, sodass der Chat an den Agenten verteilt wird:
Max Chats pro Agent
Die maximale Anzahl an parallele Chats pro Agent muss konfiguriert werden. Dieser Wert ist standardmäßig bei allen Agenten auf 0 eingestellt.
Zusätzliche Konfigurationen für WhatsApp
Damt What's App funktioniert, müssen weitere Konfigurationen noch getätigt werden.
Hinweis: das Einrichten vom WhatsApp Business-Konto bzw. die Anbindung an den Provider (derzeit TynTec) erfolgt direkt mit dem Provider.
https
Der Load-Balancer muss mit https und ein gültiges Zertifikat betrieben werden.
Zusätzliche Konfiguration im jtel-clientmessenger
Der Parameter DATADIR muss geprüft werden. Dies muss entweder auf das /srv/jtel/shared/Data/Clients/ Verzeichnis zeigen, falls dieser am Chat-Server direkt gehostet ist, oder /home/jtel/shared/Data/clients/, falls der Server das Verzeichnis gemoutet hat.
DATADIR="/home/jtel/shared/Data/clients/"
Zusätzliche Konfigurationen am Load-Balancer
Im Bereich frontend für das Portal sind zusätzliche Einträge nötig:
frontend acdportal_https ... acl whatsapp_req path /incoming acl whatsapp_req path /delivery ... use_backend backend_chat_ws if whatsapp_req
Zusätzliche Parameter
Folgende System-Parameter müssen im Portal geprüft werden:
Parameter | Wert | Kommentar |
---|---|---|
ACD.Whatsapp.Server.Base.URL | Die URL, die vom Agenten-Client genutzt wird, damit der Agent auf Nachrichten antworten kann. Dies muss von allen Agenten-Arbeitsplätze aus gesehen auf eine gültige URL per DNS aufgelöst werden, und wird über den haproxy auf den Chatserver gerichtet. | |
ACD.Whatsapp.Whatsapp.Url | https://jtel-portal:3003 | Die URL, die von der Aussenwelt (WhatsApp Nutzer) genutzt wird, damit die Anhänge der Nachrichten heruntergeladen werden können. Dies muss vom Internet aus gesehen auf eine gültige URL per DNS aufgelöst werden, und wird über den haproxy auf den Chatserver gerichtet. |
ACD.Whatsapp.Tyntec.Url | https://api.tyntec.com/chat-api/v2/messages | Die URL des TynTec APIs für WhatsApp. |
TynTec API Endpunkte anpassen
Es kann notwendig sein, die API Endpunkte anzupassen, auf den die Nachrichten gesendet werden. Derzeit bietet TynTec keine Möglichkeit dies über eine Web-Konfiguration durchzuführen, dies muss über ein REST Aufruf geschehen. Dies kann am einfachsten mit Postman erfolgen.
Folgende Parameter werden benötigt, hierbei werden beide Callback-URL entsprechend des Endpunktes des Systems angepasst.
Einstellung | Wert |
---|---|
URL | https://api.tyntec.com/chat-api/v2/applications/default |
Request Typ | PATCH |
Authorization | apikey Wert = den generierten API Key von Tyntec |
Zusätzliche Header | Accept application/problem+json |
Zusätzliche Header | Content-Type application/json |
Body | { |
Chat-Connector Konfiguration
Folgende zusätzliche Parameter werden beim Chat-Connector konfiguriert:
- Der Haken Whatsapp wird gesetzt.
- Der TynTec API Key wird eingetragen.
- Die Rufnummer wird in E.164 Format eingetragen.