ChatGuru API Client
Cliente Rust para a API do ChatGuru com suporte completo a webhooks e envio de mensagens.
Funcionalidades
- ✅ Cliente HTTP tipo-seguro para a API ChatGuru
- ✅ Adicionar anotações aos chats
- ✅ Enviar mensagens de confirmação via WhatsApp
- ✅ Tipos de webhook flexíveis (ChatGuru, EventType, Generic)
- ✅ Normalização de campos de mídia (imagens, áudios, vídeos)
- ✅ Timeouts configuráveis (10s timeout, 3s connect timeout)
Instalação
Pré-requisitos
- Rust 1.70.0 ou superior
- Cargo
Adicionando ao seu projeto
[]
= { = "https://github.com/nextlw/crate_chatguru.git" }
= { = "1.0", = ["full"] }
Configuração
- Clone o repositório:
- Copie o arquivo de configuração de exemplo:
- Configure suas credenciais no arquivo
.env:
CHATGURU_API_TOKEN=seu_token_aqui
CHATGURU_ACCOUNT_ID=seu_account_id_aqui
Build
Executar testes
Exemplo de Uso
use ;
async
Tipos de Webhook
O crate suporta múltiplos formatos de webhook através do enum WebhookPayload:
- ChatGuru: Formato atual do ChatGuru com campos personalizados
- EventType: Formato legado com event_type
- Generic: Formato genérico/mínimo
API do ChatGuru
Este crate implementa os seguintes endpoints:
Adicionar Anotação
POST {api_endpoint}?key={token}&account_id={id}&phone_id={phone_id}&action=note_add¬e_text={text}&chat_number={number}
Enviar Mensagem
POST {api_endpoint}?key={token}&account_id={id}&phone_id={phone_id}&action=message_send&text={text}&chat_number={number}
Configuração
O cliente é configurado através de variáveis de ambiente:
CHATGURU_API_TOKEN: Token de autenticação da APICHATGURU_API_ENDPOINT: URL base da API (padrão:https://api.chatguru.app/api/v1)CHATGURU_ACCOUNT_ID: ID da conta ChatGuru
Tratamento de Erros
Todos os métodos retornam chatguru::Result<T>, que é um alias para Result<T, ChatGuruError>.
Os erros são categorizados em:
- NetworkError: Falhas de rede/HTTP
- ApiError: Erros retornados pela API
- SerializationError: Erros de serialização/deserialização JSON
- ValidationError: Dados inválidos
- InternalError: Erros internos do cliente
Licença
Propriedade de eLai Integration Team