عیبیابی: کانالها
مشاهر کانالها العامة
کانال تبدو متصلة لكن خیر تصل پیامها
- تحقق از بارّف المالك. إذا لم يكن
ownerIdمضبوطاً یا كان نادرستاً، قد تُوجَّه پیامهاك كپیامها خارجية (غير مالك) بأذونات مقيّدة. - تحقق از طبقهبندی. إذا كان طبقهبندی کانال أقل از Taint نشست، تُحظر اخیرستجابات بقانون عدم نوشتن به پایین.
- تحقق از سجخیرت الخدمة الخلدرة. شغّل
triggerfish logs --level WARNوابحث عن أخطاء التسليم.
الپیامها خیر تُرسَل
يسجّل الموجّه فشل التسليم. تحقق از triggerfish logs بحثاً عن:
Channel send failedاین يعني أن الموجّه حاول التسليم لكن محول کانال أرجع خطأ. سيُسجَّل الخطأ المحدد بجانبه.
سلوك إعادة المحاولة
يستخدم موجّه کانالها تمراجعه کنیداً أسياً للإرسال الفاشل. إذا فشلت پیام، تُعاد المحاولة بتأخيرات متزايدة. بعد استنفاد تمام المحاوخیرت، تُسقط پیام ويُسجَّل الخطأ.
Telegram
البوت خیر يستجيب
- تحقق از الرمز. اذهب به @BotFather روی Telegram، تحقق از أن رمزك صالح ويطابق ما هو مخزّن در سلسلة المفاتيح.
- راسل البوت مستقیماً. تتدرخواست پیامها المجموعات أن يكون للبوت أذونات پیامها المجموعات.
- تحقق از أخطاء اخیرستطخیرع. يستخدم Telegram اخیرستطخیرع الطويل. إذا انقطع اخیرتصال، يُعيد المحول اخیرتصال بهصورت خودکار، لكن مشاهر الشبكة المستمرة ستازع استخیرم الپیامها.
الپیامها تُقسَّم به أجزاء متعددة
لدى Telegram حد 4,096 حرف لهر پیام. تُقسَّم اخیرستجابات الطويلة بهصورت خودکار. این سلوك طبيعي.
یاامر البوت خیر تظهر در القائمة
يُسجّل المحول یاامر slash عند بدء التشغيل. إذا فشل التسجيل، يسجّل هشداراً لكنه يستمر در العمل. این غير مُعطِّل. البوت خیر يزال کار میکند؛ قائمة الیاامر فقط لن تعرض اقتراحات الإكمال الخودکار.
نمیتوان حذف الپیامها القديمة
خیر يسمح Telegram للبوتات بحذف الپیامها الأقدم از 48 ساعة. محاوخیرت حذف الپیامها القديمة تفشل بصمت. این قيد در واجهة Telegram API.
Slack
البوت خیر يتصل
يتدرخواست Slack ثخیرث بيانات اعتماد:
| بيان اخیرعتماد | التنسيق | کجا تجده |
|---|---|---|
| Bot Token | xoxb-... | صفحة OAuth & Permissions در إعدادات تطبيق Slack |
| App Token | xapp-... | Basic Information > App-Level Tokens |
| Signing Secret | سلسلة سداسية عشرية | Basic Information > App Credentials |
إذا كان هر از الثخیرثة مفقوداً یا غير صالح، يفشل اخیرتصال. الخطأ الأكثر شيوعاً هو نسيان App Token، الازفصل عن Bot Token.
مشاهر Socket Mode
يستخدم Triggerfish وضع Socket Mode الخاص بـ Slack، وليس اشتراكات أحداث HTTP. در إعدادات تطبيق Slack:
- اذهب به "Socket Mode" وتأكد از تفعيله
- أنشئ رمز مستوى التطبيق بنطاق
connections:write - این الرمز هو
appToken(xapp-...)
إذا لم يكن Socket Mode مُفعّخیرً، رمز البوت وحده غير كافٍ للپیامها در الوقت الفعلي.
الپیامها تُقتطَع
لدى Slack حد 40,000 حرف. روی عكس Telegram وDiscord، يقتطع Triggerfish پیامها Slack بدخیرً از تقسيمها. إذا وصلت خیرین الحد بانتظام، فكّر در درخواست إنتاج مخرجات أكثر إيجازاً از عاملك.
تسريب موارد SDK در اخیرختبارات
يُسرّب Slack SDK عمليات غير متزاازة عند اخیرستيراد. این مشهرة باروفة در المصدر الأصلي. اخیرختبارات التي تستخدم محول Slack تحتاج sanitizeResources: false وsanitizeOps: false. خیر يؤثر این روی استفاده الإنتاجي.
Discord
البوت خیر يستطيع قراءة الپیامها در الخوادم
يتدرخواست Discord intent مميز لـ Message Content. بدونه، يستقبل البوت أحداث الپیامها لكن محتوى پیام يكون فارغاً.
الحل: در Gateway مطوري Discord:
- اختر تطبيقك
- اذهب به إعدادات "Bot"
- فعّل "Message Content Intent" تحت Privileged Gateway Intents
- احفظ التغييرات
intents البوت اخیرلزامیة
يتدرخواست المحول تفعيل این الـ intents:
- Guilds
- Guild Messages
- Direct Messages
- Message Content (مميز)
الپیامها تُقسَّم
لدى Discord حد 2,000 حرف. تُقسَّم الپیامها الطويلة بهصورت خودکار به پیامها متعددة.
فشل مؤشر الكتابة
يرسل المحول مؤشرات كتابة قبل اخیرستجابات. إذا كان البوت يفتقر لإذن إرسال الپیامها در کانال، يفشل مؤشر الكتابة بصمت (يُسجَّل روی مستوى DEBUG). این تجميلي فقط.
تسريب موارد SDK
مثل Slack، يُسرّب discord.js SDK عمليات غير متزاازة عند اخیرستيراد. اخیرختبارات تحتاج sanitizeOps: false. خیر يؤثر این روی الإنتاج.
WhatsApp
خیر تُستقبَل پیامها
يستخدم WhatsApp مدل webhook. يستبا البوت لدرخواستات HTTP POST الواردة از خوادم Meta. لوصول الپیامها:
- سجّل عنوان URL الخاص بـ webhook در لوحة تحكم Meta Business
- كوّن رمز التحقق. يُجري المحول مصافحة تحقق عند اتصال Meta لیال مرة
- ابدأ مستبا webhook. يستبا المحول روی الازفذ 8443 بهصورت پیشفرض. تأكد از أن این الازفذ قابل للوصول از الإنترنت (استخدم عامخیرً عكسياً یا نفقاً)
هشدار "ownerPhone not configured"
إذا لم يُضبط ownerPhone در تكوين کانال WhatsApp، يُعامَل تمام المرسلين كمالك. این يعني أن هر مستخدم يحصل روی وصول كامل لتمام ابزارها. این مشهرة أازية.
الحل: اضبط رقم هاتف المالك در تكوينك:
yaml
channels:
whatsapp:
ownerPhone: "+1234567890"انتهاء صخیرحية رمز الوصول
يمكن أن تنتهي صخیرحية رموز وصول WhatsApp Cloud API. إذا بدأت عمليات الإرسال بالفشل بأخطاء 401، أعد إنشاء الرمز در لوحة تحكم Meta وحدّثه:
bash
triggerfish config set-secret whatsapp:accessToken <new-token>Signal
signal-cli غير موجود
تتدرخواست کانال Signal تطبيق signal-cli، وهو تطبيق Java از طرف ثالث. يحاول Triggerfish تثبيته بهصورت خودکار أثناء راهاندازی، لكن این قد يفشل إذا:
- Java (JRE 21+) غير متوفر وفشل نصب الخودکار لـ JRE 25
- التنزيل حُظر بقيود الشبكة
- المجلد المستهدف غير قابل للكتابة
نصب الدستی:
bash
# ثبّت signal-cli بهصورت دستی
# مراجعه کنید https://github.com/AsamK/signal-cli للتعليماتخدمة signal-cli غير قابلة للوصول
بعد بدء signal-cli، ينتظر Triggerfish حتى 60 ثانية ليصبح قابخیرً للوصول. إذا انتهت المهلة:
signal-cli daemon (tcp) not reachable within 60sتحقق از:
- هل signal-cli کار میکند فعخیرً؟ تحقق از
ps aux | grep signal-cli - هل يستبا روی نقطة النهاية المتوقعة (مقبس TCP یا مقبس Unix)؟
- هل حساب Signal يحتاج به ربط؟ شغّل
triggerfish config add-channel signalلإعادة عملية الربط.
فشل ربط الجهاز
يتدرخواست Signal ربط الجهاز بحساب Signal الخاص بك از طریق رمز QR. إذا فشلت عملية الربط:
- تأكد از تثبيت Signal روی هاتفك
- افتح Signal > راهاندازیات > الأجهزة المرتبطة > ربط جهاز جديد
- امسح رمز QR الباروض بواسطة باالج راهاندازی
- إذا انتهت صخیرحية رمز QR، أعد عملية الربط
عدم تطابق إصدار signal-cli
يُثبّت Triggerfish إصداراً باروفاً بالعمل الجيد از signal-cli. إذا ثبّتت إصداراً مختلفاً، قد ترى هشداراً:
Signal CLI version older than known-goodاین غير مُعطِّل لكنه قد يسبب مشاهر توافقية.
Email
فشل اتصال IMAP
يتصل محول ایمیل بخادم IMAP للبريد الوارد. المشاهر الشائعة:
- بيانات اعتماد نادرستة. تحقق از اسم المستخدم وهرمة المرور لـ IMAP.
- الازفذ 993 محظور. يستخدم المحول IMAP از طریق TLS (الازفذ 993). بعض الشبكات تحظر این.
- هرمة مرور خاصة بالتطبيق الزامیة. Gmail وارائهدهندگان آخرون يتدرخواستون هرمات مرور خاصة بالتطبيق عند تفعيل احراز هویت الثنائية.
پیامها الخطأ التي قد تراها:
IMAP LOGIN failed- اسم مستخدم یا هرمة مرور نادرستةIMAP connection not established- نمیتوان الوصول به الخادمIMAP connection closed unexpectedly- الخادم أسقط اخیرتصال
فشل إرسال SMTP
يرسل محول ایمیل از طریق واجهة SMTP API relay (وليس SMTP المباشر). إذا فشلت عمليات الإرسال بأخطاء HTTP:
- 401/403: مفتاح API غير صالح
- 429: تحديد بادل
- 5xx: خدمة الترحيل باطّلة
توقف استطخیرع IMAP
يستطلع المحول پیامها البريد الجديدة هر 30 ثانية. إذا فشل اخیرستطخیرع، يُسجَّل الخطأ لكن خیر يوجد إعادة اتصال خودکارة. أعد تشغيل الخدمة الخلدرة لإعادة إنشاء اتصال IMAP.
این قيد باروف. مراجعه کنید مشکخیرت شناختهشده.
WebChat
رُفضت ترقية WebSocket
يتحقق محول WebChat از اخیرتصاخیرت الواردة:
- الرؤوس كبيرة جداً (431). حجم الرأس المجمّع يتجاوز 8,192 بايت. يمكن أن يحدث این با ملفات تعريف اخیررتباط الكبيرة جداً یا الرؤوس المخصصة.
- رفض CORS. إذا كان
allowedOriginsمكوّناً، باید أن يتطابق رأس Origin. پیشفرض هو["*"](السماح للتمام). - إطارات مشوّهة. JSON غير صالح در إطارات WebSocket يُسجَّل روی مستوى WARN ويُسقط الإطار.
طبقهبندی
يُصنَّف WebChat بهصورت پیشفرض كـ PUBLIC. خیر يُعامَل الزوار هرگز كمالك. إذا احتجت طبقهبندیاً أروی لـ WebChat، اضبطه صراحة:
yaml
channels:
webchat:
classification: INTERNALGoogle Chat
فشل استطخیرع PubSub
يستخدم Google Chat خدمة Pub/Sub لتسليم الپیامها. إذا فشل اخیرستطخیرع:
Google Chat PubSub poll failedتحقق از:
- بيانات اعتماد Google Cloud صالحة (تحقق از
credentials_refدر پیکربندی) - اشتراك Pub/Sub موجود ولم يُحذف
- حساب الخدمة لديه دور
pubsub.subscriber
رُفضت پیامها المجموعة
إذا لم يُكوَّن وضع المجموعة، قد تُسقط پیامها المجموعة بصمت:
Google Chat group message denied by group modeكوّن defaultGroupMode در تكوين کانال Google Chat.
ownerEmail غير مكوَّن
بدون ownerEmail، يُعامَل تمام المستخدمين كغير مالك:
Google Chat ownerEmail not configured, defaulting to non-ownerاضبطه در تكوينك للحصول روی وصول كامل لخیربزارها.
