قابلیت‌ها

کنترل رابط چت

با متدهای پشتیبانی‌شدهٔ JavaScript، ویجت وب‌سایت موچت را باز و بسته و تنظیم کنید.

پس از راه‌اندازی حباب چت، با window.$muchat ویجت را به دکمه‌ها، زبان، پوسته و مسیریابی سایت خودتان متصل کنید.

متدها

open()

پنجرهٔ چت را باز می‌کند. این متد پارامتر پیام یا گزینهٔ پیام مخفی نمی‌گیرد.

Open chat
window.$muchat.open();

close() و toggle()

پنجره را ببندید یا وضعیت آن را عوض کنید:

Window controls
window.$muchat.close();
window.$muchat.toggle();
window.$muchat.toggle("open");
window.$muchat.toggle("close");

این متدها پنجره را کنترل می‌کنند. برای کنترل جداگانهٔ حباب، از toggleBubbleVisibility() استفاده کنید.

sendMessage(message)

پس از muchat:ready، یک پیام واقعی از طرف کاربر بفرستید. ارسال رشته به‌طور پیش‌فرض چت را هم باز می‌کند:

Send a question
window.$muchat.sendMessage("Where can I see your pricing?");

برای حفظ وضعیت فعلی پنجره، یک شیء بفرستید:

Send without opening
window.$muchat.sendMessage({
  content: "Where can I see your pricing?",
  openWidget: false
});
پارامترنوعرفتار
contentstringمتن پیام؛ پیام خالی نادیده گرفته می‌شود
openWidgetbooleanپیش‌فرض true است؛ مقدار false پنجره را باز یا بسته نمی‌کند

متد sendMessage() از طرف بازدیدکننده پیام ثبت می‌کند و برای تنظیم خوش‌آمدگویی نیست. مقدار openWidget: false هم پیام را از سابقه مخفی نمی‌کند. ارسال را به اقدام روشن کاربر متصل کنید.

پیش از آماده‌شدن، پس از حذف ویجت یا پیش از احراز هویتِ الزامی، فراخوانی نادیده گرفته می‌شود. مقدار بازگشتی، Promise تحویل پیام نیست. اعتبارسنجی معمول ویجت و قواعد فرم الزامی همچنان اعمال می‌شوند.

reset()

کوکی نشست مهمان را پاک می‌کند، پنجره را می‌بندد و یک نشست تازهٔ ویجت بارگذاری می‌کند:

Reset a guest chat
window.$muchat.reset();

برای کاربر تأییدشده، پیش از آماده‌شدن و هنگام اجرای بازنشانی دیگر، این فراخوانی نادیده گرفته می‌شود. بازنشانی به معنی خروج از حساب یا حذف گفتگوهای ذخیره‌شده نیست. پس از بارگذاری داخلی، رویداد muchat:ready دوباره ارسال نمی‌شود.

تنظیمات هنگام اجرا

ظاهر، زبان و جایگاه

Runtime appearance
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

زبان، جایگاه یا مقدار نمایش نامعتبر خطا می‌دهد. این تغییرات، تنظیمات داشبورد را ذخیره نمی‌کنند. محتوا، رنگ، آواتار، فاصله‌ها و پیام‌های اولیه را از داشبورد تنظیم کنید.

نمایش و مخفی کردن حباب

Launcher visibility
window.$muchat.toggleBubbleVisibility("hide");
window.$muchat.toggleBubbleVisibility("show");

مخفی کردن حباب، پنجرهٔ باز چت را نمی‌بندد. اگر بازدیدکننده همچنان باید بتواند چت را باز کند، یک دکمهٔ روشن و قابل تشخیص برای این کار بگذارید. با دسترسی محدود، نمایش حباب همچنان به شناسایی موفق نیاز دارد.

تنظیم پیش از راه‌اندازی

مقدار window.muchatSettings را پیش از muchatSDK.run تنظیم کنید. مثال زیر زبان، پوسته، جایگاه و نمایش اولیهٔ حباب را تعیین می‌کند:

Initial settings
window.muchatSettings = {
  locale: "en",
  theme: "light",
  position: "right",
  bubble_visible: true
};

تغییر این شیء پس از راه‌اندازی، ویجت فعال را تغییر نمی‌دهد. از متدهای بالا استفاده کنید یا ویجت را حذف و دوباره راه‌اندازی کنید. موچت API عمومی setOptions() یا resetOptions() و رویداد optionsChanged برای تأیید نمایش تغییرات ندارد.

مثال‌ها

دکمه‌های اختصاصی

این کد را پس از ساخته‌شدن دکمه‌ها و راه‌اندازی SDK با کد نصب اجرا کنید:

Custom launchers
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 در کد نصب ثبت کنید. این مثال باید پس از ساخته‌شدن دکمه‌های پرسش اجرا شود:

FAQ buttons
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 و تابع دریافت محتوای پیام در ویجت فعلی وجود ندارد. باز یا بسته شدن چت را به معنی تکمیل پرداخت یا عملیات محافظت‌شدهٔ دیگر نگیرید. پیش از تغییر رابط برنامه، نتیجه را از بک‌اند خودتان تأیید کنید.

بازنشانی هنگام مسیریابی

فقط وقتی گفتگوی تازهٔ مهمان لازم است بازنشانی کنید. پس از آماده‌شدن ویجت، این تابع را از رویداد مسیریابی برنامه فراخوانی کنید:

Reset for a new guest task
function onEnterNewTask() {
  window.$muchat.reset();
}

بازنشانی، هویت یا گفتگوی کاربر تأییدشده را پاک نمی‌کند. SDK از قبل تغییر صفحهٔ میزبان را گزارش می‌کند و نصب یا بازنشانی در هر تغییر مسیر لازم نیست.

چرخهٔ عمر ویجت

destroy() و init(options)

متد destroy() یک Promise برمی‌گرداند که پس از حذف کامل ویجت پایان می‌یابد. پیش از راه‌اندازی دوباره منتظر آن بمانید:

Reinitialize the widget
await window.$muchat.destroy();
window.$muchat.init({
  websiteToken: "YOUR_WEBSITE_TOKEN",
  baseUrl: "https://widget.mu.chat"
});

حذف ویجت، iframe، حباب و شنونده‌های تحت مدیریت SDK را برمی‌دارد. شنونده‌های window برنامهٔ شما و کوکی نشست ذخیره‌شده پاک نمی‌شوند. برای تغییر حساب و خروج، راهنمای احراز هویت را دنبال کنید.

switchWidget(options, configure?)

برای جایگزینی یک ویجت با دیگری، از switchWidget استفاده کنید. این متد حذف قبلی را کامل می‌کند و نمونهٔ جدید را می‌سازد. تابع اختیاری، همان نمونه را دریافت می‌کند:

Switch widget
await window.$muchat.switchWidget({
  websiteToken: "ANOTHER_WEBSITE_TOKEN",
  baseUrl: "https://widget.mu.chat"
}, (widget) => {
  widget.setLocale("en");
});

پیش از شروع تعویض بعدی، منتظر پایان قبلی بمانید. پایان این Promise یعنی راه‌اندازی و تابع اختیاری تمام شده‌اند؛ به معنی آماده‌شدن iframe جدید یا تأیید هویت کاربر آن نیست.

کنترل بدون اسکریپت نصب

iframe مستقیم پروتکل جداگانه‌ای دارد و window.$muchat ایجاد نمی‌کند. متدهای بالا را نمی‌توان به‌صورت پیام دلخواه برای آن فرستاد. فرمان‌ها، روند آماده‌شدن و بررسی مبدأ در راهنمای iframe آمده است.

نکات کاربردی

  • ویجت را یک بار در چیدمان مشترک برنامه راه بیندازید.
  • برای ارسال پیام منتظر آماده‌شدن بمانید و پیش از چت محدود، هویت کاربر را تأیید کنید.
  • چتی را که کاربر بسته است، تا درخواست دوبارهٔ خودش بسته نگه دارید.
  • پیش از جایگزینی یا بازنشانی نشست، فرصت خواندن پاسخ را بدهید.
  • دکمه‌های اختصاصی، فوکوس، نمایش موبایل و تغییر حساب را روی سایت خودتان آزمایش کنید.

گام‌های بعدی

مستندات موچت

در این صفحه