- A minha primeira campanha
- A sua primeira chamada em 3 minutos
- Ativar a sua campanha
- Adicionar utilizadores
- Dispor os campos de formulários
- Definir o identificador de chamada
- Exportar resultados de chamadas
- Carregar o seu crédito de chamadas
- Efetuar chamadas
- Modelos de campanha Dialfire
- Dominando Dialfire
Sync Client V2
O Sync Client pode ser usado para transferir todas as atualizações de contatos para um banco de dados SQL ou para um serviço web.
Ativação
Para usar o Sync Client, ative o conector correspondente nas configurações da campanha.
Após a ativação bem-sucedida, um token será exibido abaixo do conector – esse token é necessário para utilizar o cliente.
O token é visível apenas para o usuário que ativou o conector.
Instalação
Baixar a Última Versão do Binário
Baixar e Compilar o Código Fonte
Instalar Git:
sudo apt-get install git
Instalar Google Go:
sudo apt-get install golang-go
Para os próximos passos, certifique-se de que a variável de ambiente GOPATH esteja configurada.
Uma descrição de como configurar o GOPATH pode ser encontrada aqui.
Clonar o repositório:
go get bitbucket.org/modima/dbsync2
Instalar todas as dependências:
cd $GOPATH/src/bitbucket.org/modima/dbsync && godep restore
Compilar o Código Fonte
- Plataforma alvo Linux:
cd $GOPATH/src/bitbucket.org/modima/dbsync2/ && go build
- Plataforma alvo Windows:
cd $GOPATH/src/bitbucket.org/modima/dbsync2/ && GOOS=windows GOARCH=amd64 go build -o dbsync2.exe
- Plataforma alvo Mac:
cd $GOPATH/src/bitbucket.org/modima/dbsync2/ && GOOS=darwin GOARCH=amd64 go build -o dbsync2_mac
Implantação com Docker Compose
Para os usuários que preferem uma implantação em contêiner, é fornecido um arquivo docker-compose.yml pré-configurado.
Este arquivo suporta todos os modos (PostgreSQL, MySQL/MariaDB, SQL Server e Webhook), permitindo que você execute o dbsync2 sem modificar o código fonte – basta atualizar um único arquivo .env.
Pré-requisitos
- Docker instalado
- Docker Compose instalado
Configuração
Crie um arquivo .env no mesmo diretório que o seu docker-compose.yml com o seguinte conteúdo (ajuste os valores conforme necessário):
# Configurações da campanha
CAMPAIGN_ID=my_campaign_id
CAMPAIGN_TOKEN=my_campaign_token
# Configurações do PostgreSQL
POSTGRES_DB=mydb
POSTGRES_USER=myuser
POSTGRES_PASSWORD=mypassword
# Configurações do MySQL
MYSQL_DB=mydb
MYSQL_USER=myuser
MYSQL_PASSWORD=mypassword
MYSQL_ROOT_PASSWORD=myrootpassword
# Configurações do SQL Server
SA_PASSWORD=YourStrong!Passw0rd
SQLSERVER_DB=mydb
# Configurações do Webhook
WEBHOOK_URL=https://example.com/api/transactions/
docker-compose.yml
A seguir, um exemplo de arquivo docker-compose.yml que utiliza nossa imagem do Docker Hub (dialfire/dbsync2:latest
) e lê todas as informações de conexão a partir do arquivo .env:
version: "3.8"
services:
#############################
# Exemplo 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
#############################
# Exemplo 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
#############################
# Exemplo 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}
#############################
# Exemplo 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: {}
Executando com Docker Compose
Depois de configurar o arquivo .env e o docker-compose.yml, basta executar:
docker-compose up -d
O Docker Compose irá baixar a imagem pré-construída dialfire/dbsync2:latest
e iniciar todos os serviços conforme sua configuração.
Como Funciona
Todas as atualizações de contatos são obtidas a cada minuto e transferidas diretamente para o serviço web ou para o banco de dados SQL configurado (consulte Uso).
Uso
Banco de Dados SQL
O cliente suporta os seguintes sistemas de gerenciamento de banco de dados:
- MySQL / MariaDB
- PostgreSQL
- Microsoft SQL Server
Antes de utilizar o cliente, certifique-se de que o banco de dados correspondente já exista. O cliente, então, criará as seguintes tabelas nesse banco de dados:
- contacts
Contém todos os campos $ e os 100 primeiros campos personalizados da campanha. - transactions
Contém todas as transações juntamente com a chave estrangeira contact_id, que referencia o contato correspondente. - connections
Contém todas as conexões das transações, com a chave estrangeira transaction_id. - recordings
Contém todas as gravações de chamadas associadas às conexões, com a chave estrangeira connection_id. - inbound_calls
Contém todas as chamadas recebidas com a chave estrangeira contact_id.
Esquema da URL de Conexão ao Banco de Dados
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
Exemplo
Transfira todas as transações a partir de 01 de fevereiro de 2018 da campanha MY_CAMPAIGN para uma instância local do Microsoft SQL Server, filtrando apenas as atualizações que comecem com os prefixos 'fc_' ou 'qc_' e que tenham sido realizadas por um usuário:
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
Serviço Web
Alternativamente, as transações podem ser enviadas para um serviço web.
O serviço web deve aceitar requisições POST e responder com um código de status entre 200 e 299 em caso de sucesso (caso contrário, a transmissão será reexecutada até 10 vezes).
A carga útil é enviada em formato JSON:
{
"contact": ...,
"transaction": ...,
"state": ...
}
- contact: Contém as informações do contato.
- transaction: Contém a transação correspondente.
- state:
new
para uma nova transaçãoupdated
quando uma transação é atualizada (por exemplo, quando os dados de conexão são adicionados).
Exemplo
Envie todas as transações futuras da campanha MY_CAMPAIGN para um serviço web:
./dbsync2 --a webhook --c MY_CAMPAIGN_ID --ct MY_CAMPAIGN_TOKEN --url 'https://example.com/api/transactions/'
Protocolo de Erro
- Todas as mensagens de erro são exibidas diretamente no console (stdout).
- Todas as mensagens de log são gravadas em:
/var/log/dbsync/{MY_CAMPAIGN_ID}_{MODE}_{TIMESTAMP}.log
- Se o diretório /var/log/ não tiver permissão de escrita, os logs serão salvos em:
$HOME/.dbsync/logs/{MY_CAMPAIGN_ID}_{MODE}_{TIMESTAMP}.log
Opções da Linha de Comando
Para obter uma visão geral de todas as opções, execute:
dbsync2 --help