Matrix (plugin)¶
Matrix ایک کھلا، غیر مرکزی پیغام رسانی پروٹوکول ہے۔ OpenClaw connects as a Matrix user on any homeserver, so you need a Matrix account for the bot. لاگ اِن ہونے کے بعد، آپ بوٹ کو براہِ راست DM کر سکتے ہیں یا اسے کمروں (Matrix "گروپس") میں مدعو کر سکتے ہیں۔ Beeper بھی ایک درست کلائنٹ آپشن ہے، لیکن اس کے لیے E2EE کا فعال ہونا ضروری ہے۔
اسٹیٹس: پلگ اِن کے ذریعے سپورٹ شدہ (@vector-im/matrix-bot-sdk)۔ براہِ راست پیغامات، رومز، تھریڈز، میڈیا، ری ایکشنز، پولز (send + poll-start بطور متن)، لوکیشن، اور E2EE (کرپٹو سپورٹ کے ساتھ)۔
پلگ اِن درکار ہے¶
Matrix ایک پلگ اِن کے طور پر فراہم کیا جاتا ہے اور کور انسٹال میں شامل نہیں ہوتا۔
CLI کے ذریعے انسٹال کریں (npm رجسٹری):
openclaw plugins install @openclaw/matrix
لوکل چیک آؤٹ (جب git ریپو سے چلایا جا رہا ہو):
openclaw plugins install ./extensions/matrix
اگر آپ کنفیگر/آن بورڈنگ کے دوران Matrix کا انتخاب کریں اور git چیک آؤٹ شناخت ہو جائے، تو OpenClaw خودکار طور پر لوکل انسٹال راستہ پیش کرے گا۔
تفصیلات: Plugins
سیٹ اپ¶
-
Matrix پلگ اِن انسٹال کریں: - npm سے:
openclaw plugins install @openclaw/matrix- لوکل چیک آؤٹ سے:openclaw plugins install ./extensions/matrix -
کسی homeserver پر Matrix اکاؤنٹ بنائیں: - ہوسٹنگ کے اختیارات دیکھیں: https://matrix.org/ecosystem/hosting/ - یا خود ہوسٹ کریں۔
-
بوٹ اکاؤنٹ کے لیے ایک ایکسیس ٹوکن حاصل کریں:
- Matrix لاگ اِن API استعمال کریں
curlکے ساتھ اپنے home server پر:
bash
curl --request POST \
--url https://matrix.example.org/_matrix/client/v3/login \
--header 'Content-Type: application/json' \
--data '{
"type": "m.login.password",
"identifier": {
"type": "m.id.user",
"user": "your-user-name"
},
"password": "your-password"
}'
matrix.example.orgکو اپنے homeserver URL سے بدلیں۔- یا
channels.matrix.userId+channels.matrix.passwordسیٹ کریں: OpenClaw وہی لاگ اِن اینڈپوائنٹ کال کرتا ہے، ایکسیس ٹوکن کو~/.openclaw/credentials/matrix/credentials.jsonمیں محفوظ کرتا ہے، اور اگلی شروعات پر اسے دوبارہ استعمال کرتا ہے۔
-
اسناد کنفیگر کریں: - Env:
MATRIX_HOMESERVER,MATRIX_ACCESS_TOKEN(یاMATRIX_USER_ID+MATRIX_PASSWORD) - یا کنفیگ:channels.matrix.*- اگر دونوں سیٹ ہوں تو کنفیگ کو ترجیح حاصل ہوگی۔ - ایکسیس ٹوکن کے ساتھ: صارف ID خودکار طور پر/whoamiکے ذریعے حاصل کی جاتی ہے۔ - جب سیٹ ہو،channels.matrix.userIdمکمل Matrix ID ہونا چاہیے (مثال:@bot:example.org)۔ -
Gateway کو ری اسٹارٹ کریں (یا آن بورڈنگ مکمل کریں)۔
-
کسی بھی Matrix کلائنٹ سے بوٹ کے ساتھ DM شروع کریں یا اسے کسی روم میں مدعو کریں (Element، Beeper، وغیرہ؛ دیکھیں https://matrix.org/ecosystem/clients/)۔ Beeper کو E2EE درکار ہے، اس لیے
channels.matrix.encryption: trueسیٹ کریں اور ڈیوائس کی تصدیق کریں۔
کم از کم کنفیگ (ایکسیس ٹوکن، صارف ID خودکار طور پر حاصل):
{
channels: {
matrix: {
enabled: true,
homeserver: "https://matrix.example.org",
accessToken: "syt_***",
dm: { policy: "pairing" },
},
},
}
E2EE کنفیگ (اینڈ ٹو اینڈ انکرپشن فعال):
{
channels: {
matrix: {
enabled: true,
homeserver: "https://matrix.example.org",
accessToken: "syt_***",
encryption: true,
dm: { policy: "pairing" },
},
},
}
خفیہ کاری (E2EE)¶
اینڈ ٹو اینڈ انکرپشن Rust crypto SDK کے ذریعے معاونت یافتہ ہے۔
channels.matrix.encryption: true کے ساتھ فعال کریں:
- اگر کرپٹو ماڈیول لوڈ ہو جائے تو انکرپٹڈ کمروں کو خودکار طور پر ڈکرپٹ کیا جاتا ہے۔
- آؤٹ باؤنڈ میڈیا انکرپٹڈ کمروں میں بھیجتے وقت انکرپٹ ہوتا ہے۔
- پہلی کنکشن پر، OpenClaw آپ کی دیگر سیشنز سے ڈیوائس ویریفیکیشن کی درخواست کرتا ہے۔
- Verify the device in another Matrix client (Element, etc.) تاکہ کی شیئرنگ فعال ہو سکے۔
- اگر کرپٹو ماڈیول لوڈ نہ ہو سکے تو E2EE غیرفعال ہو جاتا ہے اور انکرپٹڈ کمرے ڈکرپٹ نہیں ہوں گے؛ OpenClaw ایک وارننگ لاگ کرتا ہے۔
- اگر آپ کو کرپٹو ماڈیول کی عدم موجودگی کی غلطیاں نظر آئیں (مثال کے طور پر،
@matrix-org/matrix-sdk-crypto-nodejs-*)، تو@matrix-org/matrix-sdk-crypto-nodejsکے لیے build اسکرپٹس کی اجازت دیں اورpnpm rebuild @matrix-org/matrix-sdk-crypto-nodejsچلائیں یا بائنری حاصل کریںnode node_modules/@matrix-org/matrix-sdk-crypto-nodejs/download-lib.jsکے ساتھ۔
کرپٹو اسٹیٹ فی اکاؤنٹ + ایکسس ٹوکن کے حساب سے محفوظ ہوتی ہے:
~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/crypto/
(SQLite ڈیٹابیس)۔ سنک اسٹیٹ اسی کے ساتھ bot-storage.json میں موجود ہوتی ہے۔
اگر ایکسس ٹوکن (ڈیوائس) تبدیل ہو جائے تو ایک نیا اسٹور بنایا جاتا ہے اور انکرپٹڈ رومز کے لیے بوٹ کی دوبارہ تصدیق ضروری ہوتی ہے۔
ڈیوائس کی تصدیق: جب E2EE فعال ہو، بوٹ اسٹارٹ اپ پر آپ کے دوسرے سیشنز سے تصدیق کی درخواست کرے گا۔ Element (یا کوئی اور کلائنٹ) کھولیں اور اعتماد قائم کرنے کے لیے تصدیقی درخواست منظور کریں۔ تصدیق کے بعد، بوٹ انکرپٹڈ رومز میں پیغامات ڈی کرپٹ کر سکتا ہے۔
Routing model¶
- جوابات ہمیشہ Matrix پر واپس جاتے ہیں۔
- DMs ایجنٹ کے مرکزی سیشن کو شیئر کرتے ہیں؛ کمرے گروپ سیشنز سے میپ ہوتے ہیں۔
Access control (DMs)¶
- ڈیفالٹ:
channels.matrix.dm.policy = "pairing"۔ نامعلوم بھیجنے والوں کو ایک پیئرنگ کوڈ ملتا ہے۔ - منظوری دیں بذریعہ:
openclaw pairing list matrixopenclaw pairing approve matrix <CODE>- عوامی DMs:
channels.matrix.dm.policy="open"کے ساتھchannels.matrix.dm.allowFrom=["*"]۔ channels.matrix.dm.allowFromمکمل Matrix یوزر IDs قبول کرتا ہے (مثال:@user:server)۔ جب ڈائریکٹری سرچ میں ایک ہی عین میچ ملتا ہے تو وزرڈ ڈسپلے ناموں کو یوزر IDs میں تبدیل کر دیتا ہے۔
Rooms (groups)¶
- ڈیفالٹ:
channels.matrix.groupPolicy = "allowlist"(ذکر/مینشن پر مبنی گیٹنگ)۔ جب ڈیفالٹ سیٹ نہ ہو تو اسے اووررائیڈ کرنے کے لیےchannels.defaults.groupPolicyاستعمال کریں۔ - کمروں کو allowlist کریں
channels.matrix.groupsکے ساتھ (کمرہ IDs یا aliases؛ نام IDs میں ریزولو کیے جاتے ہیں جب ڈائریکٹری سرچ ایک واحد درست میچ تلاش کرے):
{
channels: {
matrix: {
groupPolicy: "allowlist",
groups: {
"!roomId:example.org": { allow: true },
"#alias:example.org": { allow: true },
},
groupAllowFrom: ["@owner:example.org"],
},
},
}
requireMention: falseاس کمرے میں خودکار جواب فعال کرتا ہے۔groups."*"کمروں میں mention gating کے لیے ڈیفالٹس سیٹ کر سکتا ہے۔groupAllowFromمحدود کرتا ہے کہ کمروں میں کون سے ارسال کنندگان بوٹ کو ٹرگر کر سکتے ہیں (مکمل Matrix صارف IDs)۔- فی کمرہ
usersallowlists کسی مخصوص کمرے کے اندر ارسال کنندگان کو مزید محدود کر سکتی ہیں (مکمل Matrix صارف IDs استعمال کریں)۔ - کنفیگر وِزارڈ کمرہ allowlists (کمرہ IDs، aliases، یا نام) کے لیے پرامپٹ کرتا ہے اور ناموں کو صرف عین، منفرد میچ پر ریزولو کرتا ہے۔
- اسٹارٹ اپ پر، OpenClaw allowlists میں کمرہ/صارف ناموں کو IDs میں ریزولو کرتا ہے اور میپنگ لاگ کرتا ہے؛ غیر ریزولو شدہ اندراجات allowlist میچنگ کے لیے نظر انداز کر دیے جاتے ہیں۔
- دعوتیں بطورِ طے شدہ خودکار طور پر قبول کی جاتی ہیں؛ کنٹرول کریں
channels.matrix.autoJoinاورchannels.matrix.autoJoinAllowlistکے ساتھ۔ - کوئی کمرہ نہیں کی اجازت دینے کے لیے،
channels.matrix.groupPolicy: "disabled"سیٹ کریں (یا خالی allowlist رکھیں)۔ - پرانا کلید:
channels.matrix.rooms(وہی ساخت جیسیgroups)۔
Threads¶
- جواب تھریڈنگ معاونت یافتہ ہے۔
channels.matrix.threadRepliesکنٹرول کرتا ہے کہ جوابات تھریڈز میں رہیں یا نہیں:off,inbound(ڈیفالٹ),alwayschannels.matrix.replyToModeاس وقت reply-to میٹا ڈیٹا کنٹرول کرتا ہے جب تھریڈ میں جواب نہ دیا جا رہا ہو:off(ڈیفالٹ),first,all
Capabilities¶
| Feature | Status |
|---|---|
| Direct messages | ✅ معاونت یافتہ |
| Rooms | ✅ معاونت یافتہ |
| Threads | ✅ معاونت یافتہ |
| Media | ✅ معاونت یافتہ |
| E2EE | ✅ معاونت یافتہ (کرپٹو ماڈیول درکار) |
| Reactions | ✅ معاونت یافتہ (اوزار کے ذریعے بھیجیں/پڑھیں) |
| Polls | ✅ بھیجنا معاونت یافتہ؛ آنے والے پول آغاز کو متن میں تبدیل کیا جاتا ہے (جوابات/اختتام نظر انداز) |
| Location | ✅ معاونت یافتہ (geo URI؛ altitude نظر انداز) |
| Native commands | ✅ معاونت یافتہ |
Troubleshooting¶
سب سے پہلے یہ ladder چلائیں:
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
openclaw channels status --probe
پھر ضرورت ہو تو DM pairing اسٹیٹ کی تصدیق کریں:
openclaw pairing list matrix
عام ناکامیاں:
- لاگ اِن ہے مگر کمرے کے پیغامات نظر انداز ہو رہے ہیں: کمرہ
groupPolicyیا کمرہ allowlist کے ذریعے بلاک ہے۔ - DMs نظر انداز: جب
channels.matrix.dm.policy="pairing"ہو تو ارسال کنندہ منظوری کا منتظر ہے۔ - انکرپٹڈ کمرے ناکام: کرپٹو سپورٹ یا انکرپشن سیٹنگز میں عدم مطابقت۔
ٹرائیاج فلو کے لیے: /channels/troubleshooting۔
Configuration reference (Matrix)¶
مکمل کنفیگریشن: Configuration
Provider options:
channels.matrix.enabled: چینل اسٹارٹ اپ کو فعال/غیرفعال کریں۔channels.matrix.homeserver: homeserver URL۔channels.matrix.userId: Matrix صارف ID (ایکسیس ٹوکن کے ساتھ اختیاری)۔channels.matrix.accessToken: ایکسیس ٹوکن۔channels.matrix.password: لاگ اِن کے لیے پاس ورڈ (ٹوکن محفوظ کیا جاتا ہے)۔channels.matrix.deviceName: ڈیوائس ڈسپلے نام۔channels.matrix.encryption: E2EE فعال کریں (ڈیفالٹ: false)۔channels.matrix.initialSyncLimit: ابتدائی sync حد۔channels.matrix.threadReplies:off | inbound | always(ڈیفالٹ: inbound)۔channels.matrix.textChunkLimit: آؤٹ باؤنڈ متن چنک سائز (حروف)۔channels.matrix.chunkMode:length(ڈیفالٹ) یاnewlineتاکہ لمبائی کے مطابق چنکنگ سے پہلے خالی سطروں (پیراگراف حدود) پر تقسیم کیا جائے۔channels.matrix.dm.policy:pairing | allowlist | open | disabled(ڈیفالٹ: pairing)۔channels.matrix.dm.allowFrom: DM الاؤ لسٹ (مکمل Matrix یوزر IDs)۔openکے لیے"*"درکار ہے۔ جہاں ممکن ہو، وزرڈ ناموں کو IDs میں تبدیل کرتا ہے۔channels.matrix.groupPolicy:allowlist | open | disabled(ڈیفالٹ: allowlist)۔channels.matrix.groupAllowFrom: گروپ پیغامات کے لیے allowlisted ارسال کنندگان (مکمل Matrix صارف IDs)۔channels.matrix.allowlistOnly: DMs + کمروں کے لیے allowlist قواعد نافذ کریں۔channels.matrix.groups: گروپ allowlist + فی کمرہ سیٹنگز میپ۔channels.matrix.rooms: پرانا گروپ allowlist/کنفیگ۔channels.matrix.replyToMode: تھریڈز/ٹیگز کے لیے reply-to موڈ۔channels.matrix.mediaMaxMb: inbound/outbound میڈیا حد (MB)۔channels.matrix.autoJoin: دعوت ہینڈلنگ (always | allowlist | off, ڈیفالٹ: always)۔channels.matrix.autoJoinAllowlist: خودکار جوائن کے لیے مجاز کمرہ IDs/aliases۔channels.matrix.actions: فی ایکشن ٹول gating (reactions/messages/pins/memberInfo/channelInfo)۔