@beeper/chat-adapter-matrix
v0.1.0
Published
Matrix adapter for chat
Readme
@beeper/chat-adapter-matrix
Matrix adapter for Chat SDK. Uses Matrix sync (no webhook server required).
If you are using Beeper, you can use Chat SDK with your Beeper Cloud accounts and Matrix chats. This lets you use Chat SDK with WhatsApp, Telegram, Instagram, Signal, X Chat, and more. For bridged chats, we recommend personal usage, since some networks may limit automated activity.
Installation
npm install chat @beeper/chat-adapter-matrix matrix-js-sdkUsage
import { Chat } from "chat";
import { createMemoryState } from "@chat-adapter/state-memory";
import { createMatrixAdapter } from "@beeper/chat-adapter-matrix";
const bot = new Chat({
userName: "beeper-bot",
state: createMemoryState(),
adapters: {
matrix: createMatrixAdapter({
baseURL: process.env.MATRIX_BASE_URL!,
auth: {
type: "accessToken",
accessToken: process.env.MATRIX_ACCESS_TOKEN!,
},
recoveryKey: process.env.MATRIX_RECOVERY_KEY,
}),
},
});
bot.onNewMention(async (thread, message) => {
await thread.subscribe();
await thread.post(`Hi ${message.author.userName}`);
});Auth
Access token:
auth: { type: "accessToken", accessToken: process.env.MATRIX_ACCESS_TOKEN! };Username/password:
auth: {
type: "password",
username: process.env.MATRIX_USERNAME!,
password: process.env.MATRIX_PASSWORD!,
};Environment
Required:
MATRIX_BASE_URL- Access token mode:
MATRIX_ACCESS_TOKEN - Password mode:
MATRIX_USERNAME,MATRIX_PASSWORD
Optional:
MATRIX_USER_IDMATRIX_DEVICE_IDMATRIX_DEVICE_ID_PERSIST_ENABLEDMATRIX_DEVICE_ID_PERSIST_KEYMATRIX_RECOVERY_KEYMATRIX_E2EE_ENABLEDMATRIX_E2EE_USE_INDEXEDDBMATRIX_E2EE_DB_PREFIXMATRIX_E2EE_STORAGE_PASSWORDMATRIX_E2EE_STORAGE_KEY_BASE64MATRIX_SESSION_ENABLEDMATRIX_SESSION_KEYMATRIX_SESSION_TTL_MSMATRIX_SDK_LOG_LEVEL(trace,debug,info,warn,error)
Examples
Copy examples/.env.example to examples/.env, then run:
npm run example:bunGenerate a Beeper access token interactively:
npm run token:bunGet a Beeper Access Token
Use the interactive helper:
npm run token:bunIt prints:
MATRIX_BASE_URLMATRIX_ACCESS_TOKENMATRIX_USER_IDMATRIX_DEVICE_ID
Paste those values into examples/.env or your deployment secrets.
or:
bun --env-file=examples/.env run examples/bot.tsNotes
handleWebhook()returns501by design.- Access-token auth resolves identity with
whoami. - Password auth sends configured
device_idduring login. - Use Redis state in production for stable sessions and device IDs.
License
MIT
