- Mi primera campaña
- Tu primera llamada en 3 minutos
- Empezando tu campaña en vivo
- Iniciando una nueva llamada
- Organizando los campos del formulario
- Configuración del ID de llamadas
- Exportación de resultados de llamadas
- Agregando saldo a tu cuenta
- Realizando llamadas
- Plantillas de Campaña Dialfire
- Dominando Dialfire
Sync Client V2
El Sync Client se puede utilizar para transferir todas las actualizaciones de contactos a una base de datos SQL o a un servicio web.
Activación
Para utilizar el Sync Client, active el conector correspondiente en la configuración de la campaña.
Después de una activación exitosa, se mostrará un token debajo del conector; este token es necesario para usar el cliente.
El token solo es visible para el usuario que activó el conector.
Instalación
Descargar la Última Versión del Binario
Descargar y Compilar el Código Fuente
Instalar Git:
sudo apt-get install git
Instalar Google Go:
sudo apt-get install golang-go
Para los siguientes pasos, asegúrese de que la variable de entorno GOPATH esté configurada.
Una descripción sobre cómo configurar GOPATH se puede encontrar aquí.
Clonar el repositorio:
go get bitbucket.org/modima/dbsync2
Instalar todas las dependencias:
cd $GOPATH/src/bitbucket.org/modima/dbsync && godep restore
Compilar el Código Fuente
- Plataforma objetivo Linux:
cd $GOPATH/src/bitbucket.org/modima/dbsync2/ && go build
- Plataforma objetivo Windows:
cd $GOPATH/src/bitbucket.org/modima/dbsync2/ && GOOS=windows GOARCH=amd64 go build -o dbsync2.exe
- Plataforma objetivo Mac:
cd $GOPATH/src/bitbucket.org/modima/dbsync2/ && GOOS=darwin GOARCH=amd64 go build -o dbsync2_mac
Despliegue con Docker Compose
Para los usuarios que prefieren un despliegue en contenedores, se proporciona un archivo docker-compose.yml preconfigurado.
Este archivo soporta todos los modos (PostgreSQL, MySQL/MariaDB, SQL Server y Webhook), de modo que puede ejecutar dbsync2 sin modificar el código fuente, simplemente actualizando un único archivo .env.
Requisitos Previos
- Docker instalado
- Docker Compose instalado
Configuración
Cree un archivo .env en el mismo directorio que su docker-compose.yml con el siguiente contenido (ajuste los valores según sea necesario):
# Configuración de la campaña
CAMPAIGN_ID=my_campaign_id
CAMPAIGN_TOKEN=my_campaign_token
# Configuración de PostgreSQL
POSTGRES_DB=mydb
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
# Configuración de MySQL
MYSQL_DB=mydb
MYSQL_USER=myuser
MYSQL_PASSWORD=mypassword
MYSQL_ROOT_PASSWORD=myrootpassword
# Configuración de SQL Server
SA_PASSWORD=YourStrong!Passw0rd
SQLSERVER_DB=mydb
# Configuración de Webhook
WEBHOOK_URL=https://example.com/api/transactions/
docker-compose.yml
A continuación se muestra un ejemplo de archivo docker-compose.yml que utiliza nuestra imagen de Docker Hub (dialfire/dbsync2:latest
) y lee toda la información de conexión desde el archivo .env:
version: "3.8"
services:
#############################
# Ejemplo PostgreSQL
#############################
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
#############################
# Ejemplo MySQL/MariaDB
#############################
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
#############################
# Ejemplo SQL Server
#############################
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}
#############################
# Ejemplo Webhook
#############################
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: {}
Ejecutar con Docker Compose
Una vez configurados el archivo .env y docker-compose.yml, simplemente ejecute:
docker-compose up -d
Docker Compose descargará la imagen preconstruida dialfire/dbsync2:latest
y iniciará todos los servicios según su configuración.
Cómo Funciona
Todas las actualizaciones de contactos se obtienen cada minuto y se transfieren directamente al servicio web o a la base de datos SQL configurada (consulte Uso).
Uso
Base de Datos SQL
El cliente es compatible con los siguientes sistemas de gestión de bases de datos:
- MySQL / MariaDB
- PostgreSQL
- Microsoft SQL Server
Antes de utilizar el cliente, asegúrese de que la base de datos correspondiente ya exista. El cliente creará en dicha base de datos las siguientes tablas:
- contacts
Contiene todos los campos $ y los primeros 100 campos personalizados de la campaña. - transactions
Contiene todas las transacciones junto con la clave foránea contact_id que hace referencia al contacto correspondiente. - connections
Contiene todas las conexiones de las transacciones, con la clave foránea transaction_id. - recordings
Contiene todas las grabaciones de llamadas asociadas a las conexiones, con la clave foránea connection_id. - inbound_calls
Contiene todas las llamadas entrantes con la clave foránea contact_id.
Esquema de la URL de Conexión a la Base de Datos
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
Ejemplo
Transfiera todas las transacciones a partir del 01 de febrero de 2018 de la campaña MY_CAMPAIGN a una instancia local de Microsoft SQL Server, filtrando únicamente aquellas actualizaciones que comiencen con los prefijos 'fc_' o 'qc_' y que hayan sido realizadas por un usuario:
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
Servicio Web
Alternativamente, las transacciones pueden enviarse a un servicio web.
El servicio web debe aceptar solicitudes POST y responder con un código de estado entre 200 y 299 en caso de éxito (de lo contrario, se reintentará el envío hasta 10 veces).
La carga útil se envía en formato JSON:
{
"contact": ...,
"transaction": ...,
"state": ...
}
- contact: Contiene la información del contacto.
- transaction: Contiene la transacción correspondiente.
- state:
new
para una nueva transacciónupdated
cuando una transacción se actualiza (por ejemplo, cuando se agregan datos de conexión).
Ejemplo
Envía todas las transacciones futuras de la campaña MY_CAMPAIGN a un servicio web:
./dbsync2 --a webhook --c MY_CAMPAIGN_ID --ct MY_CAMPAIGN_TOKEN --url 'https://example.com/api/transactions/'
Protocolo de (Error)
- Todos los mensajes de error se muestran directamente en la consola (stdout).
- Todos los mensajes de log se escriben en:
/var/log/dbsync/{MY_CAMPAIGN_ID}_{MODE}_{TIMESTAMP}.log
- Si el directorio /var/log/ no es accesible para escritura, los logs aparecerán en:
$HOME/.dbsync/logs/{MY_CAMPAIGN_ID}_{MODE}_{TIMESTAMP}.log
Opciones de la Línea de Comandos
Puede obtener una vista general de todas las opciones ejecutando:
dbsync2 --help