Support pour sites web
Ajoutez le support à votre site web avec une seule balise script
SupDesk s'intègre en toute simplicité à votre site web grâce à une seule balise script. Intégrez des tableaux de feedback, un chat en direct et un centre d'aide — le tout personnalisable pour correspondre à votre marque.
Démarrage rapide : widget JavaScript
Ajoutez ce script à votre site web :
<script
src="https://cdn.supdesk.app/widget.js"
data-portal="https://feedback.yourapp.com"
defer
></script>Le widget se charge automatiquement dans le coin inférieur droit de vos pages.
Exemples selon le framework
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');Ou utilisez l'extension disponible sur le répertoire des extensions 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}</>;
}Fonctionnalités du portail web
Tableau de feedback avec vote Les utilisateurs publient leurs idées, votent pour les suggestions et suivent ce qui arrive. Parfait pour vos feuilles de route produit.
Intégration du chat en direct Un widget qui s'affiche sur vos pages. Quand un utilisateur discute, le message arrive dans la même boîte de réception que vos e-mails et messages du portail.
Widget centre d'aide Des articles de base de connaissances consultables, intégrés sur votre page de support ou dans tout votre site.
Domaines personnalisés
Servez votre portail depuis support.yourapp.com, avec SSL automatique et personnalisation de la marque.
Personnalisation du widget
Configurez l'apparence du widget :
window.SupDesk = {
portal: "https://feedback.yourapp.com",
theme: "light", // or 'dark'
position: "bottom-right", // or 'bottom-left'
color: "#3B82F6", // match your brand
};Prêt à ajouter le support à votre site web ?
Commencez gratuitement. Aucune carte bancaire requise. Inscrivez-vous sur supdesk.app
SDK côté serveur pour l'intégration backend
Exemples de code en direct tirés du dépôt GitHub de chaque 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.',
);