Pular para o conteúdo principal

SDKs oficiais

Bibliotecas oficiais do bZapper para integrar em minutos, na sua linguagem. Todas cobrem o mesmo conjunto de operações da API: os 13 tipos de mensagem (texto, imagem, vídeo, documento, áudio, sticker, localização, contato, enquete, reação, botões, lista e OTP), números/instâncias, API keys, uso, e as funções avançadas — grupos (criar, participantes, entrar/sair, convite), presença (digitando/gravando, inclusive em grupos), conversas (inbox, histórico, arquivar/fixar/ler) e contatos.

Dica: explore e teste tudo no Playground dentro do painel (admin), com envio real e exemplos de código prontos em cada linguagem.

Já publicados! 🎉

Os SDKs estão disponíveis publicamente nos registros oficiais — instale com um comando, sem clonar nada. Node, Python, PHP e Go já no ar; Java em breve.

Instalação

LinguagemInstalaçãoImport
Node / TypeScriptnpm install @bzapper/clientimport { Bzapper } from '@bzapper/client'
Pythonpip install bzapperfrom bzapper import Client
PHPcomposer require bzapper/bzappernew Bzapper\Client(...)
Gogo get github.com/bernisoftware/bzapper-goimport "github.com/bernisoftware/bzapper-go"
JavaMaven br.com.bernisoftware:bzapper (em breve)new BzapperClient(...)

Início rápido

Node / TypeScript

import { Bzapper } from '@bzapper/client';

const bz = new Bzapper({ baseUrl: 'https://api.bzapper.com.br', apiKey: 'bz_live_...' });
await bz.sendText({ to: '+5511999999999', body: 'Olá do bZapper! 👋' });

Python

from bzapper import Client

bz = Client("https://api.bzapper.com.br", "bz_live_...")
bz.send_text(to="+5511999999999", body="Olá do bZapper! 👋")

PHP

use Bzapper\Client;

$bz = new Client("https://api.bzapper.com.br", "bz_live_...");
$bz->sendText(["to" => "+5511999999999", "body" => "Olá do bZapper! 👋"]);

Go

bz := bzapper.New("https://api.bzapper.com.br", "bz_live_...")
bz.SendText(context.Background(), bzapper.SendTextParams{
SendBase: bzapper.SendBase{To: "+5511999999999"},
Body: "Olá do bZapper! 👋",
})

Java

var bz = new BzapperClient("https://api.bzapper.com.br", "bz_live_...");
bz.sendText(SendOptions.to("+5511999999999"), "Olá do bZapper! 👋");

Presença em grupo

Mostrar “digitando…” num grupo é só apontar a presença para o JID do grupo:

bz.presence_chat(instance_id=inst, to="[email protected]", state="typing")

Webhooks — receber e processar eventos

Os SDKs recebem o payload do webhook e processam pra você: verificam a assinatura HMAC (X-Bzapper-Signature), transformam o envelope num evento tipado e roteiam pra um handler por tipo. Cada SDK também faz o CRUD dos webhooks (createWebhook/listWebhooks/…). Eventos: message.{received,sent,delivered,read,failed}, instance.{connected,disconnected,banned,logged_out,warming,status}, group.{joined,participant_added,participant_removed,participant_promoted,participant_demoted,subject_changed,description_changed}.

Python

from bzapper.webhooks import Webhooks

hooks = Webhooks(secret="whsec_...") # secret devolvido pelo create_webhook

@hooks.on("message.received")
def _(event):
print(event.sender.name, event.payload["body"])

# no seu endpoint — corpo CRU + header. Lança SignatureError se inválido.
hooks.handle(raw_body=request.get_data(), signature=request.headers["X-Bzapper-Signature"])

Node / TypeScript

import { Webhooks } from '@bzapper/client';

const hooks = new Webhooks('whsec_...');
hooks.on('message.received', (e) => console.log(e.sender?.name, e.payload.body));

// Express: use express.raw() e o middleware pronto
app.post('/webhooks', express.raw({ type: '*/*' }), hooks.middleware());

Go

rx := bzapper.NewWebhookReceiver("whsec_...").
On("message.received", func(e *bzapper.WebhookEvent) { /* ... */ })
http.Handle("/webhooks", rx) // é um http.Handler: verifica + roteia sozinho

PHP (new Bzapper\Webhooks($secret)) e Java (new Webhooks(secret)) seguem o mesmo padrão: on(tipo, handler) + handle(corpoCru, assinatura). Use o event_id para idempotência (a API pode reentregar). O verify é timing-safe; sempre passe o corpo CRU (não o JSON re-serializado).

Tratamento de erros

Todas as bibliotecas lançam um erro tipado com um código neutro estável (use sempre o code, nunca o texto) e o status HTTP. Ex. (Python):

from bzapper import Client, BzapperError
try:
bz.send_text(to="+550000", body="oi")
except BzapperError as e:
print(e.code, e.status_code) # ex.: "instance_not_connected", 409

Cada SDK tem um README completo (no repositório do pacote) com exemplos de cada tipo de mensagem, grupos, presença, conversas e erros.