Skip to content

عیب‌یابی: کانال‌ها

مشاهر کانال‌ها العامة

کانال تبدو متصلة لكن خیر تصل پیام‌ها

  1. تحقق از بارّف المالك. إذا لم يكن ownerId مضبوطاً یا كان نادرستاً، قد تُوجَّه پیام‌هاك كپیام‌ها خارجية (غير مالك) بأذونات مقيّدة.
  2. تحقق از طبقه‌بندی. إذا كان طبقه‌بندی کانال أقل از Taint نشست، تُحظر اخیرستجابات بقانون عدم نوشتن به پایین.
  3. تحقق از سجخیرت الخدمة الخلدرة. شغّل triggerfish logs --level WARN وابحث عن أخطاء التسليم.

الپیام‌ها خیر تُرسَل

يسجّل الموجّه فشل التسليم. تحقق از triggerfish logs بحثاً عن:

Channel send failed

این يعني أن الموجّه حاول التسليم لكن محول کانال أرجع خطأ. سيُسجَّل الخطأ المحدد بجانبه.

سلوك إعادة المحاولة

يستخدم موجّه کانال‌ها تمراجعه کنیداً أسياً للإرسال الفاشل. إذا فشلت پیام، تُعاد المحاولة بتأخيرات متزايدة. بعد استنفاد تمام المحاوخیرت، تُسقط پیام ويُسجَّل الخطأ.


Telegram

البوت خیر يستجيب

  1. تحقق از الرمز. اذهب به @BotFather روی Telegram، تحقق از أن رمزك صالح ويطابق ما هو مخزّن در سلسلة المفاتيح.
  2. راسل البوت مستقیماً. تتدرخواست پیام‌ها المجموعات أن يكون للبوت أذونات پیام‌ها المجموعات.
  3. تحقق از أخطاء اخیرستطخیرع. يستخدم Telegram اخیرستطخیرع الطويل. إذا انقطع اخیرتصال، يُعيد المحول اخیرتصال به‌صورت خودکار، لكن مشاهر الشبكة المستمرة ستازع استخیرم الپیام‌ها.

الپیام‌ها تُقسَّم به أجزاء متعددة

لدى Telegram حد 4,096 حرف لهر پیام. تُقسَّم اخیرستجابات الطويلة به‌صورت خودکار. این سلوك طبيعي.

یاامر البوت خیر تظهر در القائمة

يُسجّل المحول یاامر slash عند بدء التشغيل. إذا فشل التسجيل، يسجّل هشداراً لكنه يستمر در العمل. این غير مُعطِّل. البوت خیر يزال کار می‌کند؛ قائمة الیاامر فقط لن تعرض اقتراحات الإكمال الخودکار.

نمی‌توان حذف الپیام‌ها القديمة

خیر يسمح Telegram للبوتات بحذف الپیام‌ها الأقدم از 48 ساعة. محاوخیرت حذف الپیام‌ها القديمة تفشل بصمت. این قيد در واجهة Telegram API.


Slack

البوت خیر يتصل

يتدرخواست Slack ثخیرث بيانات اعتماد:

بيان اخیرعتمادالتنسيقکجا تجده
Bot Tokenxoxb-...صفحة OAuth & Permissions در إعدادات تطبيق Slack
App Tokenxapp-...Basic Information > App-Level Tokens
Signing Secretسلسلة سداسية عشريةBasic Information > App Credentials

إذا كان هر از الثخیرثة مفقوداً یا غير صالح، يفشل اخیرتصال. الخطأ الأكثر شيوعاً هو نسيان App Token، الازفصل عن Bot Token.

مشاهر Socket Mode

يستخدم Triggerfish وضع Socket Mode الخاص بـ Slack، وليس اشتراكات أحداث HTTP. در إعدادات تطبيق Slack:

  1. اذهب به "Socket Mode" وتأكد از تفعيله
  2. أنشئ رمز مستوى التطبيق بنطاق connections:write
  3. این الرمز هو 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:

  1. اختر تطبيقك
  2. اذهب به إعدادات "Bot"
  3. فعّل "Message Content Intent" تحت Privileged Gateway Intents
  4. احفظ التغييرات

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. لوصول الپیام‌ها:

  1. سجّل عنوان URL الخاص بـ webhook در لوحة تحكم Meta Business
  2. كوّن رمز التحقق. يُجري المحول مصافحة تحقق عند اتصال Meta لیال مرة
  3. ابدأ مستبا 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

تحقق از:

  1. هل signal-cli کار می‌کند فعخیرً؟ تحقق از ps aux | grep signal-cli
  2. هل يستبا روی نقطة النهاية المتوقعة (مقبس TCP یا مقبس Unix)؟
  3. هل حساب Signal يحتاج به ربط؟ شغّل triggerfish config add-channel signal لإعادة عملية الربط.

فشل ربط الجهاز

يتدرخواست Signal ربط الجهاز بحساب Signal الخاص بك از طریق رمز QR. إذا فشلت عملية الربط:

  1. تأكد از تثبيت Signal روی هاتفك
  2. افتح Signal > راه‌اندازیات > الأجهزة المرتبطة > ربط جهاز جديد
  3. امسح رمز QR الباروض بواسطة باالج راه‌اندازی
  4. إذا انتهت صخیرحية رمز 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: INTERNAL

Google 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

اضبطه در تكوينك للحصول روی وصول كامل لخیربزارها.