Webhook Human Agent

Terima HTTP POST callback ketika human agent merespons pesan user. Sempurna untuk logging, analytics, integrasi CRM, dan sistem notifikasi custom.

HTTP Request (Masuk)
POST (URL Webhook Anda)

Kapan Ini Dipicu?

Webhook ini dipicu setiap kali human agent mengirim balasan di percakapan mana pun, terlepas dari apakah percakapan dimulai via API atau chat widget.

Webhook hanya dikirim jika agent Anda memiliki URL webhook yang dikonfigurasi di pengaturan.

Header Request

HeaderNilaiDeskripsi
Content-Typeapplication/jsonSelalu payload JSON
User-AgentAksita-Webhook/1.0Mengidentifikasi webhook Aksita
X-Webhook-SignatureHMAC-SHA256 hex
Signature untuk verifikasi (opsional - hanya jika webhook secret dikonfigurasi)

Struktur Payload

FieldTipeDeskripsi
responsearrayPesan human agent (array string)
conversation_idstringID percakapan unik
message_idstringID pesan untuk balasan ini
creditsnumberSelalu 0 (respons human agent gratis)
remaining_creditsnumberSisa kredit user setelah percakapan ini
additional_contextstringKonteks tambahan (string kosong jika tidak diset)
sourcestring
Selalu "human_agent" untuk mengidentifikasi sumber webhook
timestampstringTimestamp ISO 8601 (RFC3339)
Contoh Payload
{
  "response": ["halo"],
  "message_id": "2125",
  "conversation_id": "2a73ddbe-31cd-4a60-83ff-1fc2a1627ccc",
  "credits": 0,
  "remaining_credits": 1234,
  "additional_context": "",
  "source": "human_agent",
  "timestamp": "2026-01-22T15:18:18+07:00"
}

Contoh Implementasi

const crypto = require('crypto');
const express = require('express');
const app = express();

// IMPORTANT: Use express.raw() to get raw body for signature verification
app.post('/webhook', express.raw({type: 'application/json'}), (req, res) => {
  const signature = req.headers['x-webhook-signature'];
  const webhookSecret = process.env.WEBHOOK_SECRET; // From agent settings
  
  // Verify signature if provided
  if (signature && webhookSecret) {
    const hmac = crypto.createHmac('sha256', webhookSecret);
    hmac.update(req.body); // Raw body as buffer
    const calculatedSignature = hmac.digest('hex');
    
    if (calculatedSignature !== signature) {
      return res.status(400).json({ error: 'Invalid signature' });
    }
  }
  
  // Parse and process webhook
  const payload = JSON.parse(req.body);
  console.log('Human agent replied:', payload.response[0]);
  console.log('Conversation ID:', payload.conversation_id);
  console.log('Source:', payload.source); // "human_agent"
  
  // Respond with 200 OK
  res.json({ received: true });
});

app.listen(3000);
Verifikasi Signature (Opsional tapi Direkomendasikan)

Jika Anda mengonfigurasi webhook secret di pengaturan agent, header X-Webhook-Signature akan dikirim dengan semua webhook. Kami sangat menyarankan untuk memverifikasi signature ini untuk memastikan webhook authentic dan mencegah request berbahaya.

Response yang Diharapkan

Penerimaan webhook berhasil (status 2xx apa pun)

200 OK
{
  "received": true
}

Status code HTTP antara 200-299 dianggap berhasil. Response body bersifat opsional.

Detail Teknis

Algoritma SignatureHMAC-SHA256 (hex)
Timeout10 detik
Kebijakan RetryTidak ada retry otomatis
Status SuksesHTTP 200-299
User-AgentAksita-Webhook/1.0

Penting:

  • Webhook dikirim secara asinkron dari queue
  • Webhook yang gagal TIDAK diulang otomatis
  • Endpoint Anda harus merespons dalam 10 detik
  • Verifikasi signature bersifat opsional tapi sangat direkomendasikan

Alur Webhook

1

User Mengirim Pesan

User mengirim pesan via chat widget atau API

2

Pengambilalihan Human Agent

Human agent klik "Ambil Alih" di dashboard untuk percakapan ini

3

Human Agent Membalas

Human agent mengirim pesan melalui dashboard

4

Webhook Dipicu

Aksita mengirim POST request ke URL webhook Anda dengan signature HMAC opsional

5

Server Anda Memproses

Verifikasi signature (jika dikonfigurasi), proses payload, respon dengan 200 OK