Skip to main content

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.

  1. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dadosic_zenlenium-0.1.2.tar.gz (12.3 kB view details)

Uploaded Source

File details

Details for the file dadosic_zenlenium-0.1.2.tar.gz.

File metadata

  • Download URL: dadosic_zenlenium-0.1.2.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for dadosic_zenlenium-0.1.2.tar.gz
Algorithm Hash digest
SHA256 07f36310e971d84724486a325d9d2e71ef67efc181babb3f96dc073897b2fb1b
MD5 ecc03fbe97bad6e31b6bd67dbe498979
BLAKE2b-256 979a0a05637a89f94256141aecf6001fcf4bfd3e0782f9a8a69e0a82b46e8696

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page