GuidesChannel Adapters: Custom UI, Slack, WhatsApp Cloud

Channel Adapters: Custom UI, Slack, WhatsApp Cloud

Last updated 2026-02-12

Official starter repositories:

  • rooaak-custom-ui-sample-app
  • rooaak-slack-adapter-starter
  • rooaak-whatsapp-cloud-adapter-starter

Rooaak uses one public message lifecycle for all channels:

  1. Adapter receives inbound provider/user message.
  2. Adapter calls POST /v1/agents/:id/messages.
  3. Rooaak responds immediately (200 responded) or async (202 pending).
  4. Adapter either polls GET /v1/messages/:id or waits for message.responded webhook.
  5. Adapter posts Rooaak reply back to provider/customer UI.

Metadata conventions

Send channel metadata so webhook payloads can be correlated without extra lookup:

json
{
  "sessionId": "channel-session-123",
  "message": "hello",
  "metadata": {
    "correlationId": "adapter-request-1",
    "channel": {
      "type": "slack",
      "externalChannelId": "C123",
      "externalThreadId": "1700000000.123",
      "externalMessageId": "1700000000.123"
    }
  }
}

channel.type should be one of:

  • custom_ui
  • slack
  • whatsapp_cloud

Slack adapter shape

  • Verify Slack signatures.
  • Map Slack channel + thread_ts + ts to Rooaak metadata channel fields.
  • Use webhook message.responded and post response to Slack via chat.postMessage.

WhatsApp Cloud adapter shape

  • Verify Meta webhook signature/token.
  • Map wa_id + message.id to Rooaak session/correlation metadata.
  • On message.responded, send outbound WhatsApp message via Graph API.

Custom UI adapter shape

  • Use your own auth/session model.
  • Use stable app conversation ID as sessionId.
  • Attach app request ID as metadata.correlationId.

This keeps custom UI, Slack, and WhatsApp on one Rooaak contract without exposing provider-specific APIs from Rooaak itself.

Detailed guides

  • custom-ui-adapter-guide
  • slack-adapter-starter-guide
  • whatsapp-cloud-adapter-starter-guide
  • webhook-lifecycle-guide
  • channel-adapter-production-checklist
  • channel-adapter-e2e-validation-matrix
  • architecture-decisions-adapter-first