Messenger
ChannelFacebook Messenger bots with templates, buttons, and reactions via the Chat SDK.
Install
Install eve, the Chat SDK core (chat), the Messenger adapter, and a state adapter:
npm install eve@latest chat @chat-adapter/messenger @chat-adapter/state-memoryThe in-memory state store is fine for local development; use a durable state adapter (Redis, PostgreSQL) in production so thread subscriptions survive restarts.
Quick start
Create agent/channels/messenger.ts. Register Chat SDK handlers on bot, call send to hand each turn to eve, and export the channel:
// agent/channels/messenger.tsimport { createMessengerAdapter } from "@chat-adapter/messenger";import { createMemoryState } from "@chat-adapter/state-memory";import { chatSdkChannel } from "eve/channels/chat-sdk";export const { bot, channel, send } = chatSdkChannel({ userName: "My Agent", adapters: { messenger: createMessengerAdapter() }, state: createMemoryState(),});bot.onNewMention(async (thread, message) => { await thread.subscribe(); await send(message.text, { thread });});bot.onSubscribedMessage(async (thread, message) => { await send(message.text, { thread });});export default channel;Credentials come from the createMessengerAdapter config or the adapter's environment variables; see the Messenger adapter docs.
Configure
The adapter mounts its webhook at /eve/v1/messenger. Point your Messenger webhook at it. The adapter owns provider auth, verification, and delivery, while eve owns session dispatch, streaming, typing, and human-in-the-loop. See the Chat SDK channel docs for routes, streaming, and state options.