chatgraph


Namechatgraph JSON
Version 0.3.5 PyPI version JSON
download
home_pagehttps://github.com/irissonnlima/chatgraph
SummaryA user-friendly chatbot library
upload_time2024-10-24 16:04:24
maintainerNone
docs_urlNone
authorIrisson N. Lima
requires_python<4.0,>=3.12
licenseMIT
keywords chatbot rabbitmq messaging routing chatgraph python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ### **README - ChatGraph**

# ChatGraph - Framework para Criação de Chatbots

ChatGraph é uma biblioteca desenvolvida para criar chatbots interativos e modulares. Com suporte integrado para gRPC e RabbitMQ, ela permite gerenciar fluxos complexos de mensagens e criar comandos de chatbots que respondem a rotas específicas. Toda interação começa pela rota `start` e deriva para sub-rotas como `start.choice`.

### **Requisitos**
- Python 3.12+
- `pip` para gerenciamento de pacotes

### **Instalação**
A biblioteca ChatGraph pode ser instalada diretamente via `pip`:

```bash
pip install chatgraph
```

## **Configuração**

### **Variáveis de Ambiente**
Crie um arquivo `.env` na raiz do projeto para definir as variáveis necessárias, incluindo detalhes de conexão com RabbitMQ e URI para gRPC. Exemplo:

```env
RABBIT_USER=seu_usuario
RABBIT_PASS=sua_senha
RABBIT_URI=amqp://localhost
RABBIT_QUEUE=chat_queue
RABBIT_PREFETCH=1
RABBIT_VHOST=/
GRPC_URI=grpc://localhost:50051
```

Aqui está uma descrição mais detalhada de cada um dos objetos mencionados. Esses componentes são fundamentais para a estrutura e funcionalidade do ChatGraph, permitindo gerenciar fluxos de chat, interações e estados do usuário de forma eficiente.

### **Tipos de Objetos e Suas Funções**

---

### **1. `UserCall`**
**Localização:** `from .types.request_types import UserCall`

O `UserCall` representa uma solicitação de interação do usuário para o chatbot. Ele encapsula as informações básicas sobre uma mensagem recebida do usuário e fornece detalhes essenciais que o chatbot pode usar para decidir como responder.

#### **Principais Propriedades:**
- **`text`**: A mensagem de texto enviada pelo usuário.
- **`user_id`**: Identificador único do usuário, permitindo o rastreamento e a vinculação de estados.
- **`platform`**: Informação sobre a plataforma usada (por exemplo, WhatsApp, Web, etc.).
- **`timestamp`**: Horário em que a mensagem foi recebida.
- **`metadata`**: Dados adicionais que podem incluir informações contextuais (ex: geolocalização, histórico de navegação).

#### **Uso:**
O `UserCall` é instanciado sempre que uma nova mensagem é recebida, e fornece os dados necessários para que o chatbot processe e determine a resposta apropriada.

---

### **2. `UserState`**
**Localização:** `from .types.request_types import UserState`

`UserState` é usado para representar o estado atual do usuário no sistema de chatbot. Ele guarda o contexto de uma sessão do usuário, permitindo que o chatbot mantenha informações ao longo de múltiplas interações.

#### **Principais Propriedades:**
- **`state_id`**: Identificador único para o estado do usuário.
- **`current_route`**: A rota atual onde o usuário está localizado dentro do fluxo do chatbot.
- **`data`**: Dados de estado armazenados que podem ser usados para tomar decisões em futuras interações (ex: preferências, histórico de escolhas).
- **`last_interaction`**: Timestamp da última interação do usuário.

#### **Uso:**
O `UserState` ajuda a manter o contexto entre as mensagens para que o chatbot possa continuar uma conversa sem perder informações importantes.

---

### **3. `RedirectResponse`**
**Localização:** `from .types.end_types import RedirectResponse`

`RedirectResponse` é usado quando o chatbot precisa redirecionar o usuário para uma rota diferente dentro do fluxo de conversa. Isso é útil para mover o usuário para diferentes partes do chatbot com base na lógica de negócios.

#### **Principais Propriedades:**
- **`target_route`**: Rota para a qual o usuário será redirecionado.
- **`message`**: Mensagem opcional a ser exibida durante o redirecionamento.

#### **Uso:**
Permite criar fluxos mais dinâmicos, onde os usuários podem ser movidos para diferentes rotas dependendo de suas ações e escolhas.

---

### **4. `EndChatResponse`**
**Localização:** `from .types.end_types import EndChatResponse`

`EndChatResponse` é uma resposta que sinaliza o fim de uma conversa com o chatbot. Pode ser usado para finalizar a sessão de forma limpa e opcionalmente fornecer uma mensagem de encerramento.

#### **Principais Propriedades:**
- **`message`**: Mensagem final que será enviada ao usuário para encerrar a conversa.
- **`feedback_prompt`**: (Opcional) Um prompt para feedback, se desejado.

#### **Uso:**
Usado quando o fluxo do chatbot deve ser encerrado. Garante que a sessão do usuário seja finalizada corretamente e fornece uma experiência de término satisfatória.

---

### **5. `TransferToHuman`**
**Localização:** `from .types.end_types import TransferToHuman`

`TransferToHuman` é uma resposta que permite transferir a interação do usuário para um operador humano. Isso é útil quando o chatbot encontra uma situação que requer suporte humano.

#### **Principais Propriedades:**
- **`message`**: Mensagem para informar ao usuário que ele será transferido para um atendente humano.
- **`department`**: (Opcional) Departamento ou equipe específica para a qual a interação será transferida.

#### **Uso:**
Fornece uma maneira para o chatbot transferir conversas para atendimento humano quando necessário, garantindo uma transição suave.

---

### **6. `Message`**
**Localização:** `from .types.message_types import Message`

O `Message` é um objeto básico que representa uma mensagem de texto enviada pelo chatbot para o usuário. Ele é o bloco de construção fundamental para as respostas do chatbot.

#### **Principais Propriedades:**
- **`text`**: O conteúdo da mensagem que será enviado ao usuário.
- **`metadata`**: Informações adicionais sobre a mensagem (ex: tags, prioridade).

#### **Uso:**
Usado para enviar respostas simples e diretas ao usuário. O `Message` é utilizado em quase todas as interações básicas do chatbot.

---

### **7. `Button`**
**Localização:** `from .types.message_types import Button`

O `Button` representa uma mensagem que inclui botões clicáveis para oferecer ao usuário opções específicas. Ele é essencial para criar fluxos interativos e guiar o usuário para ações específicas.

#### **Principais Propriedades:**
- **`text`**: Texto descritivo acima dos botões.
- **`buttons`**: Lista de opções que aparecem como botões clicáveis.
- **`callback_data`**: (Opcional) Dados que são passados quando um botão é clicado, permitindo lógica adicional.

#### **Uso:**
Facilita a navegação no chatbot ao permitir que o usuário escolha uma ação clicando em um botão, em vez de digitar uma resposta.

---

### **8. `ListElements`**
**Localização:** `from .types.message_types import ListElements`

O `ListElements` é um tipo de mensagem que exibe uma lista de elementos ao usuário, útil para apresentar várias opções de uma só vez.

#### **Principais Propriedades:**
- **`title`**: Título da lista.
- **`items`**: Lista de elementos a serem exibidos.
- **`image_url`**: (Opcional) URL de uma imagem para cada item, se desejado.
- **`description`**: (Opcional) Descrição adicional para cada elemento.

#### **Uso:**
Ideal para cenários em que múltiplas opções precisam ser apresentadas ao usuário, como uma lista de produtos ou serviços.

---

### **9. `Route`**
**Localização:** `from .types.route import Route`

O `Route` gerencia a navegação entre diferentes partes do chatbot. Ele é responsável por direcionar o fluxo de conversação, ajudando a determinar qual é a próxima rota ou passo que o usuário deve seguir.

#### **Principais Funções:**
- **`get_next`**: Retorna a próxima rota a ser seguida no fluxo.
- **`back`**: Permite retornar para uma rota anterior.
- **`forward`**: Avança para uma rota específica.
- **`resolve`**: Determina qual é a rota baseada no estado atual e nas escolhas do usuário.

#### **Uso:**
O `Route` é essencial para criar fluxos conversacionais dinâmicos e adaptáveis. Ele ajuda a definir a progressão lógica do chatbot, permitindo controle total sobre como o usuário navega entre diferentes partes do fluxo.


### **Estrutura de Rota**
Todas as interações no ChatGraph começam pela rota `start` e se derivam para sub-rotas, criando um fluxo contínuo para gerenciar conversas.

- **Exemplo:** `start`, `start.choice`, `start.choice.about`

## **Uso**

### **Configurando o Chatbot**
```python
from chatgraph import ChatbotApp, UserCall, Button, Route

app = ChatbotApp()

@app.route("start")
def start(usercall: UserCall, rota: Route) -> tuple:
    return (
        'Bem-vindo!',
        Button(
            text="Escolha uma opção:",
            buttons=["Opção 1", "Opção 2"]
        ),
        rota.get_next('.choice')
    )

@app.route("start.choice")
def start_choice(usercall: UserCall, rota: Route) -> tuple:
    if usercall.text == "Opção 1":
        return 'Você escolheu a Opção 1!'
    elif usercall.text == "Opção 2":
        return 'Você escolheu a Opção 2!'
    
app.start()
```

## **Estrutura da Biblioteca**

```
chatgraph/
│
├── auth/
│   └── credentials.py  # Gerenciamento de credenciais
├── bot/
│   ├── chatbot_model.py  # Lógica principal do chatbot
│   └── chatbot_router.py  # Roteamento de rotas do chatbot
├── cli/
│   └── main.py  # Implementação do CLI
├── gRPC/
│   └── gRPCCall.py  # Implementação de comunicação gRPC
├── messages/
│   └── message_consumer.py  # Consumidor de mensagens RabbitMQ
└── types/
    ├── request_types.py  # Definição de tipos de requisições
    ├── message_types.py  # Definição de tipos de mensagens
    ├── end_types.py  # Tipos de finalização de chat
    └── route.py  # Gerenciamento de rotas
```

## **Exemplo de Configuração de Rota**

### **Estrutura de Fluxo**
```python
from chatgraph import ChatbotApp, UserCall, Button, Route

app = ChatbotApp()

@app.route("start")
def start(usercall: UserCall, rota: Route)->tuple:
    return (
        'Oi', 
        Button(
            text="Olá, eu sou o chatbot da empresa X. Como posso te ajudar?",
            buttons=["saber mais", "falar com atendente"],
        ),
        rota.get_next('.choice')
    )

@app.route("start.choice")
def start_choice(usercall: UserCall, rota: Route)->tuple:
    if usercall.text == "saber mais":
        return (
            'Sobre o que você quer saber mais?',
            Button(
                text="Sobre a empresa",
                buttons=["sobre produtos", "sobre serviços"],
            ),
            rota.get_next('.about')
        )
    elif usercall.text == "falar com atendente":
        return 'Ok'
    
app.start()
```

## **CLI**

### **Comandos Disponíveis**
1. **Listar campanhas:**
   ```bash
   chatgraph campaigns
   ```
2. **Filtrar campanhas usando regex:**
   ```bash
   chatgraph campaigns --regex "promo"
   ```
3. **Deletar um estado de usuário:**
   ```bash
   chatgraph delete-ustate 12345
   ```
   **Alias:** `delete-user-state`, `del-ustate`, `dus`

### **Aliases e Flexibilidade**
Para facilitar o uso, alguns comandos possuem apelidos. Por exemplo, o comando para deletar estados de usuário pode ser chamado de múltiplas formas:
```bash
chatgraph delete-user-state 12345
chatgraph del-ustate 12345
chatgraph dus 12345
```

## **Contribuição**
1. Faça um fork do repositório.
2. Crie uma nova branch (`git checkout -b minha-nova-feature`).
3. Faça commit das suas alterações (`git commit -am 'Adiciona nova feature'`).
4. Envie para a branch (`git push origin minha-nova-feature`).
5. Crie um novo Pull Request.

## **Licença**
Este projeto é licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.

---

Esse README fornece instruções detalhadas sobre como instalar, configurar e usar a biblioteca ChatGraph, incluindo a estrutura de rotas e exemplos de implementação para facilitar o desenvolvimento de chatbots com fluxos claros e intuitivos.
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/irissonnlima/chatgraph",
    "name": "chatgraph",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.12",
    "maintainer_email": null,
    "keywords": "chatbot, rabbitmq, messaging, routing, chatgraph, python",
    "author": "Irisson N. Lima",
    "author_email": "irisson.lima@verdecard.com.br",
    "download_url": "https://files.pythonhosted.org/packages/8d/5b/7bb44af36f597fea6255cd8bb7838b00a0f1bdf429fa2d75f84a8c7c1811/chatgraph-0.3.5.tar.gz",
    "platform": null,
    "description": "### **README - ChatGraph**\n\n# ChatGraph - Framework para Cria\u00e7\u00e3o de Chatbots\n\nChatGraph \u00e9 uma biblioteca desenvolvida para criar chatbots interativos e modulares. Com suporte integrado para gRPC e RabbitMQ, ela permite gerenciar fluxos complexos de mensagens e criar comandos de chatbots que respondem a rotas espec\u00edficas. Toda intera\u00e7\u00e3o come\u00e7a pela rota `start` e deriva para sub-rotas como `start.choice`.\n\n### **Requisitos**\n- Python 3.12+\n- `pip` para gerenciamento de pacotes\n\n### **Instala\u00e7\u00e3o**\nA biblioteca ChatGraph pode ser instalada diretamente via `pip`:\n\n```bash\npip install chatgraph\n```\n\n## **Configura\u00e7\u00e3o**\n\n### **Vari\u00e1veis de Ambiente**\nCrie um arquivo `.env` na raiz do projeto para definir as vari\u00e1veis necess\u00e1rias, incluindo detalhes de conex\u00e3o com RabbitMQ e URI para gRPC. Exemplo:\n\n```env\nRABBIT_USER=seu_usuario\nRABBIT_PASS=sua_senha\nRABBIT_URI=amqp://localhost\nRABBIT_QUEUE=chat_queue\nRABBIT_PREFETCH=1\nRABBIT_VHOST=/\nGRPC_URI=grpc://localhost:50051\n```\n\nAqui est\u00e1 uma descri\u00e7\u00e3o mais detalhada de cada um dos objetos mencionados. Esses componentes s\u00e3o fundamentais para a estrutura e funcionalidade do ChatGraph, permitindo gerenciar fluxos de chat, intera\u00e7\u00f5es e estados do usu\u00e1rio de forma eficiente.\n\n### **Tipos de Objetos e Suas Fun\u00e7\u00f5es**\n\n---\n\n### **1. `UserCall`**\n**Localiza\u00e7\u00e3o:** `from .types.request_types import UserCall`\n\nO `UserCall` representa uma solicita\u00e7\u00e3o de intera\u00e7\u00e3o do usu\u00e1rio para o chatbot. Ele encapsula as informa\u00e7\u00f5es b\u00e1sicas sobre uma mensagem recebida do usu\u00e1rio e fornece detalhes essenciais que o chatbot pode usar para decidir como responder.\n\n#### **Principais Propriedades:**\n- **`text`**: A mensagem de texto enviada pelo usu\u00e1rio.\n- **`user_id`**: Identificador \u00fanico do usu\u00e1rio, permitindo o rastreamento e a vincula\u00e7\u00e3o de estados.\n- **`platform`**: Informa\u00e7\u00e3o sobre a plataforma usada (por exemplo, WhatsApp, Web, etc.).\n- **`timestamp`**: Hor\u00e1rio em que a mensagem foi recebida.\n- **`metadata`**: Dados adicionais que podem incluir informa\u00e7\u00f5es contextuais (ex: geolocaliza\u00e7\u00e3o, hist\u00f3rico de navega\u00e7\u00e3o).\n\n#### **Uso:**\nO `UserCall` \u00e9 instanciado sempre que uma nova mensagem \u00e9 recebida, e fornece os dados necess\u00e1rios para que o chatbot processe e determine a resposta apropriada.\n\n---\n\n### **2. `UserState`**\n**Localiza\u00e7\u00e3o:** `from .types.request_types import UserState`\n\n`UserState` \u00e9 usado para representar o estado atual do usu\u00e1rio no sistema de chatbot. Ele guarda o contexto de uma sess\u00e3o do usu\u00e1rio, permitindo que o chatbot mantenha informa\u00e7\u00f5es ao longo de m\u00faltiplas intera\u00e7\u00f5es.\n\n#### **Principais Propriedades:**\n- **`state_id`**: Identificador \u00fanico para o estado do usu\u00e1rio.\n- **`current_route`**: A rota atual onde o usu\u00e1rio est\u00e1 localizado dentro do fluxo do chatbot.\n- **`data`**: Dados de estado armazenados que podem ser usados para tomar decis\u00f5es em futuras intera\u00e7\u00f5es (ex: prefer\u00eancias, hist\u00f3rico de escolhas).\n- **`last_interaction`**: Timestamp da \u00faltima intera\u00e7\u00e3o do usu\u00e1rio.\n\n#### **Uso:**\nO `UserState` ajuda a manter o contexto entre as mensagens para que o chatbot possa continuar uma conversa sem perder informa\u00e7\u00f5es importantes.\n\n---\n\n### **3. `RedirectResponse`**\n**Localiza\u00e7\u00e3o:** `from .types.end_types import RedirectResponse`\n\n`RedirectResponse` \u00e9 usado quando o chatbot precisa redirecionar o usu\u00e1rio para uma rota diferente dentro do fluxo de conversa. Isso \u00e9 \u00fatil para mover o usu\u00e1rio para diferentes partes do chatbot com base na l\u00f3gica de neg\u00f3cios.\n\n#### **Principais Propriedades:**\n- **`target_route`**: Rota para a qual o usu\u00e1rio ser\u00e1 redirecionado.\n- **`message`**: Mensagem opcional a ser exibida durante o redirecionamento.\n\n#### **Uso:**\nPermite criar fluxos mais din\u00e2micos, onde os usu\u00e1rios podem ser movidos para diferentes rotas dependendo de suas a\u00e7\u00f5es e escolhas.\n\n---\n\n### **4. `EndChatResponse`**\n**Localiza\u00e7\u00e3o:** `from .types.end_types import EndChatResponse`\n\n`EndChatResponse` \u00e9 uma resposta que sinaliza o fim de uma conversa com o chatbot. Pode ser usado para finalizar a sess\u00e3o de forma limpa e opcionalmente fornecer uma mensagem de encerramento.\n\n#### **Principais Propriedades:**\n- **`message`**: Mensagem final que ser\u00e1 enviada ao usu\u00e1rio para encerrar a conversa.\n- **`feedback_prompt`**: (Opcional) Um prompt para feedback, se desejado.\n\n#### **Uso:**\nUsado quando o fluxo do chatbot deve ser encerrado. Garante que a sess\u00e3o do usu\u00e1rio seja finalizada corretamente e fornece uma experi\u00eancia de t\u00e9rmino satisfat\u00f3ria.\n\n---\n\n### **5. `TransferToHuman`**\n**Localiza\u00e7\u00e3o:** `from .types.end_types import TransferToHuman`\n\n`TransferToHuman` \u00e9 uma resposta que permite transferir a intera\u00e7\u00e3o do usu\u00e1rio para um operador humano. Isso \u00e9 \u00fatil quando o chatbot encontra uma situa\u00e7\u00e3o que requer suporte humano.\n\n#### **Principais Propriedades:**\n- **`message`**: Mensagem para informar ao usu\u00e1rio que ele ser\u00e1 transferido para um atendente humano.\n- **`department`**: (Opcional) Departamento ou equipe espec\u00edfica para a qual a intera\u00e7\u00e3o ser\u00e1 transferida.\n\n#### **Uso:**\nFornece uma maneira para o chatbot transferir conversas para atendimento humano quando necess\u00e1rio, garantindo uma transi\u00e7\u00e3o suave.\n\n---\n\n### **6. `Message`**\n**Localiza\u00e7\u00e3o:** `from .types.message_types import Message`\n\nO `Message` \u00e9 um objeto b\u00e1sico que representa uma mensagem de texto enviada pelo chatbot para o usu\u00e1rio. Ele \u00e9 o bloco de constru\u00e7\u00e3o fundamental para as respostas do chatbot.\n\n#### **Principais Propriedades:**\n- **`text`**: O conte\u00fado da mensagem que ser\u00e1 enviado ao usu\u00e1rio.\n- **`metadata`**: Informa\u00e7\u00f5es adicionais sobre a mensagem (ex: tags, prioridade).\n\n#### **Uso:**\nUsado para enviar respostas simples e diretas ao usu\u00e1rio. O `Message` \u00e9 utilizado em quase todas as intera\u00e7\u00f5es b\u00e1sicas do chatbot.\n\n---\n\n### **7. `Button`**\n**Localiza\u00e7\u00e3o:** `from .types.message_types import Button`\n\nO `Button` representa uma mensagem que inclui bot\u00f5es clic\u00e1veis para oferecer ao usu\u00e1rio op\u00e7\u00f5es espec\u00edficas. Ele \u00e9 essencial para criar fluxos interativos e guiar o usu\u00e1rio para a\u00e7\u00f5es espec\u00edficas.\n\n#### **Principais Propriedades:**\n- **`text`**: Texto descritivo acima dos bot\u00f5es.\n- **`buttons`**: Lista de op\u00e7\u00f5es que aparecem como bot\u00f5es clic\u00e1veis.\n- **`callback_data`**: (Opcional) Dados que s\u00e3o passados quando um bot\u00e3o \u00e9 clicado, permitindo l\u00f3gica adicional.\n\n#### **Uso:**\nFacilita a navega\u00e7\u00e3o no chatbot ao permitir que o usu\u00e1rio escolha uma a\u00e7\u00e3o clicando em um bot\u00e3o, em vez de digitar uma resposta.\n\n---\n\n### **8. `ListElements`**\n**Localiza\u00e7\u00e3o:** `from .types.message_types import ListElements`\n\nO `ListElements` \u00e9 um tipo de mensagem que exibe uma lista de elementos ao usu\u00e1rio, \u00fatil para apresentar v\u00e1rias op\u00e7\u00f5es de uma s\u00f3 vez.\n\n#### **Principais Propriedades:**\n- **`title`**: T\u00edtulo da lista.\n- **`items`**: Lista de elementos a serem exibidos.\n- **`image_url`**: (Opcional) URL de uma imagem para cada item, se desejado.\n- **`description`**: (Opcional) Descri\u00e7\u00e3o adicional para cada elemento.\n\n#### **Uso:**\nIdeal para cen\u00e1rios em que m\u00faltiplas op\u00e7\u00f5es precisam ser apresentadas ao usu\u00e1rio, como uma lista de produtos ou servi\u00e7os.\n\n---\n\n### **9. `Route`**\n**Localiza\u00e7\u00e3o:** `from .types.route import Route`\n\nO `Route` gerencia a navega\u00e7\u00e3o entre diferentes partes do chatbot. Ele \u00e9 respons\u00e1vel por direcionar o fluxo de conversa\u00e7\u00e3o, ajudando a determinar qual \u00e9 a pr\u00f3xima rota ou passo que o usu\u00e1rio deve seguir.\n\n#### **Principais Fun\u00e7\u00f5es:**\n- **`get_next`**: Retorna a pr\u00f3xima rota a ser seguida no fluxo.\n- **`back`**: Permite retornar para uma rota anterior.\n- **`forward`**: Avan\u00e7a para uma rota espec\u00edfica.\n- **`resolve`**: Determina qual \u00e9 a rota baseada no estado atual e nas escolhas do usu\u00e1rio.\n\n#### **Uso:**\nO `Route` \u00e9 essencial para criar fluxos conversacionais din\u00e2micos e adapt\u00e1veis. Ele ajuda a definir a progress\u00e3o l\u00f3gica do chatbot, permitindo controle total sobre como o usu\u00e1rio navega entre diferentes partes do fluxo.\n\n\n### **Estrutura de Rota**\nTodas as intera\u00e7\u00f5es no ChatGraph come\u00e7am pela rota `start` e se derivam para sub-rotas, criando um fluxo cont\u00ednuo para gerenciar conversas.\n\n- **Exemplo:** `start`, `start.choice`, `start.choice.about`\n\n## **Uso**\n\n### **Configurando o Chatbot**\n```python\nfrom chatgraph import ChatbotApp, UserCall, Button, Route\n\napp = ChatbotApp()\n\n@app.route(\"start\")\ndef start(usercall: UserCall, rota: Route) -> tuple:\n    return (\n        'Bem-vindo!',\n        Button(\n            text=\"Escolha uma op\u00e7\u00e3o:\",\n            buttons=[\"Op\u00e7\u00e3o 1\", \"Op\u00e7\u00e3o 2\"]\n        ),\n        rota.get_next('.choice')\n    )\n\n@app.route(\"start.choice\")\ndef start_choice(usercall: UserCall, rota: Route) -> tuple:\n    if usercall.text == \"Op\u00e7\u00e3o 1\":\n        return 'Voc\u00ea escolheu a Op\u00e7\u00e3o 1!'\n    elif usercall.text == \"Op\u00e7\u00e3o 2\":\n        return 'Voc\u00ea escolheu a Op\u00e7\u00e3o 2!'\n    \napp.start()\n```\n\n## **Estrutura da Biblioteca**\n\n```\nchatgraph/\n\u2502\n\u251c\u2500\u2500 auth/\n\u2502   \u2514\u2500\u2500 credentials.py  # Gerenciamento de credenciais\n\u251c\u2500\u2500 bot/\n\u2502   \u251c\u2500\u2500 chatbot_model.py  # L\u00f3gica principal do chatbot\n\u2502   \u2514\u2500\u2500 chatbot_router.py  # Roteamento de rotas do chatbot\n\u251c\u2500\u2500 cli/\n\u2502   \u2514\u2500\u2500 main.py  # Implementa\u00e7\u00e3o do CLI\n\u251c\u2500\u2500 gRPC/\n\u2502   \u2514\u2500\u2500 gRPCCall.py  # Implementa\u00e7\u00e3o de comunica\u00e7\u00e3o gRPC\n\u251c\u2500\u2500 messages/\n\u2502   \u2514\u2500\u2500 message_consumer.py  # Consumidor de mensagens RabbitMQ\n\u2514\u2500\u2500 types/\n    \u251c\u2500\u2500 request_types.py  # Defini\u00e7\u00e3o de tipos de requisi\u00e7\u00f5es\n    \u251c\u2500\u2500 message_types.py  # Defini\u00e7\u00e3o de tipos de mensagens\n    \u251c\u2500\u2500 end_types.py  # Tipos de finaliza\u00e7\u00e3o de chat\n    \u2514\u2500\u2500 route.py  # Gerenciamento de rotas\n```\n\n## **Exemplo de Configura\u00e7\u00e3o de Rota**\n\n### **Estrutura de Fluxo**\n```python\nfrom chatgraph import ChatbotApp, UserCall, Button, Route\n\napp = ChatbotApp()\n\n@app.route(\"start\")\ndef start(usercall: UserCall, rota: Route)->tuple:\n    return (\n        'Oi', \n        Button(\n            text=\"Ol\u00e1, eu sou o chatbot da empresa X. Como posso te ajudar?\",\n            buttons=[\"saber mais\", \"falar com atendente\"],\n        ),\n        rota.get_next('.choice')\n    )\n\n@app.route(\"start.choice\")\ndef start_choice(usercall: UserCall, rota: Route)->tuple:\n    if usercall.text == \"saber mais\":\n        return (\n            'Sobre o que voc\u00ea quer saber mais?',\n            Button(\n                text=\"Sobre a empresa\",\n                buttons=[\"sobre produtos\", \"sobre servi\u00e7os\"],\n            ),\n            rota.get_next('.about')\n        )\n    elif usercall.text == \"falar com atendente\":\n        return 'Ok'\n    \napp.start()\n```\n\n## **CLI**\n\n### **Comandos Dispon\u00edveis**\n1. **Listar campanhas:**\n   ```bash\n   chatgraph campaigns\n   ```\n2. **Filtrar campanhas usando regex:**\n   ```bash\n   chatgraph campaigns --regex \"promo\"\n   ```\n3. **Deletar um estado de usu\u00e1rio:**\n   ```bash\n   chatgraph delete-ustate 12345\n   ```\n   **Alias:** `delete-user-state`, `del-ustate`, `dus`\n\n### **Aliases e Flexibilidade**\nPara facilitar o uso, alguns comandos possuem apelidos. Por exemplo, o comando para deletar estados de usu\u00e1rio pode ser chamado de m\u00faltiplas formas:\n```bash\nchatgraph delete-user-state 12345\nchatgraph del-ustate 12345\nchatgraph dus 12345\n```\n\n## **Contribui\u00e7\u00e3o**\n1. Fa\u00e7a um fork do reposit\u00f3rio.\n2. Crie uma nova branch (`git checkout -b minha-nova-feature`).\n3. Fa\u00e7a commit das suas altera\u00e7\u00f5es (`git commit -am 'Adiciona nova feature'`).\n4. Envie para a branch (`git push origin minha-nova-feature`).\n5. Crie um novo Pull Request.\n\n## **Licen\u00e7a**\nEste projeto \u00e9 licenciado sob a Licen\u00e7a MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.\n\n---\n\nEsse README fornece instru\u00e7\u00f5es detalhadas sobre como instalar, configurar e usar a biblioteca ChatGraph, incluindo a estrutura de rotas e exemplos de implementa\u00e7\u00e3o para facilitar o desenvolvimento de chatbots com fluxos claros e intuitivos.",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A user-friendly chatbot library",
    "version": "0.3.5",
    "project_urls": {
        "Homepage": "https://github.com/irissonnlima/chatgraph",
        "Repository": "https://github.com/irissonnlima/chatgraph"
    },
    "split_keywords": [
        "chatbot",
        " rabbitmq",
        " messaging",
        " routing",
        " chatgraph",
        " python"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "541ee1d827379ec8929b530462863c9407bdb7e83552e433ab0479ee130367f5",
                "md5": "a805c307975a6287436059236353a8ef",
                "sha256": "b6caa90bd7ac34a1a1e35c142ae0f299aaefaa919cbb0bea9b912c96b1b0613b"
            },
            "downloads": -1,
            "filename": "chatgraph-0.3.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a805c307975a6287436059236353a8ef",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.12",
            "size": 29746,
            "upload_time": "2024-10-24T16:04:22",
            "upload_time_iso_8601": "2024-10-24T16:04:22.573027Z",
            "url": "https://files.pythonhosted.org/packages/54/1e/e1d827379ec8929b530462863c9407bdb7e83552e433ab0479ee130367f5/chatgraph-0.3.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8d5b7bb44af36f597fea6255cd8bb7838b00a0f1bdf429fa2d75f84a8c7c1811",
                "md5": "3c5d5b499b914a1d58e5258fcf510012",
                "sha256": "689ec4ef9812537ee0c8780e28ef792893b887dd98488a2a580bd04f640c16e5"
            },
            "downloads": -1,
            "filename": "chatgraph-0.3.5.tar.gz",
            "has_sig": false,
            "md5_digest": "3c5d5b499b914a1d58e5258fcf510012",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.12",
            "size": 22813,
            "upload_time": "2024-10-24T16:04:24",
            "upload_time_iso_8601": "2024-10-24T16:04:24.040107Z",
            "url": "https://files.pythonhosted.org/packages/8d/5b/7bb44af36f597fea6255cd8bb7838b00a0f1bdf429fa2d75f84a8c7c1811/chatgraph-0.3.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-24 16:04:24",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "irissonnlima",
    "github_project": "chatgraph",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "chatgraph"
}
        
Elapsed time: 0.41021s