سطر الأوامر CLI
تحقّق من المفتاح واقرأ الطلبات وجهات الاتصال والاستهلاك وشخّص الإعداد من الطرفية.
عمليات بصلاحيات محددة · الأمر inboxy · الإصدار 0.2.0 على npm
npm i -g @inboxychat/cli@0.2.0لمن هذا
الوكالات التي تدير عدة شركات، ومهندسو الدعم، والمطورون الذين يكتبون السكربتات.
ماذا يستطيع
- نسخة المصدر هذه تضيف 80 عملية موثقة عبر SDK وCLI وMCP. تحقق بشكل منفصل من إصدار npm المثبت وتفعيل الخدمة المستضافة.
- حفظ المفتاح في سلسلة مفاتيح النظام (macOS Keychain أو Linux Secret Service)، مع ملف تعريف لكل شركة.
- قراءة الشركة والمفتاح واستهلاك الباقة والطلبات وجهات الاتصال، مع التصفية والتنقل بالمؤشرات.
inboxy doctorيفحص الرابط والمفتاح والصلاحيات والانتهاء وفرق الساعة وأذونات الإعداد دفعة واحدة.--jsonيطبع مستند JSON ثابتاً واحداً للسكربتات، مع رموز خروج موثقة.
التثبيت
العمليات الموثقة وحدود التغطية الفعلية
نسخة المصدر هذه تضيف 80 عملية موثقة عبر SDK وCLI وMCP. تحقق بشكل منفصل من إصدار npm المثبت وتفعيل الخدمة المستضافة.
التغطية: جهات الاتصال والمهام والتذاكر؛ إسناد وحالة وتصنيفات وملاحظات المحادثات وإرسال نص بإجراء مستقل؛ مسودات وإعداد ومعرفة نصية وقنوات واختبارات وتفعيل موظفي الذكاء الاصطناعي؛ الطلبات اليدوية وحالتها ودفعها وتنفيذها؛ المنتجات والتصنيفات؛ وحالة جهات الاتصال ومراحلها وإسنادها وتاجاتها وحقولها؛ وقراءة الأتمتة ومسوداتها ومحاكاتها وإيقافها وتفعيل نسختها المعتمدة؛ ومعاينة الحملات ومسوداتها وإيقافها وإلغائها وإرسالها واستئنافها وجدولتها بموافقة دقيقة. دليل 553 مسارًا هو بيانات اكتشاف وليس تغطية تنفيذية كاملة للوحة التحكم.
SDK: استخدم describeOperations() ثم prepareOperation(id, input, idempotencyKey) وexecuteOperation(id, input, { idempotencyKey, confirmation }). CLI: أوامر operations list/inspect/preview/run مع --input و--idempotency-key و--confirm. MCP: أدوات operations_list وoperation_inspect وoperation_preview وoperation_execute؛ الرسائل تستخدم message_send والتفعيل يستخدم lifecycle_activate؛ والحملات تستخدم campaign_send أو campaign_schedule. في CLI استخدم messages send بعد معاينة inbox.message.send.
اعرض المعاينة الدقيقة واحصل على موافقة المستخدم الصريحة قبل التعديل. بصمة التأكيد تربط الإدخال والمفتاح لكنها ليست إثباتًا للموافقة البشرية. احتفظ بنفس مفتاح منع التكرار عند استعادة الطلب. لا توجد إعادة محاولة تلقائية. تستمر قيود الشركة والدور والصلاحية والباقة. صلاحيات OAuth للكتابة تحتاج موافقة صريحة جديدة وتبدأ غير محددة؛ المنح القديمة لا تكتسب صلاحيات.
اختبارات ومعالجة معرفة الذكاء الاصطناعي قد تستهلك الرصيد. التفعيل وإسناد القنوات قد يؤثران على الردود الحية. الإرسال يحتاج موافقة على contactId وchannelId ونوع القناة والنص الكامل؛ والخادم يعيد التحقق من الوجهة. لا إرسال وسائط أو قوالب عبر المحادثات ولا حذف كيانات أو HTTP حر أو فوترة أو إدارة منصة. إرسال قوالب الحملات وجدولتها يتطلبان إجراء مستقل وموافقة على لقطة ثابتة للجمهور والمحتوى والمرسل والتوقيت. تعديل الطلبات والتاجات قد يشغّل الأتمتة؛ والحقول المخصصة تستبدل الخريطة كاملة؛ تحديث الدفع لا يخصم من مزود الدفع. استرداد وإلغاء الطلبات والتغطية الكاملة للحملات والأتمتة ما زالت مستثناة.
يحتاج Node.js >= 20.3.
npm i -g @inboxychat/cli
inboxy --versionnpx -y -p @inboxychat/cli inboxy --helpالمصادقة
- سجّل الدخول إلى Inboxy بحساب مدير الشركة وافتح المطورون ← API keys في لوحة التحكم (/developer-center/keys).
- اختر "أنشئ مفتاح API" وسمِّ المفتاح باسم تعرفه لاحقاً (مثل "Claude على جهازي").
- اختر الصلاحيات التي تحتاجها فقط. لا توجد صلاحيات افتراضية، ولا يمكن إنشاء مفتاح بلا صلاحيات. أدوات القراءة تحتاج صلاحيات ":read" (contacts:read وorders:read ...).
- اختر مدة الصلاحية: 30 أو 90 (الافتراضي) أو 180 أو 365 يوماً أو بلا انتهاء. الافتراضي 90 يوماً.
- انسخ المفتاح عند ظهوره، وهو يبدأ بـ"inboxy_". احفظه في مدير أسرار أو في سلسلة مفاتيح النظام، ولا تضعه أبداً في مستودع كود.
تسجيل الدخول
في الطرفية، يفتح inboxy auth login المتصفح لتوافق على مفتاح لهذه الشركة. المفتاح ليس وسيطاً في الأمر: يُرفض inboxy auth login <key> وأي خيار --key أو --token أو --api-key. وإذا لم يكن الإدخال طرفية، الصق المفتاح أو مرّره عبر الأنبوب.
inboxy auth login # browser approval on a terminal
pbpaste | inboxy auth login # or pipe a key (macOS, not a TTY)
inboxy auth login --profile client-a # one profile per company
inboxy auth status # where the key comes from + is it accepted
inboxy auth logout --profile client-aأين يُحفظ المفتاح
- في سلسلة مفاتيح النظام: macOS Keychain أو Linux Secret Service (secret-tool).
- بدون سلسلة مفاتيح (أو مع
--store file): في ملف الإعداد بأذونات 0600 داخل مجلد بأذونات 0700. ويُرفض ملف إعداد يستطيع مستخدمون آخرون قراءته. - ملف الإعداد:
$INBOXY_CONFIG_DIR، وإلا$XDG_CONFIG_HOME/inboxy، وإلا~/.config/inboxy/config.json.
البدء السريع
inboxy auth login
inboxy doctor
inboxy whoami
inboxy orders list --status pending --limit 5أدلة الاستخدام
البحث عن عميل وطلباته
inboxy contacts search "9665" --stage customer
inboxy orders list --contact CONTACT_IDتصدير الطلبات بصيغة JSON
الخيار --all يتبع المؤشرات حتى --max-pages (الافتراضي 10).
inboxy orders list --after 2026-10-20 --all --json > orders.jsonالوكالات: ملف تعريف لكل شركة
inboxy auth login --profile client-a
inboxy --profile client-a usage
INBOXY_PROFILE=client-b inboxy orders listالاستخدام في CI أو سكربت
اضبط INBOXY_API_KEY من مخزن الأسرار؛ فهو يتقدم على سلسلة المفاتيح. واعتمد على رمز الخروج.
INBOXY_API_KEY="$INBOXY_API_KEY" inboxy doctor --json > doctor.json || echo "doctor exit $?"المرجع
الأوامر
| الأمر | الصلاحية | الوظيفة |
|---|---|---|
inboxy auth login | — | تسجيل الدخول: موافقة من المتصفح في الطرفية، أو مفتاح من الإدخال القياسي إن لم تكن طرفية |
inboxy auth status | — | مصدر المفتاح وهل يقبله Inboxy |
inboxy auth logout | — | حذف المفتاح المحفوظ لملف تعريف |
inboxy whoami | — | الشركة واسم المفتاح والصلاحيات وتاريخ الانتهاء وحدود الطلبات |
inboxy usage | analytics:read | استهلاك الباقة مقابل حدودها |
inboxy stores list | analytics:read | عدد المتاجر المربوطة مقابل حد الباقة (لا يوجد مسار للمتاجر في الواجهة العامة بعد) |
inboxy orders list | orders:read | عرض الطلبات مع التصفية |
inboxy orders get | orders:read | طلب واحد |
inboxy contacts search | contacts:read | البحث في جهات الاتصال |
inboxy doctor | — | فحص الرابط والمفتاح والصلاحيات والانتهاء وفرق الساعة وأذونات ملف الإعداد |
inboxy operations list | — | عرض العمليات المتاحة |
inboxy operations inspect | — | فحص مخطط عملية |
inboxy operations preview | — | المعاينة محليًا قبل الموافقة الصريحة |
inboxy operations run | — | تنفيذ الطلب الموافق عليه |
inboxy messages send | messages:send | إرسال رسالة نصية واحدة للعميل بعد الموافقة الصريحة |
inboxy lifecycle activate | — | تفعيل عملية معتمدة باستخدام --input و--idempotency-key و--confirm |
inboxy campaigns send | campaigns:write | إرسال أو استئناف حملة بموافقة صريحة |
inboxy campaigns schedule | campaigns:write | جدولة لقطة حملة بموافقة صريحة |
inboxy auth login [--store keychain|file] [--no-verify] [--profile <name>]
inboxy auth status [--offline]
inboxy auth logout [--profile <name>]
inboxy whoami
inboxy usage
inboxy stores list
inboxy orders list [--status] [--payment-status] [--fulfillment-status] [--source] [--store <id>] [--contact <id>] [--search <text>] [--after <iso>] [--before <iso>]
inboxy orders get <id>
inboxy contacts search [text] [--status] [--stage] [--tags <ids>] [--created-after <iso>] [--created-before <iso>]
inboxy doctor
inboxy operations list
inboxy operations inspect <operation>
inboxy operations preview <operation> --input <json> --idempotency-key <key>
inboxy operations run <operation> --input <json> --idempotency-key <key> --confirm <preview-hash>
inboxy messages send --input <json> --idempotency-key <key> --confirm <preview-hash>
inboxy lifecycle activate <operation> --input <json> --idempotency-key <key> --confirm <hash>
inboxy campaigns send <operation> --input <json> --idempotency-key <key> --confirm <hash>
inboxy campaigns schedule --input <json> --idempotency-key <key> --confirm <hash>التنقل والخيارات العامة
--limitمن 1 إلى 100، أو--cursor <nextCursor>، أو--all(مع--max-pages، الافتراضي 10).--jsonو--profile <name>و--url <origin>و--timeout <ms>. ويمكن وضع الخيارات العامة قبل الأمر أو بعده.
مخرجات --json
مستند واحد على stdout بإصدار schemaVersion 1. قد تُضاف حقول، ولا تُعاد تسميتها أو تُحذف أبداً. وعناصر data هي كائنات الواجهة العامة v1 كما هي.
{ "schemaVersion": 1, "ok": true, "command": "orders list",
"data": [ ... ], "meta": { "limit": 20, "hasMore": true, "nextCursor": "...", "pages": 1 } }
{ "schemaVersion": 1, "ok": false, "command": "orders list",
"error": { "kind": "forbidden", "code": "INSUFFICIENT_PERMISSIONS", "status": 403,
"message": "...", "details": { "requiredScope": "orders:read" }, "retryAfterSeconds": null } }متغيرات البيئة
| المتغير | المعنى |
|---|---|
INBOXY_API_KEY | مفتاح API، ويتقدم على سلسلة المفاتيح وملف الإعداد. |
INBOXY_API_URL | أصل الواجهة (الافتراضي https://api.inboxy.chat). |
INBOXY_PROFILE | ملف التعريف المحفوظ المستخدم (ملف لكل شركة). |
INBOXY_CONFIG_DIR | مجلد الإعداد (وإلا $XDG_CONFIG_HOME/inboxy، وإلا ~/.config/inboxy). |
INBOXY_KEYCHAIN | القيمة "off" تعطّل سلسلة مفاتيح النظام. |
الحدود والأمان
- أمر operations run يستطيع تغيير البيانات بعد تأكيد المعاينة الدقيقة.
- لا يُطبع المفتاح أبداً. المخرجات والأخطاء تمر عبر إخفاء (أي قيمة inboxy_… أو Bearer والمفتاح المستخدم)، ويظهر في الحالة أول 8 أحرف فقط.
- بلا Shell: تصل المدخلات إلى الواجهة كقيم مُتحقق منها ومُرمّزة فقط؛ والمعرّفات من 1 إلى 64 حرفاً أو رقماً أو "_" أو "-".
- HTTPS فقط (وhttp لـlocalhost)؛ وتُرفض إعادة التوجيه. وتنطبق حدود طلبات واجهة REST.
حل المشكلات
ابدأ بـinboxy doctor. يخرج بالرمز 10 عند فشل أي فحص ويوضح ما يجب إصلاحه.
| الفحص | ما يفحصه |
|---|---|
config-file | ملف الإعداد موجود ولا يستطيع مستخدمون آخرون قراءته |
api-url | رابط الواجهة صالح ويستخدم https (http فقط لـlocalhost) |
api-key | تم العثور على مفتاح ومصدره |
key-format | المفتاح بصيغة مفاتيح Inboxy (inboxy_…) |
keychain | تنبيهات سلسلة مفاتيح النظام |
api-reachable | استجاب Inboxy وزمن الاستجابة |
key-valid | يقبل Inboxy المفتاح |
clock-skew | ساعة جهازك مقارنة بترويسة Date من الخادم |
scopes | الصلاحيات التي تحتاجها أوامر CLI وينقصها المفتاح |
key-expiry | الأيام المتبقية لانتهاء المفتاح |
rate-limits | حدود الطلبات لكل مفتاح ولكل شركة |
رموز الخروج
| الرمز | المعنى |
|---|---|
0 | نجاح |
1 | خطأ غير متوقع |
2 | خطأ في الاستخدام (خيار أو قيمة أو معرّف غير صالح)؛ لم يُرسل شيء |
3 | الإعداد: لا يوجد مفتاح، أو رابط غير صالح، أو أذونات ملف الإعداد، أو لا توجد سلسلة مفاتيح |
4 | المفتاح مرفوض (401) |
5 | ممنوع (403): صلاحية ناقصة، أو الشركة موقوفة، أو منشئ المفتاح لم يعد مديراً |
6 | غير موجود (404) |
7 | تجاوز حد الطلبات (429)؛ راجع retryAfterSeconds |
8 | خطأ شبكة أو انتهاء المهلة أو إلغاء |
9 | خطأ في الخادم، أو رد ليس بصيغة الواجهة |
10 | وجد doctor فحصاً واحداً فاشلاً على الأقل |
أخطاء شائعة
- "No API key" (الرمز 3): نفّذ
inboxy auth loginأو اضبطINBOXY_API_KEY. - "Inboxy refused the API key" (الرمز 4): المفتاح غير معروف أو ملغى أو منتهٍ. أنشئ مفتاحاً جديداً.
- "does not have the … scope" (الرمز 5): أنشئ مفتاحاً يتضمن الصلاحية المذكورة.
- لينكس بدون secret-tool: ثبّت أدوات libsecret أو استخدم
inboxy auth login --store file.
روابط
أنشئ مفتاح API
ينشئ مدير الشركة المفاتيح من صفحة المطورين في لوحة التحكم.
