dadosic-zenlenium


Namedadosic-zenlenium JSON
Version 0.0.2 PyPI version JSON
download
home_pageNone
SummaryAutomação do zendesk com selenium e zenpy
upload_time2025-08-12 20:46:42
maintainerNone
docs_urlNone
authorGustavo Sartorio
requires_pythonNone
licenseMIT License
keywords zendesk selenium
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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()



            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "dadosic-zenlenium",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "zendesk selenium",
    "author": "Gustavo Sartorio",
    "author_email": "strov3rl@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/56/37/b5fd6c88c101f0e9bdddbcf767e2b0146f573ca7a6f3581b2980f8e2c988/dadosic-zenlenium-0.0.2.tar.gz",
    "platform": null,
    "description": "Automa\u00e7\u00e3o Zendesk com Selenium e Zenpy\nEste projeto cont\u00e9m um conjunto de classes Python para automatizar tarefas na plataforma Zendesk, combinando a automa\u00e7\u00e3o de interface web com Selenium e a manipula\u00e7\u00e3o de dados via API com a biblioteca Zenpy.\n\nA biblioteca \u00e9 projetada para ser robusta, gerenciando sess\u00f5es de navegador de longa dura\u00e7\u00e3o (localmente ou via Selenoid) e interagindo com a API do Zendesk para buscar e atualizar tickets.\n\n\ud83d\ude80 Funcionalidades Principais\nGerenciamento de Driver Selenium:\n\nCria\u00e7\u00e3o de drivers do Chrome locais ou remotos (Selenoid).\n\nConfigura\u00e7\u00e3o de sessionTimeout para rob\u00f4s de longa dura\u00e7\u00e3o.\n\nVerifica\u00e7\u00e3o de sa\u00fade da sess\u00e3o e recria\u00e7\u00e3o autom\u00e1tica do driver em caso de falha.\n\nAutoma\u00e7\u00e3o de UI do Zendesk (Selenium):\n\nLogin autom\u00e1tico na plataforma.\n\nNavega\u00e7\u00e3o para filas de tickets e in\u00edcio do modo \"Play\".\n\nExtra\u00e7\u00e3o de valores de campos de input e dropdown.\n\nPreenchimento de campos e sele\u00e7\u00e3o de op\u00e7\u00f5es em dropdowns.\n\nEnvio de tickets e fechamento de abas.\n\nManipula\u00e7\u00e3o inteligente de esperas para elementos din\u00e2micos (como spinners de carregamento).\n\nIntera\u00e7\u00e3o com a API do Zendesk (Zenpy):\n\nAutentica\u00e7\u00e3o segura via token.\n\nBusca de tickets em filas (visualiza\u00e7\u00f5es) espec\u00edficas.\n\nExtra\u00e7\u00e3o de valores de campos personalizados (custom fields) de um ticket.\n\nCria\u00e7\u00e3o de novos tickets com campos personalizados, tags e coment\u00e1rios.\n\n\ud83d\udccb Pr\u00e9-requisitos\nAntes de come\u00e7ar, certifique-se de que voc\u00ea tem os seguintes pr\u00e9-requisitos:\n\nPython 3.8 ou superior.\n\nAs bibliotecas listadas no arquivo requirements.txt.\n\npip install selenium zenpy requests urllib3 python-dotenv pandas pandas-gbq\nAcesso a uma inst\u00e2ncia do Selenoid (para execu\u00e7\u00e3o remota) ou o chromedriver instalado localmente.\n\nUm arquivo .env no diret\u00f3rio raiz para armazenar as credenciais de forma segura.\n\nVari\u00e1veis de Ambiente (.env)\nCrie um arquivo chamado .env e adicione as seguintes vari\u00e1veis:\n\nSnippet de c\u00f3digo\n\n# Credenciais para login via UI (Selenium)\nID_LOGIN=\"seu_email_login@exemplo.com\"\nID_PASS=\"sua_senha\"\n\n# Credenciais para a API (Zenpy)\nZENPY_EMAIL=\"seu_email_api@exemplo.com/token\"\nZENPY_TOKEN=\"seu_token_da_api\"\n\ud83d\udee0\ufe0f Como Usar\nA biblioteca \u00e9 dividida em tr\u00eas componentes principais: a classe de controle do Driver, a classe de automa\u00e7\u00e3o do Selenium e a classe de intera\u00e7\u00e3o com a API.\n\n1. Classe Driver_Selenium\nEsta classe \u00e9 uma \"f\u00e1brica\" para criar e gerenciar a vida \u00fatil do driver do Selenium.\n\nUso:\n\nPython\n\n# Criar um driver remoto (padr\u00e3o)\ndriver = Driver_Selenium.criar_driver(local=False, timeout='24h')\n\n# Criar um driver local\n# driver = Driver_Selenium.criar_driver(local=True)\n\n# Verificar e recriar o driver se a sess\u00e3o caiu\ndriver = Driver_Selenium.verificar_e_recriar_driver(driver)\n2. Classe Zendesk_Selenium\nEsta classe cont\u00e9m todos os m\u00e9todos para interagir com a interface web do Zendesk. Ela recebe uma inst\u00e2ncia do driver para operar.\n\nUso:\n\nPython\n\n# Crie o driver primeiro\ndriver = Driver_Selenium.criar_driver()\n\n# Crie a inst\u00e2ncia da classe, passando o driver\nzendesk_ui = Zendesk_Selenium(driver, \"usuario\", \"senha\", \"sua_instancia\")\n\n# Execute a\u00e7\u00f5es\nzendesk_ui.login()\nzendesk_ui.driver.get(\"https://sua_instancia.zendesk.com/agent/tickets/12345\")\nzendesk_ui.selecionar_dropdown(360011074672, 'CD300')\nzendesk_ui.enviar_aberto() # Usa ActionChains para atalhos\nzendesk_ui.fechar_ticket_atual()\n3. Classe Zendesk_Zenpy\nEsta classe lida com todas as comunica\u00e7\u00f5es com a API do Zendesk.\n\nUso:\n\nPython\n\n# Crie a inst\u00e2ncia com as credenciais da API\nzenpy_api = Zendesk_Zenpy(\"email_api\", \"token_api\", \"sua_instancia\")\n\n# Buscar tickets de uma fila (view)\nid_da_fila = 123456789\ntickets_na_fila = zenpy_api.pegar_tickets(fila=id_da_fila)\n\n# Extrair campos personalizados de um ticket espec\u00edfico\nid_do_ticket = tickets_na_fila[0]\ncampos_desejados = {'CD_ENTREGA': 360011074672, 'PRAZO_FCR': 360013231212}\nvalores = zenpy_api.extrair_customfields(ticket_id=id_do_ticket, lista_campos=campos_desejados)\n\nprint(valores)\n# Sa\u00edda: {'CD_ENTREGA': 'cd_300', 'PRAZO_FCR': '3_dias'}\n\ud83d\udcdc Exemplo de Script Principal (Rob\u00f4 Cont\u00ednuo)\nO exemplo abaixo mostra como combinar as classes para criar um rob\u00f4 que monitora uma fila do Zendesk continuamente, se recuperando de falhas de sess\u00e3o.\n\nPython\n\n# Importa\u00e7\u00f5es e credenciais\nfrom classes import Driver_Selenium, Zendesk_Selenium, Zendesk_Zenpy\n# ...\n\n# Inicializa\u00e7\u00e3o\ndriver = None\n\ntry:\n    while True:\n        # Garante que o driver est\u00e1 ativo antes de cada ciclo\n        driver = Driver_Selenium.verificar_e_recriar_driver(driver)\n        \n        # Cria as inst\u00e2ncias das classes com o driver ativo\n        zendesk = Zendesk_Selenium(driver, usuario, senha, instancia)\n        zenpy = Zendesk_Zenpy(zemail, zpass, instancia)\n\n        # 1. Faz o login (se necess\u00e1rio)\n        zendesk.login()\n\n        # 2. Busca tickets na API\n        lista_tickets = zenpy.pegar_tickets(fila=12345)\n\n        if not lista_tickets:\n            print(\"Fila vazia. Aguardando...\")\n            sleep(600)\n            continue\n        \n        # 3. Processa cada ticket\n        for ticket_id in lista_tickets:\n            driver.get(f'https://sua_instancia.zendesk.com/agent/tickets/{ticket_id}')\n            zendesk.esperar_carregamento()\n            # ...l\u00f3gica de automa\u00e7\u00e3o...\n            zendesk.fechar_ticket_atual()\n        \n        sleep(120)\n\nexcept KeyboardInterrupt:\n    print(\"Rob\u00f4 interrompido pelo usu\u00e1rio.\")\nfinally:\n    if driver:\n        print(\"Encerrando a sess\u00e3o do driver.\")\n        driver.quit()\n\n\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Automa\u00e7\u00e3o do zendesk com selenium e zenpy",
    "version": "0.0.2",
    "project_urls": null,
    "split_keywords": [
        "zendesk",
        "selenium"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5637b5fd6c88c101f0e9bdddbcf767e2b0146f573ca7a6f3581b2980f8e2c988",
                "md5": "9cd6629d93ad32cf8310e595fd6d2869",
                "sha256": "9663a4b6f2bc1b1a01338004f3a69cbebf6afd6b55adfa8eac6e42425bc6d66f"
            },
            "downloads": -1,
            "filename": "dadosic-zenlenium-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "9cd6629d93ad32cf8310e595fd6d2869",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 7782,
            "upload_time": "2025-08-12T20:46:42",
            "upload_time_iso_8601": "2025-08-12T20:46:42.986787Z",
            "url": "https://files.pythonhosted.org/packages/56/37/b5fd6c88c101f0e9bdddbcf767e2b0146f573ca7a6f3581b2980f8e2c988/dadosic-zenlenium-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-12 20:46:42",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "dadosic-zenlenium"
}
        
Elapsed time: 0.40952s