قابلیتها
کنترل رابط چت
با متدهای پشتیبانیشدهٔ JavaScript، ویجت وبسایت موچت را باز و بسته و تنظیم کنید.
پس از راهاندازی حباب چت، با window.$muchat ویجت را به دکمهها، زبان، پوسته و مسیریابی سایت خودتان متصل کنید.
متدها
open()
پنجرهٔ چت را باز میکند. این متد پارامتر پیام یا گزینهٔ پیام مخفی نمیگیرد.
window.$muchat.open();close() و toggle()
پنجره را ببندید یا وضعیت آن را عوض کنید:
window.$muchat.close();
window.$muchat.toggle();
window.$muchat.toggle("open");
window.$muchat.toggle("close");این متدها پنجره را کنترل میکنند. برای کنترل جداگانهٔ حباب، از toggleBubbleVisibility() استفاده کنید.
sendMessage(message)
پس از muchat:ready، یک پیام واقعی از طرف کاربر بفرستید. ارسال رشته بهطور پیشفرض چت را هم باز میکند:
window.$muchat.sendMessage("Where can I see your pricing?");برای حفظ وضعیت فعلی پنجره، یک شیء بفرستید:
window.$muchat.sendMessage({
content: "Where can I see your pricing?",
openWidget: false
});| پارامتر | نوع | رفتار |
|---|---|---|
content | string | متن پیام؛ پیام خالی نادیده گرفته میشود |
openWidget | boolean | پیشفرض true است؛ مقدار false پنجره را باز یا بسته نمیکند |
پیش از آمادهشدن، پس از حذف ویجت یا پیش از احراز هویتِ الزامی، فراخوانی نادیده گرفته میشود. مقدار بازگشتی، Promise تحویل پیام نیست. اعتبارسنجی معمول ویجت و قواعد فرم الزامی همچنان اعمال میشوند.
reset()
کوکی نشست مهمان را پاک میکند، پنجره را میبندد و یک نشست تازهٔ ویجت بارگذاری میکند:
window.$muchat.reset();تنظیمات هنگام اجرا
ظاهر، زبان و جایگاه
window.$muchat.setLocale("en");
window.$muchat.setColorScheme("dark");
window.$muchat.setPosition("right");| متد | مقادیر پشتیبانیشده |
|---|---|
setLocale(locale) | fa، en، ar؛ جهت متن را هم تنظیم میکند |
setColorScheme(theme) | light، dark؛ مقدار پشتیبانینشده به light برمیگردد |
setPosition(position) | left، right |
toggleBubbleVisibility(value) | show، hide |
زبان، جایگاه یا مقدار نمایش نامعتبر خطا میدهد. این تغییرات، تنظیمات داشبورد را ذخیره نمیکنند. محتوا، رنگ، آواتار، فاصلهها و پیامهای اولیه را از داشبورد تنظیم کنید.
نمایش و مخفی کردن حباب
window.$muchat.toggleBubbleVisibility("hide");
window.$muchat.toggleBubbleVisibility("show");مخفی کردن حباب، پنجرهٔ باز چت را نمیبندد. اگر بازدیدکننده همچنان باید بتواند چت را باز کند، یک دکمهٔ روشن و قابل تشخیص برای این کار بگذارید. با دسترسی محدود، نمایش حباب همچنان به شناسایی موفق نیاز دارد.
تنظیم پیش از راهاندازی
مقدار window.muchatSettings را پیش از muchatSDK.run تنظیم کنید. مثال زیر زبان، پوسته، جایگاه و نمایش اولیهٔ حباب را تعیین میکند:
window.muchatSettings = {
locale: "en",
theme: "light",
position: "right",
bubble_visible: true
};تغییر این شیء پس از راهاندازی، ویجت فعال را تغییر نمیدهد. از متدهای بالا استفاده کنید یا ویجت را حذف و دوباره راهاندازی کنید. موچت API عمومی setOptions() یا resetOptions() و رویداد optionsChanged برای تأیید نمایش تغییرات ندارد.
مثالها
دکمههای اختصاصی
این کد را پس از ساختهشدن دکمهها و راهاندازی SDK با کد نصب اجرا کنید:
const helpButton = document.getElementById("help-button");
const closeButton = document.getElementById("close-button");
helpButton?.addEventListener("click", () => window.$muchat.open());
closeButton?.addEventListener("click", () => window.$muchat.close());از عنصر واقعی button با عنوان روشن استفاده کنید. با muchat:opened و muchat:closed میتوانید دکمههای خودتان را هنگام تغییر وضعیت پنجره بهروز کنید.
پاسخ به پرسشهای متداول
شنوندهٔ آمادهشدن را پیش از فراخوانی muchatSDK.run در کد نصب ثبت کنید. این مثال باید پس از ساختهشدن دکمههای پرسش اجرا شود:
let chatReady = false;
window.addEventListener("muchat:ready", () => {
chatReady = true;
});
document.querySelectorAll("button[data-question]").forEach((button) => {
button.addEventListener("click", () => {
if (!chatReady) return;
window.$muchat.sendMessage(button.dataset.question);
});
});در ویژگی data-question هر دکمه، پرسشی را بنویسید که باید ارسال شود. اگر دسترسی محدود فعال است، احراز هویت هم باید پیش از ارسال کامل شده باشد. این مثال فرض میکند ویجت پس از آن بازنشانی یا جایگزین نمیشود؛ این تغییرات را در اتصال برنامهٔ خودتان مدیریت کنید.
راهنمایی متناسب با صفحه
برای بازدیدکنندهٔ صفحهٔ قیمتگذاری، دکمهٔ راهنمایی بگذارید که با کلیک او پرسش مربوط به قیمت را ارسال کند.
بازنشانی بر اساس زمان
SDK جریان قابل اتکایی از رویداد پیام کاربر و پاسخ موچت برای اندازهگیری بیفعالیتی چت ندارد. بر مبنای رویداد فرضی user-message یا assistant-message بازنشانی نکنید. اگر برنامهٔ شما نشست زماندارِ مهمان را مدیریت میکند، میتواند پس از اعلام پایان نشست در رابط خودش، reset() را فراخوانی کند.
بازنشانی پس از ابزار یا واژهٔ خاص
رویداد مرورگر tool-result و تابع دریافت محتوای پیام در ویجت فعلی وجود ندارد. باز یا بسته شدن چت را به معنی تکمیل پرداخت یا عملیات محافظتشدهٔ دیگر نگیرید. پیش از تغییر رابط برنامه، نتیجه را از بکاند خودتان تأیید کنید.
بازنشانی هنگام مسیریابی
فقط وقتی گفتگوی تازهٔ مهمان لازم است بازنشانی کنید. پس از آمادهشدن ویجت، این تابع را از رویداد مسیریابی برنامه فراخوانی کنید:
function onEnterNewTask() {
window.$muchat.reset();
}بازنشانی، هویت یا گفتگوی کاربر تأییدشده را پاک نمیکند. SDK از قبل تغییر صفحهٔ میزبان را گزارش میکند و نصب یا بازنشانی در هر تغییر مسیر لازم نیست.
چرخهٔ عمر ویجت
destroy() و init(options)
متد destroy() یک Promise برمیگرداند که پس از حذف کامل ویجت پایان مییابد. پیش از راهاندازی دوباره منتظر آن بمانید:
await window.$muchat.destroy();
window.$muchat.init({
websiteToken: "YOUR_WEBSITE_TOKEN",
baseUrl: "https://widget.mu.chat"
});حذف ویجت، iframe، حباب و شنوندههای تحت مدیریت SDK را برمیدارد. شنوندههای window برنامهٔ شما و کوکی نشست ذخیرهشده پاک نمیشوند. برای تغییر حساب و خروج، راهنمای احراز هویت را دنبال کنید.
switchWidget(options, configure?)
برای جایگزینی یک ویجت با دیگری، از switchWidget استفاده کنید. این متد حذف قبلی را کامل میکند و نمونهٔ جدید را میسازد. تابع اختیاری، همان نمونه را دریافت میکند:
await window.$muchat.switchWidget({
websiteToken: "ANOTHER_WEBSITE_TOKEN",
baseUrl: "https://widget.mu.chat"
}, (widget) => {
widget.setLocale("en");
});پیش از شروع تعویض بعدی، منتظر پایان قبلی بمانید. پایان این Promise یعنی راهاندازی و تابع اختیاری تمام شدهاند؛ به معنی آمادهشدن iframe جدید یا تأیید هویت کاربر آن نیست.
کنترل بدون اسکریپت نصب
iframe مستقیم پروتکل جداگانهای دارد و window.$muchat ایجاد نمیکند. متدهای بالا را نمیتوان بهصورت پیام دلخواه برای آن فرستاد. فرمانها، روند آمادهشدن و بررسی مبدأ در راهنمای iframe آمده است.
نکات کاربردی
- ویجت را یک بار در چیدمان مشترک برنامه راه بیندازید.
- برای ارسال پیام منتظر آمادهشدن بمانید و پیش از چت محدود، هویت کاربر را تأیید کنید.
- چتی را که کاربر بسته است، تا درخواست دوبارهٔ خودش بسته نگه دارید.
- پیش از جایگزینی یا بازنشانی نشست، فرصت خواندن پاسخ را بدهید.
- دکمههای اختصاصی، فوکوس، نمایش موبایل و تغییر حساب را روی سایت خودتان آزمایش کنید.