Skip to content
This repository has been archived by the owner on Oct 22, 2024. It is now read-only.

brsuperinternet/finalizar-atendimento-os

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Finalização em Massa de Atendimentos no Sistema ERP IXC-SOFT

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.

Bibliotecas

  • Requests
  • Base64
  • Json
  • openpyxl
  • datetime

Estrutura do Projeto

  • planilha.xlsx: Arquivo Excel contendo os IDs dos atendimentos a serem finalizados.
  • main.py: Script Python para finalizar os atendimentos em massa.

Como Configurar

  1. Clone o Repositório:
    git clone https://github.com/LucasMaciel7/Finalizar_atendimentos_IXC-API.git
  2. Instale as bibliotecas necessárias:
    pip install requests openpyxl
  3. Configure o script:
    • Adicione o host da API no campo host.
    • Adicione o token de autenticação no campo token.

Estrutura do Script

Importação de Bibliotecas

import requests
import base64
import json
import openpyxl
from datetime import datetime
import time

Inicialização de Variáveis

atendimentos = []
response_count = 0
data_hora_atual = datetime.now().isoformat()

Carregamento da Planilha

planilha = openpyxl.load_workbook('planilha.xlsx')
planilha_ativa = planilha.active

Definição do Host, URL e Token de Autenticação

host = ""  # Adicione o seu Host!
url = "https://{}/webservice/v1/su_mensagens/{}".format(host, atendimentos)
token = "".encode('utf-8')  # Token de autenticação

Exibição do Horário de Inicialização

print(f"Horario da inicialização {data_hora_atual}/n")
print("-" * 50)

Extração dos IDs dos Atendimentos

for linha in planilha_ativa.iter_rows(min_row=2, values_only=True):
    if linha[0] is not None:
        atendimentos.append(linha[0])

Criação das Requisições

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)

Exibição do Horário de Finalização

print(response.text)
print("-" * 50)
print(f"\nHorario da finalização ", datetime.now().isoformat())
print('\nComando enviado com SUCESSO, FINALIZADO!')

Execução do Script

  1. Execute o script:
    python main.py
  2. Monitore a execução:
    • O script exibirá mensagens no console indicando o progresso e pausas realizadas durante a execução.

Contribuições

Sinta-se à vontade para contribuir com melhorias e novas funcionalidades. Abra uma issue ou envie um pull request com suas sugestões.

Licença

Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Languages

  • Python 100.0%