API التعليقات للنقاشات المباشرة

1,400,000,000+ استدعاءات API التي خدمناها خلال آخر 12 شهرًا

التعليقات والإشراف والموجزات الاجتماعية عبر REST API واحد وحزم SDK لأكثر من 10 لغات. اجلب التعليقات وانشرها وأشرف عليها من الخادم الخلفي، ثم بُثّ النشاط الجديد إلى كل قارئ فورًا عبر WebSockets.

منصة واحدة، ثلاث واجهات API

FastComments أكثر من مجرد تعليقات. ابنِ النقاشات والإشراف والموجزات الاجتماعية على مجموعة API وSDK نفسها.

API التعليقات

التعليقات المتسلسلة والدردشة المباشرة. الجلب والنشر والتصويت والتثبيت والرد والبحث، مع SSO والتحديثات الفورية مدمجة.

API الإشراف

واجهة إشراف مخصصة تضم أكثر من 40 نقطة نهاية. الاعتماد والإبلاغ والحجب والحظر والقفل والتدقيق، مدعومة بتصفية تلقائية للرسائل المزعجة.

API الموجز الاجتماعي

ابنِ موجزات الأنشطة والموجزات الاجتماعية بالمنشورات والوسائط والتفاعلات والمتابعات، ثم ادفع المنشورات الجديدة إلى كل عميل مباشرة.

استدعِ API من أي بيئة تقنية

cURL وحزم SDK محددة الأنواع (typed) لـ Node وPython وPHP وRuby وGo وJava وRust وSwift وC++. أكثر من 200 نقطة نهاية تغطي التعليقات والتصويتات والصفحات ومستخدمي SSO ومنشورات الموجز والإشراف والإشعارات، كلها عبر مفتاح API واحد.

التثبيتnpm install fastcomments-sdk
import { createFastCommentsSDK } from 'fastcomments-sdk/server';

const sdk = createFastCommentsSDK({
  apiKey: 'your-api-key' // server-side only
});

// Fetch comments for a page
const { comments } = await sdk.publicApi.getCommentsPublic({
  tenantId: 'your-tenant-id',
  urlId: 'page-url-id'
});

// Post a comment
await sdk.publicApi.createCommentPublic({
  tenantId: 'your-tenant-id',
  broadcastId: crypto.randomUUID(),
  createComment: {
    urlId: 'page-url-id',
    url: 'https://example.com/post',
    comment: 'Hello from the API!',
    commenterName: 'Alice'
  }
});
# Fetch comments for a page
curl -s 'https://fastcomments.com/api/v1/comments?tenantId=your-tenant-id&urlId=page-url-id' \
  -H 'x-api-key: YOUR_API_KEY'
التثبيتpip install fastcomments
import client
from client.api.public_api import GetCommentsPublicOptions

with client.ApiClient() as api_client:
    api = client.PublicApi(api_client)
    response = api.get_comments_public(
        "your-tenant-id",
        "page-url-id",
        GetCommentsPublicOptions(page=0, limit=30),
    )
    for comment in response.comments:
        print(comment.commenter_name, comment.comment)
التثبيتcomposer require fastcomments/fastcomments-php
<?php
require_once(__DIR__ . '/vendor/autoload.php');

$api = new FastComments\Client\Api\PublicApi(new GuzzleHttp\Client());

$result = $api->getCommentsPublic('your-tenant-id', 'page-url-id', [
    'page'  => 0,
    'limit' => 30,
]);

foreach ($result->getComments() as $comment) {
    echo $comment->getCommenterName() . ': ' . $comment->getComment() . PHP_EOL;
}
التثبيتgem install fastcomments
require 'fastcomments-client'

api = FastCommentsClient::PublicApi.new
result = api.get_comments_public('your-tenant-id', 'page-url-id', { page: 0, limit: 30 })

result.comments.each do |comment|
  puts "#{comment.commenter_name}: #{comment.comment}"
end
التثبيتgo get github.com/fastcomments/fastcomments-go
package main

import (
	"context"
	"fmt"
	openapiclient "github.com/fastcomments/fastcomments-go/client"
)

func main() {
	client := openapiclient.NewAPIClient(openapiclient.NewConfiguration())

	resp, _, err := client.PublicAPI.
		GetCommentsPublic(context.Background(), "your-tenant-id").
		UrlId("page-url-id").Page(0).Limit(30).Execute()
	if err != nil {
		panic(err)
	}
	for _, c := range resp.Comments {
		fmt.Printf("%s: %s\n", c.GetCommenterName(), c.GetComment())
	}
}
import com.fastcomments.api.PublicApi;

PublicApi api = new PublicApi();
var result = api.getCommentsPublic("your-tenant-id", "page-url-id")
                .page(0)
                .limit(30)
                .execute();
System.out.println(result.getComments());
use fastcomments_sdk::client::apis::configuration::Configuration;
use fastcomments_sdk::client::apis::public_api::{get_comments_public, GetCommentsPublicParams};

let config = Configuration::new();
let params = GetCommentsPublicParams {
    tenant_id: "your-tenant-id".to_string(),
    url_id: "page-url-id".to_string(),
    page: Some(0),
    limit: Some(30),
    ..Default::default()
};
let result = get_comments_public(&config, params).await.unwrap();
for comment in result.comments {
    println!("{:?}: {:?}", comment.commenter_name, comment.comment);
}
import FastCommentsSwift

var options = PublicAPI.GetCommentsPublicOptions()
options.page = 0
options.limit = 30

let result = try await PublicAPI.getCommentsPublic(
    tenantId: "your-tenant-id",
    urlId: "page-url-id",
    options: options
)
print(result.comments ?? [])
#include "FastCommentsClient/api/PublicApi.h"
#include "FastCommentsClient/ApiClient.h"
#include "FastCommentsClient/ApiConfiguration.h"

using namespace org::openapitools::client::api;

auto config = std::make_shared<ApiConfiguration>();
config->setBaseUrl(utility::conversions::to_string_t("https://fastcomments.com"));

PublicApi publicApi(std::make_shared<ApiClient>(config));

auto resp = publicApi.getCommentsPublic(
    utility::conversions::to_string_t("your-tenant-id"),
    utility::conversions::to_string_t("page-url-id")
).get();

اشترك في الموجز المباشر

افتح اتصالًا واحدًا واستقبل كل تعليق جديد وتعديل وتصويت وتحديث لحالة التواجد لحظة حدوثه. لا تفوتك أي أحداث: عند إعادة الاتصال يُعاد جلب سجل الأحداث لاستعادة كل ما أُرسل أثناء انقطاع العميل. تتوفر مشتركات WebSocket أصلية لـ Node وReact Native وJava وSwift وC++. أما بقية اللغات فتبقى محدّثة فوريًا عبر الاستعلام الدوري لسجل الأحداث.

التثبيتnpm install fastcomments-sdk
import { subscribeToChanges, LiveEventType } from 'fastcomments-sdk/browser';

const config = { tenantId: 'your-tenant-id', urlId: 'page-url-id' };

const subscription = subscribeToChanges(
  config,
  'your-tenant-id',   // tenantIdWS
  'page-url-id',      // urlIdWS
  'user-session-id',  // userIdWS (from the getComments response)
  (event) => {
    if (event.type === LiveEventType.new_comment) {
      console.log('New comment:', event.comment?.comment);
    }
    return true;      // event handled
  },
  (isConnected) => console.log(isConnected ? 'connected' : 'disconnected')
);

// later: subscription.close();
التثبيتnpm install fastcomments-react-native-sdk
import React, { useState } from 'react';
import { FastCommentsLiveCommenting } from 'fastcomments-react-native-sdk';
import { FastCommentsCommentWidgetConfig } from 'fastcomments-typescript';

export default function Comments() {
  // <FastCommentsLiveCommenting> subscribes to the live feed automatically.
  const [config] = useState<FastCommentsCommentWidgetConfig>({
    tenantId: 'your-tenant-id',
    urlId: 'page-url-id',
    showLiveRightAway: true,
    countAll: true,
  });

  return <FastCommentsLiveCommenting config={config} />;
}
import com.fastcomments.pubsub.LiveEventSubscriber;
import com.fastcomments.pubsub.SubscribeToChangesResult;
import com.fastcomments.core.CommentWidgetConfig;
import com.fastcomments.model.LiveEventType;

CommentWidgetConfig config = new CommentWidgetConfig();
config.tenant = "your-tenant-id";
config.urlId = "page-url-id";

LiveEventSubscriber subscriber = new LiveEventSubscriber();
SubscribeToChangesResult result = subscriber.subscribeToChanges(
    config,
    "your-tenant-id",   // tenantIdWS
    "page-url-id",      // urlId
    "page-url-id",      // urlIdWS
    "my-presence-id",   // userIdWS
    null,               // canSeeCommentsCallback (optional)
    (event) -> {
        if (event.getType() == LiveEventType.NEW_COMMENT) {
            System.out.println("New comment: " + event.getComment().getId());
        }
    }
);
// later: result.close();
import FastCommentsSwift

let config = LiveEventConfig(
    tenantId: "your-tenant-id",
    urlId: "page-url-id",
    urlIdWS: "page-url-id",   // URL-safe id for the WS server
    userIdWS: "my-presence-id"
)

let subscriber = LiveEventSubscriber()
let result = subscriber.subscribeToChanges(config: config) { event in
    if event.type == .newComment, let comment = event.comment {
        print("New comment: \(comment.id ?? "")")
    }
}
// later: result?.close()
#include <fastcomments/live/live_stream.hpp>
#include <iostream>

using namespace fastcomments::live;

LiveStreamConfig cfg;
cfg.wsBaseUrl = "wss://fastcomments.com";   // no trailing slash

LiveStream stream(cfg);
stream.onEvent([](const LiveEvent& ev) {
    if (ev.type == EventType::NewComment) {
        std::cout << "New comment at " << ev.timestamp << std::endl;
    }
});

stream.subscribe("your-tenant-id", "page-url-id", "my-presence-id").wait();
// later: stream.close().wait();
التثبيتpip install fastcomments
import time
import client

with client.ApiClient() as api_client:
    api = client.PublicApi(api_client)
    start_time = int(time.time() * 1000)  # ms epoch
    while True:
        result = api.get_event_log(
            "your-tenant-id", "page-url-id", "my-user-id", start_time
        )
        for event in result.events:
            print("event:", event.data)
            start_time = int(event.created_at.timestamp() * 1000) + 1
        time.sleep(2)
# startTime = epoch millis to replay from; advance it past the last event you saw
curl -s 'https://fastcomments.com/api/v1/event-log/your-tenant-id?urlId=page-url-id&userIdWS=my-user-id&startTime=1720560000000' \
  -H 'x-api-key: YOUR_API_KEY'

حزم SDK أصلية للجوال، جاهزة للتركيب مباشرة

وفّر على نفسك بناء واجهة التعليقات وصيانتها. توفر حزم SDK المخصصة والمُحدَّثة باستمرار لـ React Native وAndroid وiOS مكونات واجهة أصلية للتعليقات المتسلسلة والدردشة المباشرة والموجزات. أضف عرضًا (view)، ومرّر الإعدادات، وانتهى الأمر.

React Native

npm: fastcomments-react-native-sdk

مكونات أصلية، بدون webview. أضف FastCommentsLiveCommenting أو FastCommentsLiveChat أو FastCommentsFeed ومرّر الإعدادات.

شاهد العرض التوضيحي المباشر

Android

com.fastcomments:sdk

مكونات واجهة أصلية لنظام Android. أضف FastCommentsView إلى التخطيط (layout) لعرض التعليقات المتسلسلة والتصويت والإشعارات والموجزات. يتطلب Android 8.0 أو أحدث.

عرض على GitHub

iOS

حزمة Swift: FastCommentsUI

مكتبة SwiftUI أصلية للتعليقات المتسلسلة والموجزات الاجتماعية والدردشة المباشرة. تتطلب iOS 16 أو أحدث وmacOS 14 أو أحدث.

عرض على GitHub

الأجزاء التي كنت ستبنيها بنفسك

أكثر من 200 نقطة نهاية REST

مفتاح API واحد، وعنوان URL أساسي واحد. كل ما تفعله لوحة التحكم، يستطيع كودك فعله أيضًا.

حزم SDK لأكثر من 10 لغات

عملاء محددو الأنواع لـ Node وPython وPHP وRuby وGo وJava وRust وSwift وC++ وغيرها، لتبني بأدواتك أنت بدلًا من أدواتنا.

تحديثات فورية عبر WebSockets

تصل التعليقات الجديدة إلى كل قارئ لحظة نشرها، دون تحديث للصفحة ودون استعلام دوري. وإذا أعاد القارئ الاتصال، تُعاد الأحداث الفائتة من السجل.

الإشراف وSSO والحماية من الرسائل المزعجة

تسجيل الدخول الموحد والإشراف على التعليقات وتصفية الرسائل المزعجة مدمجة، فتُحل الأجزاء الصعبة قبل أن تكتب سطرًا واحدًا.

مستضاف ويتوسع من أجلك

نشغّل التخزين والبنية التحتية الفورية عبر شبكة عالمية. ما عليك سوى استدعاء API والإطلاق.

ما يمكنك بناؤه

مجموعة واحدة من API وSDK تشغّل سلاسل التعليقات والدردشة والنشاط المباشر عبر تطبيقات الويب والجوال والخادم.

غرف الدردشة المباشرة

بُثّ الرسائل إلى كل من في الغرفة فورًا، مع أعداد الحاضرين ونشاط الكتابة.

سلاسل التعليقات

أضف أقسام تعليقات متداخلة وقابلة للتصويت إلى المقالات والمنتجات والمنشورات ببضعة استدعاءات API.

موجزات الأنشطة

انشر في موجز، وادفع العناصر والتفاعلات الجديدة إلى العملاء المتصلين فور وصولها.

أسئلة وأجوبة واستطلاعات رأي

اجمع الأسئلة والأجوبة والتصويتات ونتائج الاستطلاعات، ثم رتّبها واعرضها مباشرة.

انطلق مباشرة في ثلاث خطوات

1

احصل على مفتاح API الخاص بك

ابدأ فترة تجريبية مجانية واحصل على معرّف الحساب (tenant ID) ومفتاح API من لوحة التحكم.

2

ثبّت SDK

أضف SDK الخاص بلغتك، أو استدعِ REST API مباشرة باستخدام cURL وترويسة x-api-key.

3

اجلب، وانشر، وانطلق مباشرة

حمّل التعليقات، وانشر من الخادم الخلفي، واشترك في التغييرات لبث التحديثات إلى كل قارئ.

موزعة عالميًا وعالية التوافر

يعمل FastComments عبر مناطق متعددة على بنيتنا التحتية الخاصة. تُنسخ عمليات الكتابة بين المناطق، وتنتقل العقد تلقائيًا إلى البديل عند الأعطال، ويُخدَم القراء من أقرب موقع إليهم.

متعدد الخوادم الرئيسية، متعدد المناطق

تُقبل عمليات الكتابة في أكثر من منطقة وتُنسخ بينها، فلا توجد نقطة فشل واحدة.

شبكتنا الطرفية الخاصة

تُقدَّم التعليقات والوسائط من شبكة CDN وخوادم DNS العالمية الخاصة بنا، من أقرب موقع إلى مستخدميك. لا نستخدم أي CDN تابعة لجهات خارجية.

التحويل التلقائي عند الأعطال

تتولى العقد الاحتياطية العمل تلقائيًا عند تعطل غيرها، فتستمر حركة المرور أثناء الانقطاعات. مدعوم بنسبة وقت تشغيل تبلغ 99.99%.

إقامة البيانات إقليميًا

شغّل خدمتك في الولايات المتحدة أو الاتحاد الأوروبي. تحتفظ منطقة الاتحاد الأوروبي على eu.fastcomments.com بالبيانات داخل المنطقة لأغراض الامتثال.

انضم إلى عملائنا السعداء

يثق بنا آلاف العملاء الراضين لما نقدمه من خدمة استثنائية وموثوقية عالية وحلول مبتكرة. انضم إلى مجتمعنا المتنامي واكتشف الفرق اليوم!

ابدأ الآن

الأسئلة الشائعة حول API التعليقات

هل يجب عليّ استخدام أداة FastComments؟

لا، الأداة اختيارية. يمكنك بناء تجربة التعليقات بالكامل على REST API وحزم SDK وعرض كل شيء بنفسك.

ما اللغات التي تتوفر لها حزمة SDK؟

Node وPython وPHP وRuby وGo وJava وRust وSwift وC++ وNim، إضافة إلى SDK لـ React Native للجوال. ويمكن لأي لغة أيضًا استدعاء REST API مباشرة.

كيف تعمل التحديثات الفورية؟

يفتح العملاء اتصال WebSocket ويتلقون التعليقات والتعديلات والتصويتات وتحديثات حالة التواجد الجديدة كأحداث، فلا حاجة إلى تحديث الصفحة أو الاستعلام الدوري. لا تضيع أي أحداث: إذا انقطع اتصال العميل، فإنه يعيد جلب سجل الأحداث عند إعادة الاتصال لاستعادة كل ما أُرسل أثناء انقطاعه.

هل أحتاج إلى تشغيل خادم WebSocket خاص بي؟

لا. يستضيف FastComments البنية التحتية الفورية. يشترك عميلك باستخدام SDK، ونتولى نحن توصيل الأحداث.

كيف تبقى اللغات التي لا تملك مشتركًا أصليًا محدّثة فوريًا؟

تستعلم دوريًا من نقطة نهاية سجل الأحداث، التي تعيد كل تغيير منذ طابع زمني محدد. أما حزم SDK الخاصة بـ Node وReact Native وJava وSwift وC++ فتتضمن مشترك WebSocket أصليًا بدلًا من ذلك.

كيف يعمل تقسيم الصفحات؟

بالنسبة للتعليقات تحديدًا، يقوم FastComments بحساب تقسيم الصفحات مسبقًا عند كل عملية كتابة لتحقيق أفضل أوقات تحميل، لذا حتى السلاسل الكبيرة جدًا تُقسَّم إلى صفحات بسرعة.

هل هناك فترة تجريبية مجانية؟

نعم. ابدأ فترة تجريبية مجانية مع وصول كامل إلى API وحزم SDK، دون الحاجة إلى بطاقة ائتمان. بعد الفترة التجريبية، تتدرج الباقات المدفوعة مع حجم حركة المرور لديك.

أين وثائق API؟

يوجد المرجع الكامل لـ REST API وSDK على docs.fastcomments.com، حيث وُثّقت كل نقطة نهاية ومعامل واستجابة.

هل يمكنني الاحتفاظ بالبيانات في الاتحاد الأوروبي؟

نعم. يوفر FastComments منطقة للاتحاد الأوروبي على eu.fastcomments.com، وتدعم حزم SDK التوجيه إليها.

ابدأ البناء في دقائق

ابدأ تجربة مجانية، واحصل على مفتاح API الخاص بك، وأضف مناقشات مباشرة إلى تطبيقك اليوم.