Die 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 InstallationIn diesem Schritt wird Java 8 auf dem Server installiert. Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | Installation java 8 |
---|
| yum -y install https://cdn.jtel.de/downloads/java/jdk-8u202-linux-x64.rpm |
|
ClientMessenger Installieren und KonfigurierenClientMessenger InstallationDas Verzeichnis ClientMessenger wird nach /home/jtel kopiert. Translations Ignore |
---|
Code Block |
---|
| cp -R /home/jtel/shared/JTELCarrierPortal/Utils/Install/ClientMessenger/ /home/jtel/ClientMessenger
chown -R jtel:jtel /home/jtel/ClientMessenger |
|
Hazelcast Cluster KonfigurationDie 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. Die notwendigen Konfigurationsabschnitte in hazelcast.xml sind hier aufgeführt: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | hazelcast.xml |
---|
| ...
<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 installierenFalls 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. Translations Ignore |
---|
Code Block |
---|
| 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: Translations Ignore |
---|
Code Block |
---|
title | vi /home/jtel/ClientMessenger/init.d/jtel-clientmessenger |
---|
| ...
-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: Translations Ignore |
---|
Code Block |
---|
| 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: Translations Ignore |
---|
Code Block |
---|
| 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 KonfigurationAls 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 httpFolgende Befehle, auf folgende Maschinen ausführen: - Auf CHAT Server (hier der Chat-Port sowie die Hazelcast Cluster Ports)
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | configure firewall - http |
---|
| 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
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | configure firewall - http |
---|
| firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload |
|
Firewall Konfiguration https- Auf alle LB - bei https Verbindung nach Aussen
Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | configure firewall - https |
---|
| firewall-cmd --zone=public --add-port=3003/tcp --permanent
firewall-cmd --reload |
|
Firewall Centos 6 Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | configure firewall - https |
---|
| 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 Konfigurationhaproxy.cfg AnpassungenFür httpFolgende Anpassungen werden am haproxy vorgenommen, bei einer http Verbindung für den Chat nach Aussen: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | haproxy.cfg - http / ws |
---|
| 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 Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | haproxy.cfg - https / wss |
---|
| 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 ladenAnschließend, den haproxy neu laden mit folgenden Befehl: Translations Ignore |
---|
Code Block |
---|
language | bash |
---|
title | reload haproxy |
---|
| service haproxy reload |
|
Chat KonfigurationParameter (als sysadmin)Für https / wssACD.Chat.Script.Library.URL | https://<load-balancer>:3003/gui/ | ACD.Chat.Server.Base.URL | wss://<load-balancer>:3003 |
Für http / wsACD.Chat.Script.Library.URL | https://<load-balancer>:3000/gui/ | ACD.Chat.Server.Base.URL | ws://<load-balancer>:3000 |
StatusEin entsprechender Agentenstatus für "Chat" - oder einen vorhandenen Status - muss konfiguriert werden, sodass der Chat an den Agenten verteilt wird:
Max Chats pro AgentDie 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 WhatsAppDamt 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. Warning |
---|
| Der Load-Balancer muss mit https und ein gültiges Zertifikat betrieben werden. |
Zusätzliche Konfiguration im jtel-clientmessengerDer 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. Translations Ignore |
---|
Code Block |
---|
DATADIR="/home/jtel/shared/Data/clients/" |
|
Zusätzliche Konfigurationen am Load-BalancerIm Bereich frontend für das Portal sind zusätzliche Einträge nötig: Translations Ignore |
---|
Code Block |
---|
frontend acdportal_https
...
acl whatsapp_req path /incoming
acl whatsapp_req path /delivery
...
use_backend backend_chat_ws if whatsapp_req |
|
Zusätzliche ParameterFolgende System-Parameter müssen im Portal geprüft werden: Parameter | Wert | Kommentar |
---|
ACD.Whatsapp.Server.Base.URL | https://jtel-portal:3003 | 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 anpassenEs 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 |
Translations Ignore |
---|
{ "webhooks": [ { "events": [ "MoMessage" ], "callbackUrl": "https://jtel-portal/incoming" }, { "events": [ "MessageStatus::accepted", "MessageStatus::delivered", "MessageStatus::seen", "MessageStatus::failed", "MessageStatus::channelFailed", "MessageStatus::deleted", "WhatsAppGroupEvent::userJoined", "WhatsAppGroupEvent::userLeft", "WhatsAppGroupEvent::subjectChanged", "WhatsAppGroupEvent::descriptionChanged" ], "callbackUrl": "https://jtel-portal/delivery" } ] } |
|
Chat-Connector KonfigurationFolgende 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.
- Die Sprache für automatische WhatsApp-Antworten
|