Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Đối với các triển khai OpenClaw iMessage, hãy dùng
imsg trên một máy chủ macOS Messages đã đăng nhập. Nếu Gateway của bạn chạy trên Linux hoặc Windows, trỏ channels.imessage.cliPath tới một wrapper SSH chạy imsg trên máy Mac.Bắt kịp sau thời gian Gateway ngừng hoạt động là tùy chọn bật. Khi được bật (channels.imessage.catchup.enabled: true), gateway phát lại các tin nhắn đến đã được ghi vào chat.db trong khi gateway ngoại tuyến (sự cố, khởi động lại, máy Mac ngủ) ở lần khởi động tiếp theo. Mặc định bị tắt — xem Bắt kịp sau thời gian gateway ngừng hoạt động. Đóng openclaw#78649.imsg rpc và giao tiếp qua JSON-RPC trên stdio (không có daemon/cổng riêng). Các hành động nâng cao yêu cầu imsg launch và một lần kiểm tra API riêng thành công.
Hành động API riêng
Trả lời, tapback, hiệu ứng, tệp đính kèm và quản lý nhóm.
Ghép cặp
DM iMessage mặc định dùng chế độ ghép cặp.
Máy Mac từ xa
Dùng một wrapper SSH khi Gateway không chạy trên máy Mac Messages.
Tham chiếu cấu hình
Tham chiếu đầy đủ các trường iMessage.
Thiết lập nhanh
- Máy Mac cục bộ (đường dẫn nhanh)
- Máy Mac từ xa qua SSH
Yêu cầu và quyền (macOS)
- Messages phải được đăng nhập trên máy Mac chạy
imsg. - Cần Full Disk Access cho ngữ cảnh tiến trình chạy OpenClaw/
imsg(truy cập DB Messages). - Cần quyền Automation để gửi tin nhắn qua Messages.app.
- Đối với các hành động nâng cao (react / edit / unsend / threaded reply / effects / group ops), System Integrity Protection phải bị tắt — xem Bật API riêng của imsg bên dưới. Gửi/nhận văn bản và phương tiện cơ bản hoạt động mà không cần tắt.
Bật API riêng của imsg
imsg có hai chế độ vận hành:
- Chế độ cơ bản (mặc định, không cần thay đổi SIP): văn bản và phương tiện đi qua
send, theo dõi/lịch sử đến, danh sách chat. Đây là những gì bạn có ngay từ đầu sau một lầnbrew install steipete/tap/imsgmới cùng các quyền macOS tiêu chuẩn ở trên. - Chế độ API riêng:
imsgtiêm một dylib trợ giúp vàoMessages.appđể gọi các hàmIMCorenội bộ. Chế độ này mở khóareact,edit,unsend,reply(theo luồng),sendWithEffect,renameGroup,setGroupIcon,addParticipant,removeParticipant,leaveGroup, cùng chỉ báo đang nhập và biên nhận đã đọc.
imsg nêu rõ yêu cầu:
Các tính năng nâng cao nhưKỹ thuật tiêm trợ giúp dùng dylib riêng củaread,typing,launch, gửi phong phú được hỗ trợ bởi cầu nối, thay đổi tin nhắn và quản lý chat là tùy chọn bật. Chúng yêu cầu SIP bị tắt và một dylib trợ giúp được tiêm vàoMessages.app.imsg launchtừ chối tiêm khi SIP đang bật.
imsg để truy cập API riêng của Messages. Không có máy chủ bên thứ ba hoặc runtime BlueBubbles trong đường dẫn OpenClaw iMessage.
Thiết lập
-
Cài đặt (hoặc nâng cấp)
imsgtrên máy Mac chạy Messages.app:Đầu raimsg status --jsonbáo cáobridge_version,rpc_methodsvàselectorstheo từng phương thức để bạn có thể xem bản dựng hiện tại hỗ trợ những gì trước khi bắt đầu. -
Tắt System Integrity Protection. Việc này phụ thuộc vào phiên bản macOS vì yêu cầu nền tảng của Apple phụ thuộc vào hệ điều hành và phần cứng:
- macOS 10.13–10.15 (Sierra–Catalina): tắt Library Validation qua Terminal, khởi động lại vào Recovery Mode, chạy
csrutil disable, khởi động lại. - macOS 11+ (Big Sur trở lên), Intel: Recovery Mode (hoặc Internet Recovery),
csrutil disable, khởi động lại. - macOS 11+, Apple Silicon: trình tự khởi động bằng nút nguồn để vào Recovery; trên các phiên bản macOS gần đây, giữ phím Left Shift khi bạn nhấp Continue, rồi chạy
csrutil disable. Thiết lập máy ảo dùng một luồng riêng — hãy chụp snapshot VM trước. - macOS 26 / Tahoe: các chính sách library-validation và kiểm tra quyền riêng
imagentđã siết chặt hơn nữa;imsgcó thể cần một bản dựng cập nhật để theo kịp. Nếu việc tiêmimsg launchhoặc cácselectorscụ thể bắt đầu trả về false sau một lần nâng cấp lớn macOS, hãy kiểm tra ghi chú phát hành củaimsgtrước khi giả định bước SIP đã thành công.
imsg launch. - macOS 10.13–10.15 (Sierra–Catalina): tắt Library Validation qua Terminal, khởi động lại vào Recovery Mode, chạy
-
Tiêm trình trợ giúp. Khi SIP đã bị tắt và Messages.app đã đăng nhập:
imsg launchtừ chối tiêm khi SIP vẫn đang bật, nên thao tác này cũng đồng thời xác nhận rằng bước 2 đã có hiệu lực. -
Xác minh cầu nối từ OpenClaw:
Mục iMessage nên báo cáo
works, vàimsg status --json | jq '.selectors'nên hiển thịretractMessagePart: truecùng bất kỳ selector edit / typing / read nào mà bản dựng macOS của bạn cung cấp. Cơ chế kiểm soát theo từng phương thức của Plugin OpenClaw trongactions.tschỉ quảng bá các hành động có selector nền tảng làtrue, nên bề mặt hành động bạn thấy trong danh sách công cụ của tác tử phản ánh những gì cầu nối thực sự có thể làm trên máy chủ này.
openclaw channels status --probe báo cáo kênh là works nhưng các hành động cụ thể ném lỗi “iMessage <action> requires the imsg private API bridge” tại thời điểm dispatch, hãy chạy lại imsg launch — trình trợ giúp có thể bị rơi khỏi trạng thái hoạt động (Messages.app khởi động lại, cập nhật OS, v.v.) và trạng thái available: true đã lưu cache sẽ tiếp tục quảng bá hành động cho đến khi lần probe tiếp theo làm mới.
Khi bạn không thể tắt SIP
Nếu trạng thái SIP bị tắt không phù hợp với mô hình đe dọa của bạn:imsgquay về chế độ cơ bản — chỉ văn bản + phương tiện + nhận.- Plugin OpenClaw vẫn quảng bá gửi văn bản/phương tiện và giám sát tin nhắn đến; nó chỉ ẩn
react,edit,unsend,reply,sendWithEffectvà thao tác nhóm khỏi bề mặt hành động (theo cổng năng lực theo từng phương thức). - Bạn có thể chạy một máy Mac không phải Apple Silicon riêng (hoặc một máy Mac bot chuyên dụng) với SIP tắt cho khối lượng công việc iMessage, trong khi vẫn bật SIP trên các thiết bị chính. Xem Người dùng macOS bot chuyên dụng (danh tính iMessage riêng) bên dưới.
Kiểm soát truy cập và định tuyến
- Chính sách DM
- Chính sách nhóm + lượt nhắc
- Sessions and deterministic replies
channels.imessage.dmPolicy kiểm soát tin nhắn trực tiếp:pairing(mặc định)allowlistopen(yêu cầuallowFrombao gồm"*")disabled
channels.imessage.allowFrom.Mục allowlist có thể là handle, nhóm truy cập người gửi tĩnh (accessGroup:<name>), hoặc mục tiêu chat (chat_id:*, chat_guid:*, chat_identifier:*).Liên kết cuộc trò chuyện ACP
Các cuộc trò chuyện iMessage cũ cũng có thể được liên kết với phiên ACP. Luồng thao tác nhanh:- Chạy
/acp spawn codex --bind herebên trong DM hoặc cuộc trò chuyện nhóm được cho phép. - Các tin nhắn sau này trong cùng cuộc trò chuyện iMessage đó sẽ được định tuyến đến phiên ACP đã tạo.
/newvà/resetđặt lại cùng phiên ACP đã liên kết tại chỗ./acp closeđóng phiên ACP và xóa liên kết.
bindings[] cấp cao nhất với type: "acp" và match.channel: "imessage".
match.peer.id có thể dùng:
- định danh DM đã chuẩn hóa như
+15555550123hoặcuser@example.com chat_id:<id>(khuyến nghị cho liên kết nhóm ổn định)chat_guid:<guid>chat_identifier:<identifier>
Mô hình triển khai
Dedicated bot macOS user (separate iMessage identity)
Dedicated bot macOS user (separate iMessage identity)
Dùng một Apple ID và người dùng macOS riêng để lưu lượng bot được cô lập khỏi hồ sơ Messages cá nhân của bạn.Luồng điển hình:
- Tạo/đăng nhập một người dùng macOS riêng.
- Đăng nhập vào Messages bằng Apple ID của bot trong người dùng đó.
- Cài đặt
imsgtrong người dùng đó. - Tạo wrapper SSH để OpenClaw có thể chạy
imsgtrong ngữ cảnh người dùng đó. - Trỏ
channels.imessage.accounts.<id>.cliPathvà.dbPathđến hồ sơ người dùng đó.
Remote Mac over Tailscale (example)
Remote Mac over Tailscale (example)
Cấu trúc liên kết phổ biến:Dùng khóa SSH để cả SSH và SCP đều không cần tương tác.
Đảm bảo khóa máy chủ đã được tin cậy trước (ví dụ
- gateway chạy trên Linux/VM
- iMessage +
imsgchạy trên một Mac trong tailnet của bạn - wrapper
cliPathdùng SSH để chạyimsg remoteHostbật việc lấy tệp đính kèm qua SCP
ssh bot@mac-mini.tailnet-1234.ts.net) để known_hosts được điền.Multi-account pattern
Multi-account pattern
iMessage hỗ trợ cấu hình theo từng tài khoản dưới
channels.imessage.accounts.Mỗi tài khoản có thể ghi đè các trường như cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, thiết lập lịch sử và danh sách gốc tệp đính kèm được cho phép.Phương tiện, chia đoạn và đích gửi
Attachments and media
Attachments and media
- nạp tệp đính kèm đến tắt theo mặc định — đặt
channels.imessage.includeAttachments: trueđể chuyển tiếp ảnh, ghi âm thoại, video và các tệp đính kèm khác đến agent. Khi mục này bị tắt, iMessage chỉ có tệp đính kèm sẽ bị loại bỏ trước khi đến agent và có thể hoàn toàn không tạo dòng nhật kýInbound message. - đường dẫn tệp đính kèm từ xa có thể được lấy qua SCP khi
remoteHostđược đặt - đường dẫn tệp đính kèm phải khớp với các gốc được cho phép:
channels.imessage.attachmentRoots(cục bộ)channels.imessage.remoteAttachmentRoots(chế độ SCP từ xa)- mẫu gốc mặc định:
/Users/*/Library/Messages/Attachments
- SCP dùng kiểm tra khóa máy chủ nghiêm ngặt (
StrictHostKeyChecking=yes) - kích thước phương tiện gửi đi dùng
channels.imessage.mediaMaxMb(mặc định 16 MB)
Outbound chunking
Outbound chunking
- giới hạn đoạn văn bản:
channels.imessage.textChunkLimit(mặc định 4000) - chế độ chia đoạn:
channels.imessage.chunkModelength(mặc định)newline(tách ưu tiên theo đoạn văn)
Addressing formats
Addressing formats
Đích rõ ràng được ưu tiên:
chat_id:123(khuyến nghị để định tuyến ổn định)chat_guid:...chat_identifier:...
imessage:+1555...sms:+1555...user@example.com
Hành động API riêng tư
Khiimsg launch đang chạy và openclaw channels status --probe báo cáo privateApi.available: true, công cụ tin nhắn có thể dùng các hành động gốc của iMessage ngoài gửi văn bản thông thường.
Available actions
Available actions
- react: Thêm/xóa tapback iMessage (
messageId,emoji,remove). Các tapback được hỗ trợ ánh xạ đến yêu thích, thích, không thích, cười, nhấn mạnh và câu hỏi. - reply: Gửi trả lời theo luồng cho một tin nhắn hiện có (
messageId,texthoặcmessage, cộng vớichatGuid,chatId,chatIdentifier, hoặcto). - sendWithEffect: Gửi văn bản với hiệu ứng iMessage (
texthoặcmessage,effecthoặceffectId). - edit: Chỉnh sửa một tin nhắn đã gửi trên các phiên bản macOS/API riêng tư được hỗ trợ (
messageId,texthoặcnewText). - unsend: Thu hồi một tin nhắn đã gửi trên các phiên bản macOS/API riêng tư được hỗ trợ (
messageId). - upload-file: Gửi phương tiện/tệp (
bufferở dạng base64 hoặcmedia/path/filePathđã được hydrate,filename, tùy chọnasVoice). Bí danh cũ:sendAttachment. - renameGroup, setGroupIcon, addParticipant, removeParticipant, leaveGroup: Quản lý cuộc trò chuyện nhóm khi đích hiện tại là một cuộc trò chuyện nhóm.
Message IDs
Message IDs
Ngữ cảnh iMessage đến bao gồm cả giá trị
MessageSid ngắn và GUID tin nhắn đầy đủ khi có. ID ngắn nằm trong phạm vi cache trả lời gần đây trong bộ nhớ và được kiểm tra theo cuộc trò chuyện hiện tại trước khi dùng. Nếu ID ngắn đã hết hạn hoặc thuộc về cuộc trò chuyện khác, hãy thử lại với MessageSidFull đầy đủ.Capability detection
Capability detection
OpenClaw chỉ ẩn các hành động API riêng tư khi trạng thái probe trong cache cho biết cầu nối không khả dụng. Nếu trạng thái chưa rõ, các hành động vẫn hiển thị và việc điều phối sẽ probe lười để hành động đầu tiên có thể thành công sau
imsg launch mà không cần làm mới trạng thái thủ công riêng.Read receipts and typing
Read receipts and typing
Khi cầu nối API riêng tư hoạt động, các cuộc trò chuyện đến được chấp nhận sẽ được đánh dấu là đã đọc trước khi điều phối và bong bóng đang nhập được hiển thị cho người gửi trong khi agent tạo phản hồi. Tắt đánh dấu đã đọc bằng:Các bản dựng
imsg cũ hơn, có trước danh sách năng lực theo từng phương thức, sẽ âm thầm chặn nhập/đã đọc; OpenClaw ghi một cảnh báo một lần cho mỗi lần khởi động lại để có thể quy nguyên nhân biên nhận bị thiếu.Inbound tapbacks
Inbound tapbacks
OpenClaw đăng ký các tapback iMessage và định tuyến phản ứng được chấp nhận dưới dạng sự kiện hệ thống thay vì văn bản tin nhắn thông thường, vì vậy tapback của người dùng không kích hoạt vòng lặp trả lời thông thường.Chế độ thông báo được điều khiển bởi
channels.imessage.reactionNotifications:"own"(mặc định): chỉ thông báo khi người dùng phản ứng với tin nhắn do bot soạn."all": thông báo cho tất cả tapback đến từ người gửi được ủy quyền."off": bỏ qua tapback đến.
channels.imessage.accounts.<id>.reactionNotifications.Ghi cấu hình
iMessage cho phép ghi cấu hình do kênh khởi tạo theo mặc định (cho/config set|unset khi commands.config: true).
Tắt:
Gộp DM gửi tách (lệnh + URL trong một lần soạn)
Khi người dùng nhập một lệnh và một URL cùng nhau — ví dụDump https://example.com/article — ứng dụng Messages của Apple tách lần gửi thành hai hàng chat.db riêng biệt:
- Một tin nhắn văn bản (
"Dump"). - Một bong bóng xem trước URL (
"https://...") với ảnh xem trước OG dưới dạng tệp đính kèm.
imsg thêm vào.
channels.imessage.coalesceSameSenderDms cho phép một DM gộp các hàng liên tiếp từ cùng người gửi thành một lượt tác nhân duy nhất. Trò chuyện nhóm vẫn tiếp tục phân phối theo từng tin nhắn để giữ nguyên cấu trúc lượt nhiều người dùng.
- Khi nào bật
- Bật
- Đánh đổi
Bật khi:
- Bạn cung cấp Skills kỳ vọng
command + payloadtrong một tin nhắn (dump, paste, save, queue, v.v.). - Người dùng của bạn dán URL, hình ảnh hoặc nội dung dài cùng với lệnh.
- Bạn có thể chấp nhận độ trễ lượt DM tăng thêm (xem bên dưới).
- Bạn cần độ trễ lệnh tối thiểu cho các kích hoạt DM một từ.
- Tất cả luồng của bạn là lệnh dùng một lần, không có payload theo sau.
Kịch bản và nội dung tác nhân thấy
| Người dùng soạn | chat.db tạo ra | Cờ tắt (mặc định) | Cờ bật + cửa sổ 2500 ms |
|---|---|---|---|
Dump https://example.com (một lần gửi) | 2 hàng cách nhau ~1 s | Hai lượt tác nhân: chỉ “Dump”, rồi URL | Một lượt: văn bản đã gộp Dump https://example.com |
Save this 📎image.jpg caption (tệp đính kèm + văn bản) | 2 hàng | Hai lượt (tệp đính kèm bị bỏ khi gộp) | Một lượt: giữ nguyên văn bản + hình ảnh |
/status (lệnh độc lập) | 1 hàng | Phân phối tức thì | Đợi tối đa bằng cửa sổ, rồi phân phối |
| Chỉ dán URL | 1 hàng | Phân phối tức thì | Phân phối tức thì (chỉ một mục trong bucket) |
| Văn bản + URL được gửi thành hai tin nhắn riêng có chủ ý, cách nhau vài phút | 2 hàng ngoài cửa sổ | Hai lượt | Hai lượt (cửa sổ hết hạn giữa chúng) |
| Gửi dồn dập nhanh (>10 DM nhỏ trong cửa sổ) | N hàng | N lượt | Một lượt, đầu ra có giới hạn (áp dụng giới hạn đầu + mới nhất, văn bản/tệp đính kèm) |
| Hai người đang nhập trong một trò chuyện nhóm | N hàng từ M người gửi | M+ lượt (mỗi bucket người gửi một lượt) | M+ lượt — trò chuyện nhóm không được gộp |
Bắt kịp sau thời gian Gateway ngừng hoạt động
Khi Gateway ngoại tuyến (sự cố, khởi động lại, Mac ngủ, máy tắt),imsg watch tiếp tục từ trạng thái chat.db hiện tại sau khi Gateway hoạt động trở lại — theo mặc định, mọi thứ đến trong khoảng gián đoạn sẽ không bao giờ được thấy. Catchup phát lại các tin nhắn đó trong lần khởi động tiếp theo để tác nhân không âm thầm bỏ lỡ lưu lượng đến.
Catchup bị tắt theo mặc định. Bật theo từng kênh:
Cách hoạt động
Một lượt chạy cho mỗi lần khởi độngmonitorIMessageProvider, được sắp xếp theo thứ tự imsg launch sẵn sàng → watch.subscribe → performIMessageCatchup → vòng lặp phân phối trực tiếp. Bản thân Catchup dùng chats.list + messages.history theo từng cuộc trò chuyện qua cùng ứng dụng khách JSON-RPC mà imsg watch dùng. Mọi thứ đến trong lượt catchup sẽ đi qua phân phối trực tiếp như bình thường; bộ nhớ đệm chống trùng lặp inbound hiện có hấp thụ mọi phần chồng lấn với các hàng được phát lại.
Mỗi hàng được phát lại được đưa qua đường dẫn phân phối trực tiếp (evaluateIMessageInbound + dispatchInboundMessage), vì vậy allowlist, chính sách nhóm, debouncer, bộ nhớ đệm echo và biên nhận đã đọc hoạt động giống hệt nhau với tin nhắn phát lại và tin nhắn trực tiếp.
Ngữ nghĩa con trỏ và thử lại
Catchup giữ một con trỏ theo từng tài khoản tại<openclawStateDir>/imessage/catchup/<account>__<hash>.json (thư mục trạng thái OpenClaw mặc định là ~/.openclaw, có thể ghi đè bằng OPENCLAW_STATE_DIR):
- Con trỏ tiến lên sau mỗi lần phân phối thành công và được giữ nguyên khi phân phối một hàng ném lỗi — lần khởi động tiếp theo thử lại cùng hàng đó từ con trỏ đã giữ.
- Sau
maxFailureRetrieslần ném lỗi liên tiếp với cùngguid, catchup ghi nhật kýwarnvà buộc con trỏ tiến qua tin nhắn bị kẹt để các lần khởi động sau có thể tiếp tục. - Các guid đã bị bỏ cuộc trước đó sẽ bị bỏ qua ngay khi thấy (không cố phân phối) trong các lần chạy sau và được tính trong
skippedGivenUpở tóm tắt lượt chạy.
Tín hiệu hiển thị cho người vận hành
WARN ... capped to perRunLimit nghĩa là một lần khởi động chưa xử lý hết toàn bộ tồn đọng. Tăng perRunLimit (tối đa 500) nếu các khoảng gián đoạn của bạn thường xuyên vượt quá lượt mặc định 50 hàng.
Khi nào nên để tắt
- Gateway chạy liên tục với watchdog tự động khởi động lại và khoảng gián đoạn luôn < vài giây — mặc định tắt là ổn.
- Lưu lượng DM thấp và tin nhắn bị bỏ lỡ sẽ không thay đổi hành vi tác nhân — cửa sổ ban đầu
firstRunLookbackMinutescó thể phân phối ngữ cảnh cũ bất ngờ trong lần bật đầu tiên.
firstRunLookbackMinutes (mặc định 30 phút), không phải toàn bộ cửa sổ maxAgeMinutes — điều này tránh phát lại lịch sử dài các tin nhắn trước khi bật.
Khắc phục sự cố
Không tìm thấy imsg hoặc RPC không được hỗ trợ
Không tìm thấy imsg hoặc RPC không được hỗ trợ
Xác thực binary và hỗ trợ RPC:Nếu probe báo RPC không được hỗ trợ, hãy cập nhật
imsg. Nếu thao tác API riêng tư không khả dụng, hãy chạy imsg launch trong phiên người dùng macOS đã đăng nhập rồi probe lại. Nếu Gateway không chạy trên macOS, hãy dùng thiết lập Remote Mac qua SSH ở trên thay vì đường dẫn imsg cục bộ mặc định.Gateway không chạy trên macOS
Gateway không chạy trên macOS
cliPath: "imsg" mặc định phải chạy trên Mac đã đăng nhập vào Messages. Trên Linux hoặc Windows, đặt channels.imessage.cliPath thành script wrapper SSH tới Mac đó và chạy imsg "$@".DM bị bỏ qua
DM bị bỏ qua
Kiểm tra:
channels.imessage.dmPolicychannels.imessage.allowFrom- phê duyệt ghép đôi (
openclaw pairing list imessage)
Tin nhắn nhóm bị bỏ qua
Tin nhắn nhóm bị bỏ qua
Kiểm tra:
channels.imessage.groupPolicychannels.imessage.groupAllowFrom- hành vi allowlist của
channels.imessage.groups - cấu hình mẫu nhắc đến (
agents.list[].groupChat.mentionPatterns)
Tệp đính kèm từ xa bị lỗi
Tệp đính kèm từ xa bị lỗi
Kiểm tra:
channels.imessage.remoteHostchannels.imessage.remoteAttachmentRoots- xác thực khóa SSH/SCP từ máy chủ Gateway
- khóa máy chủ tồn tại trong
~/.ssh/known_hoststrên máy chủ Gateway - khả năng đọc đường dẫn từ xa trên Mac đang chạy Messages
Đã bỏ lỡ lời nhắc quyền của macOS
Đã bỏ lỡ lời nhắc quyền của macOS
Chạy lại trong terminal GUI tương tác trong cùng ngữ cảnh người dùng/phiên và phê duyệt lời nhắc:Xác nhận Full Disk Access + Automation đã được cấp cho ngữ cảnh tiến trình chạy OpenClaw/
imsg.Con trỏ tham chiếu cấu hình
Liên quan
- Tổng quan kênh — tất cả kênh được hỗ trợ
- Loại bỏ BlueBubbles và đường dẫn imsg iMessage — thông báo và tóm tắt di chuyển
- Chuyển từ BlueBubbles — bảng chuyển đổi cấu hình và các bước chuyển đổi tuần tự
- Ghép đôi — xác thực DM và luồng ghép đôi
- Nhóm — hành vi trò chuyện nhóm và chặn theo nhắc đến
- Định tuyến kênh — định tuyến phiên cho tin nhắn
- Bảo mật — mô hình truy cập và gia cố