You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

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. 

Installation java 8
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:

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 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:

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:

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 konfigurieren - 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

Firewall konfigurieren - http
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload

Firewall Konfiguration https

  • Auf alle LB - bei https Verbindung nach Aussen

Firewall konfigurieren - https
firewall-cmd --zone=public --add-port=3003/tcp --permanent
firewall-cmd --reload

Firewall Centos 6

Firewall konfigurieren - 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 Konfiguration

haproxy.cfg Anpassungen

Für http

Folgende Anpassungen werden am haproxy vorgenommen, bei einer http Verbindung für den Chat nach Aussen:

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

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 laden

Anschließend, den haproxy neu laden mit folgenden Befehl:

haproxy neu laden
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.URLwss://<load-balancer>:3003

Für http / ws

ACD.Chat.Script.Library.URL
https://<load-balancer>:3000/gui/
ACD.Chat.Server.Base.URLws://<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:

ParameterWertKommentar
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.Urlhttps://jtel-portal:3003Die 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.Urlhttps://api.tyntec.com/chat-api/v2/messagesDie 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.

EinstellungWert
URLhttps://api.tyntec.com/chat-api/v2/applications/default
Request TypPATCH
Authorization

apikey

Wert = den generierten API Key von Tyntec

Zusätzliche Header

Accept

application/problem+json

Zusätzliche Header

Content-Type

application/json

Body
{
"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 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.



  • No labels