دعم العملاء للمواقع الإلكترونية

SupDesk Team

أضِف الدعم إلى موقعك باستخدام وسم سكربت واحد

يتكامل SupDesk بسلاسة مع موقعك عبر وسم سكربت واحد. وضمِّن لوحات الملاحظات والدردشة المباشرة ومركز المساعدة — وكلها قابلة للتخصيص لتتوافق مع هويتك البصرية.

البدء السريع: أداة JavaScript

أضِف هذا السكربت إلى موقعك:

<script
  src="https://cdn.supdesk.app/widget.js"
  data-portal="https://feedback.yourapp.com"
  defer
></script>

تُحمَّل الأداة تلقائيًا في الزاوية السفلية اليمنى من صفحاتك.

أمثلة حسب إطار العمل

React:

import { useEffect } from "react";
 
function SupportWidget() {
  useEffect(() => {
    const script = document.createElement("script");
    script.src = "https://cdn.supdesk.app/widget.js";
    script.dataset.portal = "https://feedback.yourapp.com";
    script.async = true;
    document.body.appendChild(script);
    return () => document.body.removeChild(script);
  }, []);
 
  return null;
}

Vue 3:

<script setup>
import { onMounted, onUnmounted } from "vue";
 
onMounted(() => {
  const script = document.createElement("script");
  script.src = "https://cdn.supdesk.app/widget.js";
  script.dataset.portal = "https://feedback.yourapp.com";
  document.body.appendChild(script);
});
 
onUnmounted(() => {
  const script = document.querySelector('script[src*="supdesk.app"]');
  if (script) script.remove();
});
</script>

WordPress:

// Add to your theme's functions.php
function add_supdesk_widget() {
}
add_action('wp_footer', 'add_supdesk_widget');

أو استخدم الإضافة من مستودع إضافات WordPress.

Next.js (App Router):

export default function Layout({ children }) {
  useEffect(() => {
    const script = document.createElement("script");
    script.src = "https://cdn.supdesk.app/widget.js";
    script.dataset.portal = "https://feedback.yourapp.com";
    document.body.appendChild(script);
    return () => document.body.removeChild(script);
  }, []);
 
  return <>{children}</>;
}

ميزات البوابة الخاصة بالموقع

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

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

أداة مركز المساعدة مقالات قاعدة معرفة قابلة للبحث مضمَّنة في صفحة الدعم لديك أو في جميع صفحات موقعك.

نطاقات مخصصة قدِّم بوابتك من النطاق support.yourapp.com مع SSL تلقائي وهويتك البصرية.

تخصيص الأداة

اضبط مظهر الأداة:

window.SupDesk = {
  portal: "https://feedback.yourapp.com",
  theme: "light", // or 'dark'
  position: "bottom-right", // or 'bottom-left'
  color: "#3B82F6", // match your brand
};

هل أنت مستعد لإضافة الدعم إلى موقعك؟

ابدأ مجانًا. لا حاجة إلى بطاقة ائتمان. سجّل في supdesk.app

أدوات SDK من جانب الخادم لتكامل الواجهة الخلفية

أمثلة برمجية مباشرة مأخوذة من مستودع GitHub لكل SDK.

RabinApps/supdesk-nodeJavaScript / TypeScript
import { SupDesk } from "supdesk";

const supdesk = new SupDesk({ apiKey: process.env.SUPDESK_API_KEY! });

// Auto-pages: iterating walks every page for you.
for await (const submission of await supdesk.submissions.list({
  status: "open",
})) {
  console.log(submission.title);
}

await supdesk.submissions.create({
  type: "bug",
  title: "Export button does nothing",
  email: "user@example.com",
  body: "Clicking Export on the reports page has no effect.",
});
RabinApps/supdesk-pythonPython
from supdesk import SupDesk

supdesk = SupDesk()  # api_key=... or $SUPDESK_API_KEY

# Auto-pages: iterating walks every page for you.
for submission in supdesk.submissions.list(status="open"):
    print(submission.title)

supdesk.submissions.create(
    type="bug",
    title="Export button does nothing",
    email="user@example.com",
    body="Clicking Export on the reports page has no effect.",
)
RabinApps/supdesk-goGo
import "github.com/rabinapps/supdesk-go/supdesk"

client, err := supdesk.New(os.Getenv("SUPDESK_API_KEY"))
if err != nil {
    log.Fatal(err)
}

page, err := client.Submissions.List(ctx, supdesk.SubmissionsListParams{
    Status: ptr("open"),
})
if err != nil {
    return err
}
// Auto-pages: All walks every page for you.
for sub, err := range page.All(ctx) {
    if err != nil {
        return err
    }
    fmt.Println(sub.Title)
}

_, err = client.Submissions.Create(ctx, supdesk.SubmissionsCreateParams{
    Type:  supdesk.SubmissionTypeBug,
    Title: "Export button does nothing",
    Email: "user@example.com",
    Body:  "Clicking Export on the reports page has no effect.",
})
RabinApps/supdesk-dartDart
import 'dart:io';
import 'package:supdesk/supdesk.dart';

final supdesk = SupDesk(apiKey: Platform.environment['SUPDESK_API_KEY']!);

// Auto-pages: the stream walks every page for you.
final page = await supdesk.submissions.list(status: PostStatus.open);
await for (final submission in page.autoPaging()) {
  print(submission.title);
}

await supdesk.submissions.create(
  type: SubmissionType.bug,
  title: 'Export button does nothing',
  email: 'user@example.com',
  body: 'Clicking Export on the reports page has no effect.',
);

الفئات

SupportWebsite

الوسوم

#support#website#widget#javascript#feedback