Skip to main content

Class: WhatsAppChannelAdapter

Defined in: packages/agentos/src/channels/adapters/WhatsAppChannelAdapter.ts:102

Channel adapter for WhatsApp supporting both Twilio and Meta Cloud API.

This adapter does NOT start its own HTTP server. Instead, the host application must configure a webhook route and call handleIncomingWebhook with the raw request body.

Capabilities: text, images, video, audio, voice_notes, documents, reactions, buttons, group_chat.

Extends

Constructors

Constructor

new WhatsAppChannelAdapter(retryConfig?): WhatsAppChannelAdapter

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:111

Parameters

retryConfig?

Partial<RetryConfig>

Returns

WhatsAppChannelAdapter

Inherited from

BaseChannelAdapter.constructor

Properties

auth

protected auth: ChannelAuthConfig & object | undefined

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:97

Stored auth config so reconnect() can re-use it.

Inherited from

BaseChannelAdapter.auth


capabilities

readonly capabilities: readonly ChannelCapability[]

Defined in: packages/agentos/src/channels/adapters/WhatsAppChannelAdapter.ts:105

Declared capabilities of this adapter.

Overrides

BaseChannelAdapter.capabilities


connectedSince

protected connectedSince: string | undefined

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:92

Inherited from

BaseChannelAdapter.connectedSince


displayName

readonly displayName: "WhatsApp" = 'WhatsApp'

Defined in: packages/agentos/src/channels/adapters/WhatsAppChannelAdapter.ts:104

Human-readable display name (e.g., "WhatsApp Business").

Overrides

BaseChannelAdapter.displayName


errorMessage

protected errorMessage: string | undefined

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:93

Inherited from

BaseChannelAdapter.errorMessage


platform

readonly platform: ChannelPlatform = 'whatsapp'

Defined in: packages/agentos/src/channels/adapters/WhatsAppChannelAdapter.ts:103

Platform this adapter serves.

Overrides

BaseChannelAdapter.platform


platformInfo

protected platformInfo: Record<string, unknown> = {}

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:94

Inherited from

BaseChannelAdapter.platformInfo


retryConfig

protected readonly retryConfig: RetryConfig

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:101

Inherited from

BaseChannelAdapter.retryConfig


status

protected status: ChannelConnectionStatus = 'disconnected'

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:91

Inherited from

BaseChannelAdapter.status

Methods

addReaction()

addReaction(conversationId, messageId, emoji): Promise<void>

Defined in: packages/agentos/src/channels/adapters/WhatsAppChannelAdapter.ts:166

Parameters

conversationId

string

messageId

string

emoji

string

Returns

Promise<void>


doConnect()

protected doConnect(auth): Promise<void>

Defined in: packages/agentos/src/channels/adapters/WhatsAppChannelAdapter.ts:133

Establish the platform connection using the supplied credentials. Called by initialize after state has been set to connecting. Must throw on failure — the base class handles retry and state changes.

Parameters

auth

ChannelAuthConfig & object

Returns

Promise<void>

Overrides

BaseChannelAdapter.doConnect


doSendMessage()

protected doSendMessage(conversationId, content): Promise<ChannelSendResult>

Defined in: packages/agentos/src/channels/adapters/WhatsAppChannelAdapter.ts:146

Deliver a message to the external platform. Called by sendMessage only when the adapter is connected.

Parameters

conversationId

string

content

MessageContent

Returns

Promise<ChannelSendResult>

Overrides

BaseChannelAdapter.doSendMessage


doShutdown()

protected doShutdown(): Promise<void>

Defined in: packages/agentos/src/channels/adapters/WhatsAppChannelAdapter.ts:156

Release platform resources (close WebSocket, stop polling, etc.). Called by shutdown before the state transitions to disconnected.

Returns

Promise<void>

Overrides

BaseChannelAdapter.doShutdown


emit()

protected emit(event): void

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:265

Emit an event to all matching subscribers. Subclasses call this when the platform SDK receives an inbound event.

Parameters

event

ChannelEvent

Returns

void

Inherited from

BaseChannelAdapter.emit


emitConnectionChange()

protected emitConnectionChange(): void

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:296

Convenience helper: emit a connection_change event with the current status. Called automatically by setStatus.

Returns

void

Inherited from

BaseChannelAdapter.emitConnectionChange


getConnectionInfo()

getConnectionInfo(): ChannelConnectionInfo

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:205

Get the current connection status and metadata.

Returns

ChannelConnectionInfo

Inherited from

BaseChannelAdapter.getConnectionInfo


handleIncomingWebhook()

handleIncomingWebhook(body, queryParams?): string | void

Defined in: packages/agentos/src/channels/adapters/WhatsAppChannelAdapter.ts:210

Handle an incoming webhook request from WhatsApp (Twilio or Cloud API).

The host application should forward the raw request body to this method. For Cloud API, this also handles webhook verification (GET requests with hub.mode=subscribe).

Parameters

body

Record<string, unknown>

Parsed JSON body of the webhook request.

queryParams?

Record<string, string>

Query parameters (for Cloud API verification).

Returns

string | void

Verification challenge string for GET requests, or void.


hasCapability()

protected hasCapability(cap): boolean

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:312

Check whether this adapter declares a specific capability.

Parameters

cap

ChannelCapability

Returns

boolean

Inherited from

BaseChannelAdapter.hasCapability


initialize()

initialize(auth): Promise<void>

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:151

Initialize the adapter with auth credentials. If already connected this will shut down the existing connection first (idempotent).

Parameters

auth

ChannelAuthConfig

Returns

Promise<void>

Inherited from

BaseChannelAdapter.initialize


on()

on(handler, eventTypes?): () => void

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:248

Register an event handler. Returns an unsubscribe function.

Parameters

handler

ChannelEventHandler

eventTypes?

ChannelEventType[]

Returns

(): void

Returns

void

Inherited from

BaseChannelAdapter.on


reconnect()

reconnect(): Promise<void>

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:186

Manually trigger a reconnection attempt using stored credentials. Useful for UI-driven "reconnect" buttons.

Returns

Promise<void>

Inherited from

BaseChannelAdapter.reconnect


sendMessage()

sendMessage(conversationId, content): Promise<ChannelSendResult>

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:218

Send a message to a conversation on the external platform.

Parameters

conversationId

string

Platform-native conversation/chat ID.

content

MessageContent

Message content to send.

Returns

Promise<ChannelSendResult>

The platform-assigned message ID.

Inherited from

BaseChannelAdapter.sendMessage


sendTypingIndicator()

sendTypingIndicator(_conversationId, _isTyping): Promise<void>

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:234

Default stub — platforms that support typing indicators should override.

Parameters

_conversationId

string

_isTyping

boolean

Returns

Promise<void>

Inherited from

BaseChannelAdapter.sendTypingIndicator


setStatus()

protected setStatus(newStatus, error?): void

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:319

Transition to a new connection status and emit an event.

Parameters

newStatus

ChannelConnectionStatus

error?

string

Returns

void

Inherited from

BaseChannelAdapter.setStatus


shutdown()

shutdown(): Promise<void>

Defined in: packages/agentos/src/channels/adapters/BaseChannelAdapter.ts:166

Gracefully shut down the adapter and release all resources.

Returns

Promise<void>

Inherited from

BaseChannelAdapter.shutdown