Este projeto tem como objetivo automatizar a finalização de atendimentos em massa no sistema ERP IXC-SOFT, utilizando a API do sistema. O script em Python faz requisições a partir de uma planilha Excel contendo os IDs dos atendimentos a serem finalizados.
- Requests
- Base64
- Json
- openpyxl
- datetime
- planilha.xlsx: Arquivo Excel contendo os IDs dos atendimentos a serem finalizados.
- main.py: Script Python para finalizar os atendimentos em massa.
- Clone o Repositório:
git clone https://github.com/LucasMaciel7/Finalizar_atendimentos_IXC-API.git
- Instale as bibliotecas necessárias:
pip install requests openpyxl
- Configure o script:
- Adicione o host da API no campo
host
. - Adicione o token de autenticação no campo
token
.
- Adicione o host da API no campo
import requests
import base64
import json
import openpyxl
from datetime import datetime
import time
atendimentos = []
response_count = 0
data_hora_atual = datetime.now().isoformat()
planilha = openpyxl.load_workbook('planilha.xlsx')
planilha_ativa = planilha.active
host = "" # Adicione o seu Host!
url = "https://{}/webservice/v1/su_mensagens/{}".format(host, atendimentos)
token = "".encode('utf-8') # Token de autenticação
print(f"Horario da inicialização {data_hora_atual}/n")
print("-" * 50)
for linha in planilha_ativa.iter_rows(min_row=2, values_only=True):
if linha[0] is not None:
atendimentos.append(linha[0])
for id in atendimentos:
payload = {
"id_ticket": id,
"data": "CURRENT_TIMESTAMP",
'mensagens_nao_lida_cli': 'Finalizado via API',
"operador": "",
'su_status': 'S',
"mensagem": "Finalização de atendimentos em massa via API",
"visibilidade_mensagens": "PU",
"existe_pendencia_externa": "0",
"id_evento_status": "0",
"ultima_atualizacao": data_hora_atual
}
headers = {
'Authorization': 'Basic {}'.format(base64.b64encode(token).decode('utf-8')),
'Content-Type': 'application/json'
}
while True:
try:
response = requests.post(url, data=json.dumps(payload), headers=headers, timeout=30)
if response.status_code == 200:
response_count += 1
if response_count == 1000:
response_count = 0
print("1000 Atendimentos finalizados, realizando pausa de 5 minutos")
time.sleep(300)
break
else:
print('Resposta da API não foi 200, realizando pausa de 5 minutos')
time.sleep(300)
except requests.exceptions.Timeout:
print('Tempo limite de conexão excedido, realizando pausa de 5 minutos')
time.sleep(300)
except requests.exceptions.RequestException as e:
print('Erro ao fazer requisição:', e)
time.sleep(300)
print(response.text)
print("-" * 50)
print(f"\nHorario da finalização ", datetime.now().isoformat())
print('\nComando enviado com SUCESSO, FINALIZADO!')
- Execute o script:
python main.py
- Monitore a execução:
- O script exibirá mensagens no console indicando o progresso e pausas realizadas durante a execução.
Sinta-se à vontade para contribuir com melhorias e novas funcionalidades. Abra uma issue ou envie um pull request com suas sugestões.
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.