Служба поддержки для веб-сайтов
Добавьте поддержку на свой сайт одним тегом скрипта
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}</>;
}Возможности портала для сайта
Доска обратной связи с голосованием Пользователи публикуют идеи, голосуют за предложения и следят за тем, что появится дальше. Идеально для дорожных карт продукта.
Интеграция живого чата Виджет, который отображается на ваших страницах. Когда пользователи пишут в чат, сообщение попадает в тот же inbox, что и письма с сообщениями портала.
Виджет центра помощи Статьи базы знаний с поиском, встроенные на страницу поддержки или по всему сайту.
Собственные домены
Отдавайте свой портал с 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.
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.",
});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.",
)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.",
})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.',
);