### **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/ad/d7/2e55c657b9323d13ec53e4e5e5638d88da005aa245176749511090202c86/chatgraph-0.4.1.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.4.1",
"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": "93c280346f53f689c819a04f31b3f7c84170aec74337ed651c0132b538fc3489",
"md5": "8cb966912de04ab66214615a3f9c1f72",
"sha256": "f1634fe95ac71d44bda692ba5d2fd946113ee87179ee4632ee9a61da8de44178"
},
"downloads": -1,
"filename": "chatgraph-0.4.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8cb966912de04ab66214615a3f9c1f72",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.12",
"size": 30102,
"upload_time": "2024-12-24T06:56:39",
"upload_time_iso_8601": "2024-12-24T06:56:39.065763Z",
"url": "https://files.pythonhosted.org/packages/93/c2/80346f53f689c819a04f31b3f7c84170aec74337ed651c0132b538fc3489/chatgraph-0.4.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "add72e55c657b9323d13ec53e4e5e5638d88da005aa245176749511090202c86",
"md5": "20bb234ae4371c73c971568cc5d2409c",
"sha256": "8ab134a8bb36a398805a3f2fef71eef68d357e45f1916ec114d0fed429ea700a"
},
"downloads": -1,
"filename": "chatgraph-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "20bb234ae4371c73c971568cc5d2409c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.12",
"size": 23302,
"upload_time": "2024-12-24T06:56:40",
"upload_time_iso_8601": "2024-12-24T06:56:40.456615Z",
"url": "https://files.pythonhosted.org/packages/ad/d7/2e55c657b9323d13ec53e4e5e5638d88da005aa245176749511090202c86/chatgraph-0.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-24 06:56:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "irissonnlima",
"github_project": "chatgraph",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "chatgraph"
}