Automação do zendesk com selenium e zenpy
Project description
Automação Zendesk com Selenium e Zenpy Este projeto contém um conjunto de classes Python para automatizar tarefas na plataforma Zendesk, combinando a automação de interface web com Selenium e a manipulação de dados via API com a biblioteca Zenpy.
A biblioteca é projetada para ser robusta, gerenciando sessões de navegador de longa duração (localmente ou via Selenoid) e interagindo com a API do Zendesk para buscar e atualizar tickets.
🚀 Funcionalidades Principais Gerenciamento de Driver Selenium:
Criação de drivers do Chrome locais ou remotos (Selenoid).
Configuração de sessionTimeout para robôs de longa duração.
Verificação de saúde da sessão e recriação automática do driver em caso de falha.
Automação de UI do Zendesk (Selenium):
Login automático na plataforma.
Navegação para filas de tickets e início do modo "Play".
Extração de valores de campos de input e dropdown.
Preenchimento de campos e seleção de opções em dropdowns.
Envio de tickets e fechamento de abas.
Manipulação inteligente de esperas para elementos dinâmicos (como spinners de carregamento).
Interação com a API do Zendesk (Zenpy):
Autenticação segura via token.
Busca de tickets em filas (visualizações) específicas.
Extração de valores de campos personalizados (custom fields) de um ticket.
Criação de novos tickets com campos personalizados, tags e comentários.
📋 Pré-requisitos Antes de começar, certifique-se de que você tem os seguintes pré-requisitos:
Python 3.8 ou superior.
As bibliotecas listadas no arquivo requirements.txt.
pip install selenium zenpy requests urllib3 python-dotenv pandas pandas-gbq Acesso a uma instância do Selenoid (para execução remota) ou o chromedriver instalado localmente.
Um arquivo .env no diretório raiz para armazenar as credenciais de forma segura.
Variáveis de Ambiente (.env) Crie um arquivo chamado .env e adicione as seguintes variáveis:
Snippet de código
Credenciais para login via UI (Selenium)
ID_LOGIN="seu_email_login@exemplo.com" ID_PASS="sua_senha"
Credenciais para a API (Zenpy)
ZENPY_EMAIL="seu_email_api@exemplo.com/token" ZENPY_TOKEN="seu_token_da_api" 🛠️ Como Usar A biblioteca é dividida em três componentes principais: a classe de controle do Driver, a classe de automação do Selenium e a classe de interação com a API.
- Classe Driver_Selenium Esta classe é uma "fábrica" para criar e gerenciar a vida útil do driver do Selenium.
Uso:
Python
Criar um driver remoto (padrão)
driver = Driver_Selenium.criar_driver(local=False, timeout='24h')
Criar um driver local
driver = Driver_Selenium.criar_driver(local=True)
Verificar e recriar o driver se a sessão caiu
driver = Driver_Selenium.verificar_e_recriar_driver(driver) 2. Classe Zendesk_Selenium Esta classe contém todos os métodos para interagir com a interface web do Zendesk. Ela recebe uma instância do driver para operar.
Uso:
Python
Crie o driver primeiro
driver = Driver_Selenium.criar_driver()
Crie a instância da classe, passando o driver
zendesk_ui = Zendesk_Selenium(driver, "usuario", "senha", "sua_instancia")
Execute ações
zendesk_ui.login() zendesk_ui.driver.get("https://sua_instancia.zendesk.com/agent/tickets/12345") zendesk_ui.selecionar_dropdown(360011074672, 'CD300') zendesk_ui.enviar_aberto() # Usa ActionChains para atalhos zendesk_ui.fechar_ticket_atual() 3. Classe Zendesk_Zenpy Esta classe lida com todas as comunicações com a API do Zendesk.
Uso:
Python
Crie a instância com as credenciais da API
zenpy_api = Zendesk_Zenpy("email_api", "token_api", "sua_instancia")
Buscar tickets de uma fila (view)
id_da_fila = 123456789 tickets_na_fila = zenpy_api.pegar_tickets(fila=id_da_fila)
Extrair campos personalizados de um ticket específico
id_do_ticket = tickets_na_fila[0] campos_desejados = {'CD_ENTREGA': 360011074672, 'PRAZO_FCR': 360013231212} valores = zenpy_api.extrair_customfields(ticket_id=id_do_ticket, lista_campos=campos_desejados)
print(valores)
Saída: {'CD_ENTREGA': 'cd_300', 'PRAZO_FCR': '3_dias'}
📜 Exemplo de Script Principal (Robô Contínuo) O exemplo abaixo mostra como combinar as classes para criar um robô que monitora uma fila do Zendesk continuamente, se recuperando de falhas de sessão.
Python
Importações e credenciais
from classes import Driver_Selenium, Zendesk_Selenium, Zendesk_Zenpy
...
Inicialização
driver = None
try: while True: # Garante que o driver está ativo antes de cada ciclo driver = Driver_Selenium.verificar_e_recriar_driver(driver)
# Cria as instâncias das classes com o driver ativo
zendesk = Zendesk_Selenium(driver, usuario, senha, instancia)
zenpy = Zendesk_Zenpy(zemail, zpass, instancia)
# 1. Faz o login (se necessário)
zendesk.login()
# 2. Busca tickets na API
lista_tickets = zenpy.pegar_tickets(fila=12345)
if not lista_tickets:
print("Fila vazia. Aguardando...")
sleep(600)
continue
# 3. Processa cada ticket
for ticket_id in lista_tickets:
driver.get(f'https://sua_instancia.zendesk.com/agent/tickets/{ticket_id}')
zendesk.esperar_carregamento()
# ...lógica de automação...
zendesk.fechar_ticket_atual()
sleep(120)
except KeyboardInterrupt: print("Robô interrompido pelo usuário.") finally: if driver: print("Encerrando a sessão do driver.") driver.quit()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file dadosic_zenlenium-0.2.3.tar.gz.
File metadata
- Download URL: dadosic_zenlenium-0.2.3.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9d4f4e75b8dc3f3ccad7adb7c8cd80028e0cde9b60010b222d775773171b81a
|
|
| MD5 |
51776a912c673033a3f2aebb857f23f2
|
|
| BLAKE2b-256 |
fcf110536006a7fa78e8a6ffef51bce6c4ab5a658a721f9eeb5a2bf2f9b523e4
|