الانتقال إلى المحتوى الرئيسي

منصات المراسلة

Nostr

الحالة: إضافة اختيارية (معطلة افتراضيًا). Nostr هو بروتوكول لامركزي للتواصل الاجتماعي. تمكن هذه القناة OpenClaw من استقبال والرد على الرسائل المباشرة المشفرة عبر NIP-04.

التثبيت (حسب الطلب)​

الإعداد المبدئي (مُوصى به)​

  • يعرض معالج الإعداد المبدئي (openclaw onboard) وأمر openclaw channels add إضافات القنوات الاختيارية.
  • اختيار Nostr يطلب منك تثبيت الإضافة حسب الطلب.

إعدادات التثبيت الافتراضية:

  • قناة التطوير + نسخة git متاحة: تستخدم المسار المحلي للإضافة.
  • الإصدار المستقر/بيتا: يقوم بالتحميل من npm.

يمكنك دائمًا تجاوز الاختيار في المطالبة.

التثبيت اليدوي​

openclaw plugins install @openclaw/nostr

استخدم نسخة محلية (سير عمل التطوير):

openclaw plugins install --link <path-to-openclaw>/extensions/nostr

أعد تشغيل البوابة بعد تثبيت أو تمكين الإضافات.

الإعداد السريع​

  1. إنشاء زوج مفاتيح Nostr (إذا لزم الأمر):
# باستخدام nak
nak key generate
  1. أضف إلى التكوين:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
  1. صدّر المفتاح:
export NOSTR_PRIVATE_KEY="nsec1..."
  1. أعد تشغيل البوابة.

مرجع التكوين​

المفتاحالنوعالافتراضيالوصف
privateKeyنصمطلوبالمفتاح الخاص بصيغة nsec أو hex
relaysمصفوفة نصية['wss://relay.damus.io', 'wss://nos.lol']عناوين URL للرابطات (WebSocket)
dmPolicyنصpairingسياسة الوصول للرسائل المباشرة
allowFromمصفوفة نصية[]مفاتيح المرسلين المسموح لهم
enabledمنطقيtrueتمكين/تعطيل القناة
nameنص-اسم العرض
profileكائن-بيانات وصفية للملف الشخصي NIP-01

بيانات وصفية للملف الشخصي​

يتم نشر بيانات الملف الشخصي كحدث NIP-01 kind:0. يمكنك إدارتها من واجهة التحكم (القنوات -> Nostr -> الملف الشخصي) أو تعيينها مباشرة في التكوين. مثال:

{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"profile": {
"name": "openclaw",
"displayName": "OpenClaw",
"about": "بوت مساعد شخصي للرسائل المباشرة",
"picture": "https://example.com/avatar.png",
"banner": "https://example.com/banner.png",
"website": "https://example.com",
"nip05": "openclaw@example.com",
"lud16": "openclaw@example.com"
}
}
}
}

ملاحظات:

  • يجب أن تستخدم روابط الملف الشخصي https://.
  • الاستيراد من الرابطات يدمج الحقول ويحافظ على التجاوزات المحلية.

التحكم في الوصول​

سياسات الرسائل المباشرة​

  • pairing (الافتراضي): يحصل المرسلون غير المعروفين على رمز إقران.
  • allowlist: فقط المفاتيح العامة الموجودة في allowFrom يمكنها إرسال رسائل مباشرة.
  • open: رسائل مباشرة واردة عامة (تتطلب allowFrom: ["*"]).
  • disabled: تجاهل الرسائل المباشرة الواردة.

مثال على قائمة السماح​

{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"dmPolicy": "allowlist",
"allowFrom": ["npub1abc...", "npub1xyz..."]
}
}
}

صيغ المفاتيح​

الصيغ المقبولة:

  • المفتاح الخاص: nsec... أو hex مكون من 64 حرفًا
  • المفاتيح العامة (allowFrom): npub... أو hex

الرابطات​

القيم الافتراضية: relay.damus.io و nos.lol.

{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"]
}
}
}

نصائح:

  • استخدم 2-3 رابطات للتكرار.
  • تجنب عدد كبير جدًا من الرابطات (التأخير، التكرار).
  • يمكن للرابطات المدفوعة تحسين الموثوقية.
  • الرابطات المحلية مناسبة للاختبار (ws://localhost:7777).

دعم البروتوكولات​

NIPالحالةالوصف
NIP-01مدعومتنسيق الحدث الأساسي + بيانات وصفية للملف الشخصي
NIP-04مدعومالرسائل المباشرة المشفرة (kind:4)
NIP-17مخطط لهالرسائل المباشرة المغلفة كهدية
NIP-44مخطط لهالتشفير المنسق

الاختبار​

رابطة محلية​

# ابدأ strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["ws://localhost:7777"]
}
}
}

اختبار يدوي​

  1. لاحظ المفتاح العام للبوت (npub) من السجلات.
  2. افتح عميل Nostr (Damus، Amethyst، إلخ).
  3. أرسل رسالة مباشرة إلى المفتاح العام للبوت.
  4. تحقق من الرد.

استكشاف الأخطاء وإصلاحها​

عدم استقبال الرسائل​

  • تحقق من صحة المفتاح الخاص.
  • تأكد من وصول عناوين URL للرابطات واستخدام wss:// (أو ws:// للمحلي).
  • تأكد من أن enabled ليست false.
  • افحص سجلات البوابة بحثًا عن أخطاء اتصال الرابطة.

عدم إرسال الردود​

  • تحقق من أن الرابطة تقبل الكتابة.
  • تحقق من اتصالية الصادر.
  • راقب حدود معدل نقل الرابطة.

ردود مكررة​

  • متوقع عند استخدام عدة رابطات.
  • يتم إزالة تكرار الرسائل بواسطة معرف الحدث؛ فقط أول تسليم يطلق ردًا.

الأمان​

  • لا تلتزم بالمفاتيح الخاصة أبدًا.
  • استخدم متغيرات البيئة للمفاتيح.
  • فكر في استخدام allowlist للبوتات الإنتاجية.

القيود (النسخة الدنيا القابلة للتطبيق)​

  • الرسائل المباشرة فقط (لا توجد محادثات جماعية).
  • لا توجد مرفقات وسائط.
  • NIP-04 فقط (التغليف كهدية NIP-17 مخطط له).

Nextcloud TalkSignal