chatguru

Crates.iochatguru
lib.rschatguru
version0.1.0
created_at2025-11-07 12:33:56.122555+00
updated_at2025-11-07 12:33:56.122555+00
descriptionCliente completo da API ChatGuru com suporte a webhooks e mensagens
homepagehttps://github.com/nextlw/crate_chatguru
repositoryhttps://github.com/nextlw/crate_chatguru
max_upload_size
id1921522
size74,071
William (willy3087)

documentation

README

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

[dependencies]
chatguru = { git = "https://github.com/nextlw/crate_chatguru.git" }
tokio = { version = "1.0", features = ["full"] }

Configuração

  1. Clone o repositório:
git clone https://github.com/nextlw/crate_chatguru.git
cd crate_chatguru
  1. Copie o arquivo de configuração de exemplo:
cp .env.example .env
  1. Configure suas credenciais no arquivo .env:
CHATGURU_API_TOKEN=seu_token_aqui
CHATGURU_ACCOUNT_ID=seu_account_id_aqui

Build

cargo build

Executar testes

cargo test

Exemplo de Uso

use chatguru::{ChatGuruClient, types::ChatGuruPayload};

#[tokio::main]
async fn main() -> chatguru::Result<()> {
    // IMPORTANTE: Ler de variáveis de ambiente
    let api_token = std::env::var("CHATGURU_API_TOKEN")
        .expect("CHATGURU_API_TOKEN não configurado");
    let api_endpoint = "https://api.chatguru.app/api/v1";
    let account_id = std::env::var("CHATGURU_ACCOUNT_ID")
        .expect("CHATGURU_ACCOUNT_ID não configurado");

    let client = ChatGuruClient::new(api_token, api_endpoint, account_id);

    // Adicionar anotação ao chat
    client.add_annotation(
        "chat_123",
        "5511999999999",
        "Tarefa criada no ClickUp: TASK-123"
    ).await?;

    // Enviar mensagem de confirmação
    client.send_confirmation_message(
        "5511999999999",
        None,
        "✅ Sua solicitação foi registrada!"
    ).await?;

    Ok(())
}

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&note_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 API
  • CHATGURU_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

Commit count: 0

cargo fmt