Loncat ke isi

TypeScript SDK

Client resmi untuk API publik Wapedia (/v1): kirim pesan, usage/subscription, upload media, dan helper verifikasi signature webhook Meta.

Paket: `@wapedia/sdk` (v0.1) — sumber di repo wapedia-sdk.

Install

npm install github:rioaguspermana/wapedia-sdk
# atau
pnpm add github:rioaguspermana/wapedia-sdk

Sebelum publish npm registry, install dari GitHub seperti di atas. Link lokal: pnpm add ../wapedia-sdk.

Kirim pesan teks

import { Wapedia } from "@wapedia/sdk";

const client = new Wapedia({
  apiKey: process.env.WAPEDIA_API_KEY!,
});

const msg = await client.messages.sendText({
  to: "6281234567890",
  body: "Halo dari SDK",
  phoneNumberId: "YOUR_PHONE_NUMBER_ID",
});

console.log(msg.id, msg.status); // 202 → queued

Template & media

await client.messages.sendTemplate({
  to: "6281234567890",
  phoneNumberId: "YOUR_PHONE_NUMBER_ID",
  template: {
    name: "hello_world",
    language: "id",
  },
});

const uploaded = await client.media.upload({
  file: new Blob([buffer], { type: "image/jpeg" }),
  mimeType: "image/jpeg",
  filename: "foto.jpg",
});

await client.messages.send({
  to: "6281234567890",
  type: "image",
  phoneNumberId: "YOUR_PHONE_NUMBER_ID",
  media: { id: uploaded.media_id, caption: "Foto" },
});

Wallet / usage

Endpoint wallet SDK masih ada di client, tapi debit messaging W-Coin tidak aktif di model Tech Provider (MESSAGING_WALLET_ENABLED=false). Pakai subscription/usage untuk kuota fair-use:

const usage = await client.wallet.usage();
// balance / pricing / top-up: jangan andalkan untuk billing pesan saat ini

Verifikasi signature Meta

Samakan dengan backend Wapedia (X-Hub-Signature-256):

import { verifyMetaSignature } from "@wapedia/sdk";

const ok = verifyMetaSignature(
  req.headers["x-hub-signature-256"],
  rawBody, // Buffer / Uint8Array / string mentah
  process.env.META_APP_SECRET!,
);

Forward event ke sistem Anda

Payload yang di-POST ke webhook_forward_url:

import { parseForwardEvent } from "@wapedia/sdk";

const event = parseForwardEvent(await req.json());
// event.event === "message.inbound"

Lihat juga Webhooks.

Error

Gagal HTTP melempar WapediaError dengan status dan body (biasanya { error: string }).

Referensi lengkap

Endpoint yang belum dibungkus resource bisa dipanggil lewat client.request(method, path, …). Spesifikasi mesin: OpenAPI.