Skip to main content
مستندات
مرکز آموزش

مدیریت محتوا را با راهنماهای جامع، آموزش‌ها و مستندات API به‌خوبی یاد بگیرید

لینک‌های سریع

درخواست‌های ترکیبی با چند بررسی

برای هر بررسی به یک فراخوانی API جداگانه نیاز ندارید. یک POST /api/v2/check می‌تواند بررسی‌های متن، تصویر، واژه‌های نامناسب و آنتی‌ویروس را به‌صورت هم‌زمان روی محتوای ترکیبی اجرا کند و یک پاسخ واحد با نتیجه‌ای جداگانه برای هرکدام برگرداند. این کار کارآمدترین روش برای مدیریت و پالایش پستی است که هم‌زمان کپشن، تصویر و پیوست دارد.

چرا همه‌چیز را در یک فراخوانی بررسی کنیم؟

ارسال کاربر معمولاً یک بسته است: متن به‌همراه رسانه و لینک‌ها. فراخوانی جداگانه API برای هر بخش یعنی رفت‌وبرگشت بیشتر، تأخیر بیشتر و مصرف سهمیه بیشتر. یک درخواست ترکیبی، بررسی‌های فعال‌شده را به‌صورت موازی اجرا می‌کند و یک حکم واحد در اختیار شما می‌گذارد تا بر اساس آن عمل کنید.

چطور چند بررسی را هم‌زمان اجرا کنم؟

هر نوع محتوا را در content قرار دهید، بررسی‌های موردنظر را در settings فعال کنید و نتایج هر بررسی را جداگانه بخوانید. هر بررسی فعال‌شده روی محتوای متناظر خودش اجرا می‌شود.

curl -X POST https://api.discuse.com/api/v2/check \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "content": {
      "text": "Great deal, check my profile!",
      "image_urls": ["https://example.com/post-image.jpg"],
      "document_urls": ["https://example.com/attachment.pdf"]
    },
    "settings": {
      "check_spam": true,
      "check_sentiment": true,
      "check_images": true,
      "check_antivirus": true
    }
  }'

پاسخ

{
  "has_violations": true,
  "cached": false,
  "results": {
    "hits": true,
    "spamfinder": { "label": "spam", "confidence": 0.91, "is_spam": true, "hit": true },
    "sentiment": { "is_negative": false, "is_toxic": false, "score": 0.1, "hit": false },
    "images": { "status": "OK", "porn": 0.02, "sexual": 0.05, "neutral": 0.93, "hit": false },
    "antivirus": { "status": "OK", "hit": false, "details": [] }
  },
  "usage": {
    "api_requests_used": 530,
    "api_requests_limit": 10000,
    "api_requests_remaining": 9470
  }
}

نتیجه ترکیبی را چطور بخوانم؟

برای تصمیم کلی از has_violations استفاده کنید، سپس به هر results.<check>.hit نگاه کنید تا ببینید کدام بررسی فعال شده و چرا:

فیلد معنی
has_violations اگر هر بررسی فعال‌شده‌ای محتوا را علامت‌گذاری کرده باشد True است — حکم یک‌خطی شما
results.hits همان سیگنال کلی داخل شیء نتایج
results.spamfinder.hit اسپم فعال شده است؛ وابسته به آستانه است، پس بر اساس hit تصمیم بگیرید نه مقدار خام is_spam
results.sentiment.hit احساسات سمی/منفی بالاتر از آستانه‌های شماست
results.images.hit یک تصویر از آستانه NSFW شما عبور کرده است
results.antivirus.hit بدافزار در یک سند پیدا شده است
results.badwords.hit یکی از واژه‌های نامناسب پیکربندی‌شده مطابقت داشته است
results.skipped_features بررسی‌هایی که درخواست شده‌اند اما اجرا نشده‌اند؛ مثلاً قابلیتی که سهمیه‌اش تمام شده است

فقط بررسی‌هایی که فعال کرده‌اید و محتوای متناظر داشته‌اند در results ظاهر می‌شوند. بررسی‌ای که محتوایی برای اجرا روی آن ندارد — مثل check_images بدون image_urls — به‌سادگی اجرا نمی‌شود.

کدام محتوا با کدام بررسی جفت می‌شود؟

بررسی محتوایی که می‌خواند
check_sentiment, check_spam, check_badwords, check_language content.text
check_images content.image_urls
check_antivirus content.document_urls

یک درخواست واحد می‌تواند تا ۱۰ URL تصویر، ۵ URL سند و متنی تا ۱۰٬۰۰۰ نویسه را حمل کند. بخش‌های یک ارسال را با هم بفرستید، نه اینکه آن‌ها را بین چند فراخوانی تقسیم کنید.

درباره خطاهای جزئی چه باید کرد؟

اگر یکی از بررسی‌ها خطا بدهد (مثلاً URL تصویر در دسترس نباشد)، بقیه همچنان پاسخ می‌دهند — نتایجی را که موفق بوده‌اند دریافت می‌کنید و بررسی ناموفق به‌جای اینکه کل درخواست را شکست دهد، خطا یا نتیجه خالی خودش را گزارش می‌کند. برای هر بررسی جداگانه تصمیم بگیرید: بر اساس یک hit تأییدشده مسدود کنید، و مشخص کنید که بررسی خطاداده باید باز بماند یا برای بازبینی در صف قرار بگیرد.

بهترین روش‌ها

فقط آنچه را نیاز دارید فعال کنید

هر بررسی فعال‌شده کار بیشتری اضافه می‌کند. بررسی‌هایی را روشن کنید که با محتوایی که واقعاً دریافت می‌کنید مطابقت دارند — اجرای check_antivirus روی پیام‌های صرفاً متنی هیچ مزیتی ندارد.

اول یک حکم کلی، بعد بررسی جزئیات

برای مسیر سریع، ابتدا بر اساس has_violations شاخه‌بندی کنید، سپس فقط وقتی لازم است بدانید کدام بررسی فعال شده است، results را بررسی کنید (برای ثبت لاگ، اعتراض‌ها یا ارجاع به بازبین مناسب).

const res = await check(content, settings);
if (!res.has_violations) return allow();

const r = res.results;
if (r.antivirus?.hit) return quarantine();      // most severe first
if (r.images?.hit)    return blockMedia();
if (r.spamfinder?.hit || r.badwords?.hit) return shadowban();
return queueForReview(r);

مرتبط

نوشته تیم Discuse · آخرین به‌روزرسانی June 2026

مقاله‌های مرتبط

تحلیل متن و تشخیص احساسات

هرزنامه، محتوای سمی، الفاظ رکیک را تشخیص دهید و احساسات را در محتوای متنی تحلیل کنید

تشخیص NSFW در تصویر

تصاویر نامناسب و محتوای بزرگسالان را به‌طور خودکار تشخیص داده و فیلتر کنید

تشخیص هرزنامه

فیلتر کردن هرزنامه مبتنی بر AI برای متن و پیام‌ها