网站支持台

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

从每个SDK的GitHub存储库动态加载的实时代码示例。

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