Team Messenger is a WordPress plugin that adds secure, real-time messaging for logged-in users. It combines direct (1:1) chats, group rooms, optional end-to-end encryption for private threads, media uploads with administrator-controlled policies, presence, notification badges, pinned messages, and dedicated UIs on both the public site and in wp-admin.
Technical details and changelog notes may be published on the plugin support page or documentation as they are updated.
Real-time direct messaging between logged-in WordPress users over the REST API (team_messenger/v1), with pagination for message history.
Optional end-to-end encryption (E2E) for direct messages: clients can exchange messages flagged as encrypted; public keys are stored per user via dedicated REST endpoints (/keys). Group chats remain readable on the server (plaintext server-side).
Full group chat lifecycle: create, read, update, and delete groups; set name, description, and a group avatar; list members; add or remove members; promote or demote roles via PATCH on members.
Rich media in chats: images, video, and audio attachments; optional voice messages recorded in the browser (MediaRecorder, typically WebM/WebA) with server-side MIME handling for reliable uploads.
Two upload contexts on /media/upload: chat for conversation attachments and avatar for group profile images, each with independent size and format rules enforced on the server.
Administrator-configurable media policy: separate maximum file sizes for chat (0.1–100 MB) and group avatars (0.1–50 MB); toggles for allowed chat categories (image / video / audio) and allowed avatar formats (e.g. JPEG, PNG, GIF, WebP). Limits are exposed to the client as hints; the server performs final validation.
Flexible storage for uploaded files: attachments can live in the WordPress Media Library or in a plugin-protected directory (.htaccess where applicable), with authenticated download through /media/download/{file} for the private storage path.
“Saved messages” (self-chat): a personal notebook thread with the current user as both sides, for notes and files.
Recent conversations: when no search query is sent, the user list prioritizes people you have recently messaged, without exposing the entire user directory.
Privacy-conscious user search: requires at least three characters and returns a capped number of results.
Presence (online / last seen): clients send a throttled heartbeat to POST /presence; last_seen and is_online are returned in user lists only when the viewer has shared DM history with that user or shares a group (privacy-preserving).
Notifications: GET /notifications/counts returns separate counts and text previews for new personal and group activity since the last acknowledgment; POST /notifications/ack supports scope: all, personal, or group.
WordPress admin bar integration: when the toolbar is visible, separate nodes show personal and group chat badges; dropdowns load preview snippets (periodic polling) and allow clearing notifications by scope. Non-administrators link to the site home; users with manage_options can jump to the full messenger screen.
Dashboard widgets (administrators): two WordPress Dashboard widgets—personal (1:1) and group—provide inline chat with the same REST capabilities as the main messenger (including pins and upload limits), visible only to users with manage_options who have not disabled admin chat.
Pinned messages: one pin per direct thread (stored in team_messenger_direct_pins) and one per group (pinned_message_id); pin/unpin from the floating widget, [team_messenger_web_chat], admin messenger, and dashboard widgets; a pinned strip shows a snippet and scroll-to-message; pins clear if the underlying message is deleted.
Read state: opening a direct thread marks incoming messages from the partner as read (is_read). For groups, per-user last-read timestamps sync when the thread is opened; your own outgoing group messages can show read receipts (“sent” vs “read”) when all other members have caught up.
Message lifecycle: edit or soft-delete your own messages in direct and group threads (API supports edit/delete on owned messages).
Data retention: a daily scheduled event permanently removes soft-deleted direct and group messages whose deleted_at is older than 30 days (GDPR-oriented housekeeping).
Multiple surfaces: floating chat widget on the front end; full-page [team_messenger_web_chat] shortcode with configurable HTML fallback for guests; dedicated admin “Messenger” screen; optional floating FAB on all wp-admin screens (toggle in settings, respects per-user “hide admin chat”); admin bar badges; two dashboard widgets for admins.
Customization in settings: primary accent color, widget corner placement, welcome text, shortcode guest content (visual/HTML editor), and site-wide “show messenger on all wp-admin screens.”
Per-user preferences on the user profile: optionally hide front-end chat (widget + shortcode UI) and/or all wp-admin chat (floating messenger, full messenger page, admin bar nodes, dashboard widgets). Shortcode pages show a short notice if frontend chat is disabled for that user.
Abuse protection: rate limiting on sending messages and on creating groups to reduce spam and overload.
Internationalization: text domain team-messenger; Persian (fa_IR) and other translations can ship via the languages folder; English is the source language.
۱. پیامرسانی مستقیم (یکبهیک) بین کاربران واردشدهٔ وردپرس از طریق REST API با نام فضای team_messenger/v1 و صفحهبندی تاریخچهٔ پیام.
۲. رمزنگاری سرتاسری اختیاری برای گفتگوی خصوصی: امکان ذخیرهٔ پیام با پرچم رمزشده؛ کلیدهای عمومی با endpointهای /keys ذخیره و بازیابی میشوند. در گروه، متن روی سرور بهصورت متن عادی قابل پردازش است.
۳. مدیریت کامل چت گروهی: ایجاد، ویرایش، حذف گروه؛ نام، توضیحات و آواتار گروه؛ فهرست و افزودن/حذف عضو؛ تغییر نقش با PATCH روی عضو.
۴. رسانهٔ غنی: تصویر، ویدیو و صوت؛ پیام صوتی با ضبط در مرورگر (معمولاً WebM/WebA) و نرمالسازی MIME در سرور.
۵. دو زمینهٔ آپلود در /media/upload: chat برای پیوست گفتگو و avatar برای تصویر پروفایل گروه، هر کدام با سقف حجم و فرمت مستقل و اعتبارسنجی سروری.
۶. سیاست رسانه از پنل مدیر: حداکثر حجم جدا برای چت (۰٫۱ تا ۱۰۰ مگابایت) و آواتار (۰٫۱ تا ۵۰ مگابایت)؛ روشن/خاموش بودن دستههای مجاز چت و فرمتهای مجاز آواتار؛ اعداد بهعنوان راهنما به کلاینت میرود، تصمیم نهایی با سرور است.
۷. ذخیرهسازی انعطافپذیر: کتابخانهٔ رسانهٔ وردپرس یا پوشهٔ محافظتشدهٔ افزونه با .htaccess؛ برای مسیر اختصاصی، دانلود امن با /media/download/{file} فقط برای کاربر احراز هویتشده.
۸. «پیامهای ذخیرهشده» (چت با خود): فضای شخصی برای یادداشت و فایل با همان کاربر بهعنوان طرف گفتگو.
۹. گفتگوهای اخیر: بدون query جستجو، اولویت با کسانی است که اخیراً پیام دادهاید؛ کل دایرکتوری کاربران افشا نمیشود.
۱۰. جستجوی کاربر با حریم خصوصی: حداقل سه کاراکتر و سقف تعداد نتیجه.
۱۱. حضور (آنلاین / آخرین فعالیت): ضربان throttled با POST /presence؛ نمایش last_seen و is_online فقط اگر سابقهٔ پیام خصوصی مشترک یا عضویت گروه مشترک وجود داشته باشد.
۱۲. اعلانها: GET /notifications/counts شمارنده و پیشنمایش متن برای پیام شخصی و گروهی از زمان آخرین تأیید؛ POST /notifications/ack با all / personal / group.
۱۳. نوار ابزار وردپرس: دو گره جدا برای چت شخصی و گروهی با شمارنده و منوی کشویی (پolling برای پیشنمایش؛ پاکسازی محدودهای). غیرمدیر به خانه؛ مدیر با manage_options به پیامرسان کامل.
۱۴. ویجت داشبورد (مدیران): دو ویجت جدا در پیشخوان وردپرس برای گفتگوی شخصی و گروهی با همان API (از جمله پین و محدودیت آپلود)؛ فقط برای manage_options و اگر چت ادمین خاموش نباشد.
۱۵. پیام پینشده: یک پین برای هر گفتگوی دو نفره و یک پین برای هر گروه؛ در ویجت، شورتکد، پیامرسان ادمین و داشبورد؛ نوار پین با اسکرول به پیام؛ با حذف پیام، پین هم حذف میشود.
۱۶. وضعیت خواندهشدن: باز کردن گفتگوی خصوصی، پیامهای ورودی طرف را is_read میکند؛ در گروه، timestamp آخرین بازدید هر کاربر همگام میشود؛ برای پیامهای خروجی خودتان میتوان رسید «همه خواندند» را نشان داد.
۱۷. چرخهٔ پیام: ویرایش و حذف نرم پیامهای خود در خصوصی و گروه از طریق API.
۱۸. نگهداری داده: رویداد زمانبندیشدهٔ روزانه؛ حذف دائمی رکوردهای deleted_at قدیمیتر از ۳۰ روز (جهتگیری GDPR).
۱۹. چند رابط: ویجت شناور سایت؛ شورتکد [team_messenger_web_chat] با محتوای قابل تنظیم برای مهمان؛ صفحهٔ پیامرسان ادمین؛ دکمهٔ شناور اختیاری در کل wp-admin (تنظیم سراسری + احترام به خاموش بودن چت ادمین برای کاربر)؛ آیتم نوار ابزار؛ دو ویجت داشبورد.
۲۰. شخصیسازی در تنظیمات: رنگ اصلی، گوشهٔ ویجت، متن خوشآمد، محتوای مهمان شورتکد، و روشن/خاموش بودن پیامرسان در تمام صفحات پنل.
۲۱. ترجیحات کاربری در پروفایل: پنهان کردن چت سایت و/یا چت wp-admin (شناور، صفحهٔ پیامرسان، نوار ابزار، ویجتها). روی صفحهٔ شورتکد در صورت خاموش بودن، اعلان کوتاه.
۲۲. محافظت در برابر سوءاستفاده: محدودیت نرخ برای ارسال پیام و ایجاد گروه.
۲۳. چندزبانه: دامنهٔ team-messenger؛ پوشهٔ languages شامل fa_IR و POT؛ زبان پیشفرض متن انگلیسی است.