- Meine erste Kampagne
- Ihr erster Anruf in 3 Minuten
- Mit Ihrer Kampagne durchstarten
- Benutzer hinzufügen
- Die Kundenmaske anpassen
- Eigene Rufnummer hinterlegen
- Telefonie-Ergebnisse exportieren
- Das Gesprächsguthaben aufladen
- Anrufe tätigen
- Kampagnenvorlagen
- Dialfire richtig verstehen
Sync Client V2
Der Sync Client kann verwendet werden, um alle Aktualisierungen von Kontakten in eine SQL-Datenbank oder an einen Webservice zu übertragen.
Aktivierung
Um den Sync Client zu verwenden, aktivieren Sie den entsprechenden Connector in den Kampagneneinstellungen.
Nach erfolgreicher Aktivierung wird Ihnen ein Token unterhalb des Connectors angezeigt – dieses Token wird zum Verwenden des Clients benötigt.
Das Token ist nur für den Benutzer sichtbar, der den Connector aktiviert hat.
Installation
Neueste Version des Binaries herunterladen
Quellcode herunterladen und kompilieren
Git installieren:
sudo apt-get install git
Google Go installieren:
sudo apt-get install golang-go
Stellen Sie für die nächsten Schritte sicher, dass die Umgebungsvariable GOPATH gesetzt ist.
Eine Anleitung zum Setzen der GOPATH-Variable finden Sie hier.
Repository klonen:
go get bitbucket.org/modima/dbsync2
Alle Abhängigkeiten installieren:
cd $GOPATH/src/bitbucket.org/modima/dbsync && godep restore
Quellcode kompilieren
- Zielplattform Linux:
cd $GOPATH/src/bitbucket.org/modima/dbsync2/ && go build
- Zielplattform Windows:
cd $GOPATH/src/bitbucket.org/modima/dbsync2/ && GOOS=windows GOARCH=amd64 go build -o dbsync2.exe
- Zielplattform Mac:
cd $GOPATH/src/bitbucket.org/modima/dbsync2/ && GOOS=darwin GOARCH=amd64 go build -o dbsync2_mac
Docker Compose Bereitstellung
Für Anwender, die eine containerisierte Bereitstellung bevorzugen, wird eine vorkonfigurierte docker-compose.yml bereitgestellt.
Diese Datei unterstützt alle Modi (PostgreSQL, MySQL/MariaDB, SQL Server und Webhook), sodass Sie dbsync2 ohne Anpassung des Quellcodes ausführen können – es genügt, eine einzelne .env-Datei zu aktualisieren.
Voraussetzungen
- Docker installiert
- Docker Compose installiert
Konfiguration
Erstellen Sie eine .env-Datei im selben Verzeichnis wie Ihre docker-compose.yml mit folgendem Inhalt (passen Sie die Werte nach Bedarf an):
# Kampagneneinstellungen
CAMPAIGN_ID=my_campaign_id
CAMPAIGN_TOKEN=my_campaign_token
# PostgreSQL-Einstellungen
POSTGRES_DB=mydb
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
# MySQL-Einstellungen
MYSQL_DB=mydb
MYSQL_USER=myuser
MYSQL_PASSWORD=mypassword
MYSQL_ROOT_PASSWORD=myrootpassword
# SQL Server-Einstellungen
SA_PASSWORD=YourStrong!Passw0rd
SQLSERVER_DB=mydb
# Webhook-Einstellungen
WEBHOOK_URL=https://example.com/api/transactions/
docker-compose.yml
Nachfolgend ein Beispiel für eine docker-compose.yml-Datei, die unser Docker-Hub-Image (dialfire/dbsync2:latest
) verwendet und alle Verbindungsdaten aus der .env-Datei liest:
version: "3.8"
services:
#############################
# PostgreSQL Beispiel
#############################
postgres:
image: postgres:16
container_name: postgres_sync
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-mydb}
POSTGRES_USER: ${POSTGRES_USER:-myuser}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-mypassword}
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
dbsync2_postgres:
image: dialfire/dbsync2:latest
container_name: dbsync2_postgres
restart: unless-stopped
depends_on:
- postgres
environment:
CAMPAIGN_ID: ${CAMPAIGN_ID}
CAMPAIGN_TOKEN: ${CAMPAIGN_TOKEN}
POSTGRES_USER: ${POSTGRES_USER:-myuser}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-mypassword}
POSTGRES_DB: ${POSTGRES_DB:-mydb}
command: >
dbsync2 --a db_sync --c ${CAMPAIGN_ID} --ct ${CAMPAIGN_TOKEN} --url postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable
#############################
# MySQL/MariaDB Beispiel
#############################
mysql:
image: mysql:8
container_name: mysql_sync
restart: unless-stopped
environment:
MYSQL_DATABASE: ${MYSQL_DB:-mydb}
MYSQL_USER: ${MYSQL_USER:-myuser}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-mypassword}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpassword}
volumes:
- ./data/mysql:/var/lib/mysql
ports:
- "3306:3306"
dbsync2_mysql:
image: dialfire/dbsync2:latest
container_name: dbsync2_mysql
restart: unless-stopped
depends_on:
- mysql
environment:
CAMPAIGN_ID: ${CAMPAIGN_ID}
CAMPAIGN_TOKEN: ${CAMPAIGN_TOKEN}
MYSQL_USER: ${MYSQL_USER:-myuser}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-mypassword}
MYSQL_DB: ${MYSQL_DB:-mydb}
command: >
dbsync2 --a db_sync --c ${CAMPAIGN_ID} --ct ${CAMPAIGN_TOKEN} --url mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@mysql:3306/${MYSQL_DB}?useSSL=false
#############################
# SQL Server Beispiel
#############################
sqlserver:
image: mcr.microsoft.com/mssql/server:2019-latest
container_name: sqlserver_sync
restart: unless-stopped
environment:
SA_PASSWORD: ${SA_PASSWORD:-YourStrong!Passw0rd}
ACCEPT_EULA: "Y"
MSSQL_PID: "Developer"
ports:
- "1433:1433"
dbsync2_sqlserver:
image: dialfire/dbsync2:latest
container_name: dbsync2_sqlserver
restart: unless-stopped
depends_on:
- sqlserver
environment:
CAMPAIGN_ID: ${CAMPAIGN_ID}
CAMPAIGN_TOKEN: ${CAMPAIGN_TOKEN}
SA_PASSWORD: ${SA_PASSWORD:-YourStrong!Passw0rd}
SQLSERVER_DB: ${SQLSERVER_DB:-mydb}
command: >
dbsync2 --a db_sync --c ${CAMPAIGN_ID} --ct ${CAMPAIGN_TOKEN} --url sqlserver://sa:${SA_PASSWORD}@sqlserver:1433/${SQLSERVER_DB}
#############################
# Webhook Beispiel
#############################
dbsync2_webhook:
image: dialfire/dbsync2:latest
container_name: dbsync2_webhook
restart: unless-stopped
environment:
CAMPAIGN_ID: ${CAMPAIGN_ID}
CAMPAIGN_TOKEN: ${CAMPAIGN_TOKEN}
WEBHOOK_URL: ${WEBHOOK_URL:-https://example.com/api/transactions/}
command: >
dbsync2 --a webhook --c ${CAMPAIGN_ID} --ct ${CAMPAIGN_TOKEN} --url ${WEBHOOK_URL}
networks:
default: {}
Ausführen mit Docker Compose
Nachdem Ihre .env-Datei und die docker-compose.yml konfiguriert sind, führen Sie folgenden Befehl aus:
docker-compose up -d
Docker Compose lädt das vorkonfigurierte dialfire/dbsync2:latest
-Image und startet alle Dienste gemäß Ihrer Konfiguration.
Funktionsweise
Alle Aktualisierungen der Kontakte werden jede Minute geladen und anschließend direkt an den konfigurierten Webservice oder die SQL-Datenbank übertragen (siehe Nutzung).
Nutzung
SQL-Datenbank
Der Client unterstützt die folgenden Datenbanksysteme:
- MySQL / MariaDB
- PostgreSQL
- Microsoft SQL Server
Stellen Sie vor der Verwendung sicher, dass die entsprechende Datenbank bereits existiert. Der Client erstellt dann in dieser Datenbank die folgenden Tabellen:
- contacts
Enthält alle $-Felder sowie die ersten 100 benutzerdefinierten Felder der Kampagne. - transactions
Enthält alle Transaktionen und den Fremdschlüssel contact_id, der auf den entsprechenden Kontakt verweist. - connections
Enthält alle Verbindungen zu den Transaktionen, mit dem Fremdschlüssel transaction_id. - recordings
Enthält alle Anrufaufzeichnungen, die mit Verbindungen verknüpft sind (Fremdschlüssel connection_id). - inbound_calls
Enthält alle eingehenden Anrufe mit dem Fremdschlüssel contact_id.
Datenbank-Verbindungs-URL Schema
MySQL / MariaDB:
mysql://username:password@localhost:3306/database?useSSL=false
PostgreSQL:
postgres://username:password@localhost:5432/database?sslmode=disable
Microsoft SQL Server:
sqlserver://username:password@localhost:1433/instance/database
Beispiel
Übertragen Sie alle Transaktionen ab dem 01. Februar 2018 in der Kampagne MY_CAMPAIGN auf eine lokal laufende Microsoft SQL Server-Instanz. Dabei sollen nur Aktualisierungen, die mit den Präfixen 'fc_' oder 'qc_' beginnen und von einem Benutzer durchgeführt wurden, übernommen werden:
dbsync2 --a db_sync --fm hi_updates_only --fp 'fc_,qc_' --c MY_CAMPAIGN_ID --ct MY_CAMPAIGN_TOKEN --s 2018-02-01 --url sqlserver://my_user:my_password@localhost:1433/my_database
Webservice
Alternativ können Transaktionen an einen Webservice weitergeleitet werden.
Der Webservice muss POST-Anfragen akzeptieren und bei erfolgreichem Empfang der Daten einen Statuscode zwischen 200 und 299 zurückgeben (ansonsten wird die Übertragung bis zu 10-mal wiederholt).
Die Nutzlast wird im JSON-Format gesendet:
{
"contact": ...,
"transaction": ...,
"state": ...
}
- contact: Enthält die Kontaktdaten.
- transaction: Enthält die entsprechende Transaktion.
- state:
new
für eine neue Transaktionupdated
wenn eine Transaktion aktualisiert wird (z. B. wenn Verbindungsdaten hinzugefügt werden).
Beispiel
Leiten Sie alle zukünftigen Transaktionen in der Kampagne MY_CAMPAIGN an einen Webservice weiter:
./dbsync2 --a webhook --c MY_CAMPAIGN_ID --ct MY_CAMPAIGN_TOKEN --url 'https://example.com/api/transactions/'
(Fehler-)Protokoll
- Alle Fehlermeldungen werden direkt in der Konsole (stdout) ausgegeben.
- Alle Logmeldungen werden geschrieben in:
/var/log/dbsync/{MY_CAMPAIGN_ID}_{MODE}_{TIMESTAMP}.log
- Falls das Verzeichnis /var/log/ nicht beschreibbar ist, erscheinen die Logs unter:
$HOME/.dbsync/logs/{MY_CAMPAIGN_ID}_{MODE}_{TIMESTAMP}.log
Befehlszeilenoptionen
Eine Übersicht aller Optionen erhalten Sie, indem Sie folgenden Befehl ausführen:
dbsync2 --help