راهنمای توسعهدهنده · ویجت
گفتوگو را از صفحه خودتان کنترل کنید
دکمه پشتیبانی سایت میتواند ویجت را باز کند. با API مرورگر هم میتوانید پنل را کنترل کنید، ظاهرش را موقتاً تغییر دهید یا متنی آماده در کادر پیام بگذارید.
نصب و دکمه پشتیبانی
کلید عمومی ویجت را از تنظیمات اتصال به سایت بردارید و اسکریپت را یک بار در صفحه بگذارید:
<script src="https://pixevel.chat/widget.js" data-key="pk_…" async></script>
<button type="button" data-pixevel-chat-open>
<span>گفتوگو با پشتیبانی</span>
</button>
ویژگی data-pixevel-chat-open روی هر عنصر صفحه کار میکند؛ کلیک روی فرزندش هم پنل را باز
میکند. دکمههایی که بعداً به صفحه اضافه میشوند هم کار میکنند. این رفتار پس از آمادهشدن
برنامه ویجت فعال میشود؛ کلیک زودتر از آن ذخیره نمیشود. رفتار پیشفرض لینکها تغییر نمیکند.
برای کنترل با JavaScript، پس از اجراشدن اسکریپت از window.PixevelChat استفاده کنید.
کنترل پنل
PixevelChat.open();
PixevelChat.close();
PixevelChat.toggle();
toggle() پنل بسته را باز و پنل باز را میبندد. open() و close() تکراری رویداد تازهای
نمیفرستند. این دستورها پیش از آمادهشدن برنامه هم کار میکنند؛ آخرین حالت خواستهشده اعمال
میشود. روی مسیرهایی که کسبوکار ویجت را مخفی کرده یا پس از hide()، پنل باز نمیشود.
برای استفاده از دکمه خودتان و حذف دکمه شناور، data-hide-launcher="true" را روی اسکریپت
بگذارید. hide() کل ویجت را پنهان و show() آن را دوباره نمایان میکند. با
setOffset(84) فاصله از پایین را برای هر عرض صفحه تنظیم کنید؛ setOffset(null) به تنظیمات
کسبوکار برمیگردد. مقدار فاصله باید بین صفر و ۱۶۰ پیکسل باشد.
تغییر موقت ظاهر
PixevelChat.setTheme({ primary: "#123456", colorScheme: "dark", radius: 16 });
PixevelChat.setTheme({ motion: 0 });
هر فراخوانی فقط فیلدهای معتبر دادهشده را تغییر میدهد. فیلدهای ناشناخته و مقادیر نامعتبر
نادیده گرفته میشوند؛ فیلدهای عددی همان قواعد محدودسازی ظاهر ویجت را دارند. رنگها باید
به شکل ششرقمی مثل #123456 باشند. تغییرها در تنظیمات کسبوکار یا حافظه مرورگر ذخیره
نمیشوند و با بارگذاری دوباره صفحه از بین میروند. باز و بسته کردن پنل آنها را پاک نمیکند.
| فیلدها | مقدار |
|---|---|
primary, surface, text | رنگ ششرقمی |
radius | صفر تا ۳۲ پیکسل |
launcherShape | circle, rounded, square |
launcherIconFit | inset, fill |
launcherSize | ۴۴ تا ۸۰ پیکسل |
side | left, right |
offsetBottom, offsetBottomMobile | صفر تا ۱۶۰ پیکسل |
offsetSide | صفر تا ۸۰ پیکسل |
panelWidth, panelHeight | ۳۲۰ تا ۴۸۰ و ۴۲۰ تا ۷۶۰ پیکسل |
motion | صفر تا ۲؛ صفر بدون حرکت |
textEffect | off, fade, blur, typewriter |
font | vazirmatn, system, inherit |
colorScheme | light, dark, system |
launcherLabel | متن تا ۲۴ نویسه، بدون نویسه کنترلی |
showLabel | off, desktop, always |
attention | none, pulse, bounce |
headerStyle | solid, gradient, minimal |
greetingDelay | عدد صحیح صفر تا ۳۰ ثانیه |
آماده کردن متن پیام
PixevelChat.prefill("سلام، درباره سفارش خودم پرسشی دارم.");
PixevelChat.open();
prefill(text) متن کادر پیام یا بدنه فرم تیکت را جایگزین میکند و پیام را نمیفرستد.
بازدیدکننده میتواند آن را تغییر دهد و خودش ارسال کند. رشته خالی کادر را پاک میکند؛ مقدار
غیررشتهای نادیده گرفته میشود و متن به ۵۰۰۰ نویسه محدود است. پنل بسته هم متن را برای
نمایش بعدی میگیرد.
رویدادها و لغو اشتراک
const onMessage = ({ text, author, at }) => {
console.log(text, author, at);
};
PixevelChat.on("message", onMessage);
const unsubscribe = PixevelChat.on("open", () => console.log("باز شد"));
PixevelChat.on("close", () => console.log("بسته شد"));
PixevelChat.off("message", onMessage);
unsubscribe();
openوclose: تغییر واقعی حالت پنل، بدون بدنه رویداد؛ کلیک و API هر دو آنها را میفرستند.message: پیام تازه تأییدشده در گفتوگوی فعال، شامل پیام خود بازدیدکننده و پاسخ پشتیبانی. بازکردن تاریخچه، ویرایش پیام و قطعههای در حال نوشتن دوباره رویداد پیام نمیفرستند. بدنه فقط{ text, author, at }دارد:authorیکی ازvisitor,staff,bot,systemوatزمان ISO است. شناسه داخلی، اطلاعات کارکنان و فایلها در آن نیستند.unread: تعداد پاسخهای خواندهنشده؛signin: شیء{ returnUrl }هنگام درخواست ورود.
on(event, fn) تابع لغو اشتراک برمیگرداند. off(event, fn) همان تابع را حذف میکند؛
ثبت دوباره همان تابع برای همان رویداد اشتراک دوم نمیسازد. خطای یک شنونده مانع اجرای
شنوندههای دیگر نمیشود. دستورهای رویداد، setTheme و prefill پیش از آمادهشدن برنامه
به ترتیب صف میشوند؛ خود کلیک روی ویژگی HTML صف نمیشود. این API فقط پس از اجراشدن
اسکریپت موجود است؛ چون اسکریپت async است، کد وابسته را در رویداد load آن اجرا کنید.
این API مرورگر کلید خصوصی نمیخواهد. برای گفتوگوهای مشتری روی سرور خودتان از API تیکتها و برای رویدادهای سرور از وبهوکها استفاده کنید.