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

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