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.
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
| Linguagem | Instalação | Import |
|---|---|---|
| Node / TypeScript | npm install @bzapper/client | import { Bzapper } from '@bzapper/client' |
| Python | pip install bzapper | from bzapper import Client |
| PHP | composer require bzapper/bzapper | new Bzapper\Client(...) |
| Go | go get github.com/bernisoftware/bzapper-go | import "github.com/bernisoftware/bzapper-go" |
| Java | Maven 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.