ה-API לתגובות עבור דיונים בזמן אמת

תגובות, ניהול ופיד חברתי דרך API אחד מסוג REST ו-SDK ליותר מ-10 שפות. שלפו, פרסמו ונהלו מהשרת שלכם, ואז הזרימו כל פעילות חדשה לכל קורא בזמן אמת דרך WebSockets.

פלטפורמה אחת, שלושה API

FastComments היא הרבה יותר מתגובות. בנו דיונים, ניהול ופיד חברתי על אותה חבילת API ו-SDK.

API תגובות

תגובות מקוננות וצ'אט חי. שליפה, פרסום, הצבעה, נעיצה, תגובה וחיפוש, עם SSO ועדכונים בזמן אמת מובנים.

API ניהול

משטח ניהול ייעודי עם יותר מ-40 endpoints. אישור, סימון, חסימה, הרחקה, נעילה ותיעוד, מגובים בסינון ספאם אוטומטי.

API פיד חברתי

בנו פידי פעילות ופידים חברתיים עם פוסטים, מדיה, ריאקציות ומעקבים, ואז דחפו פוסטים חדשים לכל לקוח בזמן אמת.

קראו ל-API מכל סביבה

cURL ו-SDK עם טיפוסים ל-Node, Python, PHP, Ruby, Go, Java, Rust, Swift ו-C++. יותר מ-200 endpoints מכסים תגובות, הצבעות, עמודים, משתמשי SSO, פוסטים בפיד, ניהול והתראות, הכול מאחורי מפתח API יחיד.

התקנהnpm install fastcomments-sdk
import { createFastCommentsSDK } from 'fastcomments-sdk/server';

const sdk = createFastCommentsSDK({
  apiKey: 'your-api-key',               // server-side only
  basePath: 'https://fastcomments.com'  // optional (default)
});

// 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

configuration = client.Configuration(host="https://fastcomments.com")
with client.ApiClient(configuration) 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.invoker.ApiClient;
import com.fastcomments.invoker.Configuration;
import com.fastcomments.api.PublicApi;

ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://fastcomments.com");

PublicApi api = new PublicApi(client);
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();

הירשמו לפיד החי

פתחו חיבור אחד וקבלו כל תגובה, עריכה, הצבעה ועדכון נוכחות חדשים ברגע שהם קורים. שום אירוע לא הולך לאיבוד: בעת חיבור מחדש ה-event log נשלף שוב כדי לשחזר כל מה שנשלח בזמן שהלקוח היה מנותק. מנויי WebSocket מקוריים זמינים ל-Node, React Native, Java, Swift ו-C++. כל שפה אחרת נשארת בזמן אמת באמצעות סקרים של ה-event log.

התקנה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

configuration = client.Configuration(host="https://fastcomments.com")
with client.ApiClient(configuration) 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, העבירו config, וסיימתם.

React Native

npm: fastcomments-react-native-sdk

רכיבים מקוריים, ללא webview. שלבו את FastCommentsLiveCommenting, את FastCommentsLiveChat או את FastCommentsFeed והעבירו config.

צפו בדמו החי

Android

com.fastcomments:sdk

רכיבי ממשק מקוריים ל-Android. הוסיפו את FastCommentsView ל-layout שלכם לתגובות מקוננות, הצבעות, התראות ופידים. Android 8.0+.

צפו ב-GitHub

iOS

Swift Package: FastCommentsUI

ספריית SwiftUI מקורית לתגובות מקוננות, לפידים חברתיים ולצ'אט חי. iOS 16+ ו-macOS 14+.

צפו ב-GitHub

החלקים שאחרת הייתם בונים בעצמכם

יותר מ-200 endpoints של REST

מפתח API אחד, base URL אחד. כל מה שלוח הבקרה עושה, גם הקוד שלכם יכול לעשות.

SDK ליותר מ-10 שפות

לקוחות עם טיפוסים ל-Node, Python, PHP, Ruby, Go, Java, Rust, Swift, C++ ועוד, כך שאתם בונים בסביבה שלכם ולא בשלנו.

זמן אמת דרך WebSockets

תגובות חדשות מגיעות לכל קורא ברגע הפרסום, ללא רענון וללא סקרים. אם קורא מתחבר מחדש, אירועים שהוחמצו משוחזרים מהלוג.

ניהול, SSO והגנה מפני ספאם

כניסה אחודה (SSO), ניהול תגובות וסינון ספאם מובנים, כך שהחלקים הקשים מטופלים עוד לפני שכתבתם שורה.

מאוחסן ומדורג עבורכם

אנחנו מפעילים את האחסון ואת תשתית זמן האמת ברשת גלובלית. אתם קוראים ל-API ומשגרים.

מה תוכלו לבנות

חבילת API ו-SDK אחת שמאחורי שרשורי תגובות, צ'אט ופעילות חיה באפליקציות ווב, נייד ושרת.

חדרי צ'אט חי

הזרימו הודעות לכולם בחדר בזמן אמת, עם ספירת נוכחות ופעילות הקלדה.

שרשורי תגובות

הוסיפו מקטעי תגובות מקוננות ובעלי הצבעה למאמרים, מוצרים ופוסטים בכמה קריאות API.

פידי פעילות

פרסמו לפיד ודחפו פריטים וריאקציות חדשים ללקוחות מחוברים ברגע שהם מגיעים.

שאלות ותשובות וסקרים

אספו שאלות, תשובות, הצבעות ותוצאות סקר, ואז דרגו והציגו אותם בזמן אמת.

עולים לאוויר בשלושה שלבים

1

קבלו את מפתח ה-API

התחילו תקופת ניסיון חינם וקחו את מזהה הדייר (tenant ID) ומפתח ה-API מלוח הבקרה.

2

התקינו את ה-SDK

הוסיפו את ה-SDK לשפה שלכם, או קראו ל-REST API ישירות עם cURL ועם כותרת ה-x-api-key שלכם.

3

שלפו, פרסמו ועלו לאוויר

טענו תגובות, פרסמו מהשרת שלכם, והירשמו לשינויים כדי להזרים עדכונים לכל קורא.

מבוזר גלובלית וזמין ברמה גבוהה

FastComments פועלת על פני אזורים מרובים בתשתית משלנו. כתיבות משוכפלות בין אזורים, צמתים עוברים לגיבוי אוטומטית, וקוראים מקבלים שירות מהמיקום הקרוב אליהם ביותר.

Multi-master, רב-אזורי

כתיבות מתקבלות ביותר מאזור אחד ומשוכפלות ביניהם, כך שאין נקודת כשל יחידה.

רשת edge משלנו

תגובות ומדיה מוגשות מרשת ה-CDN וה-DNS הגלובלית שלנו, ומסופקות מהמיקום הקרוב ביותר למשתמשים שלכם. ללא CDN של צד שלישי.

מעבר לגיבוי אוטומטי

צמתים מיותרים עוברים לגיבוי בכוחות עצמם, כך שהתעבורה ממשיכה לזרום גם בזמן תקלה. מגובה ב-99.99% זמינות.

מיקום נתונים אזורי

הפעילו ב-US או ב-EU. אזור ה-EU בכתובת 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 ומקבלים תגובות, עריכות, הצבעות ועדכוני נוכחות חדשים כאירועים, כך שאין רענון ואין סקרים. שום אירוע לא הולך לאיבוד: אם לקוח מתנתק, הוא שולף מחדש את ה-event log בעת החיבור מחדש כדי לשחזר כל מה שנשלח בזמן שהיה מנותק.

האם עליי להפעיל שרת WebSocket משלי?

לא. FastComments מארחת את תשתית זמן האמת. הלקוח שלכם נרשם באמצעות ה-SDK, ואנחנו מספקים את האירועים.

איך שפות ללא מנוי מקורי נשארות בזמן אמת?

הן מבצעות סקרים ל-endpoint של ה-event log, שמחזיר כל שינוי מאז חותמת זמן. ה-SDK של Node, React Native, Java, Swift ו-C++ כוללים במקום זאת מנוי WebSocket מקורי.

איך עימוד (pagination) עובד?

עבור תגובות באופן ספציפי, FastComments מחשבת מראש את העימוד בכל כתיבה לזמני טעינה אופטימליים, כך שאפילו שרשורים גדולים מאוד מתעמדים במהירות.

האם יש תקופת ניסיון חינם?

כן. התחילו תקופת ניסיון חינם עם גישה מלאה ל-API ול-SDK, ללא צורך בכרטיס אשראי. לאחר הניסיון, תוכניות בתשלום גדלות בהתאם לתעבורה שלכם.

היכן נמצא תיעוד ה-API?

התיעוד המלא של ה-REST API וה-SDK נמצא בכתובת docs.fastcomments.com, שם מתועדים כל endpoint, פרמטר ותגובה.

האם אני יכול לשמור נתונים ב-EU?

כן. FastComments מספקת אזור EU בכתובת eu.fastcomments.com, וה-SDK תומכים בניתוב אליו.

התחילו לבנות תוך דקות

התחילו תקופת ניסיון חינם, קחו את מפתח ה-API שלכם, והוסיפו דיונים בזמן אמת לאפליקציה שלכם עוד היום.