مستندات فنی

مستندات چت زنده اکسیر پیامک

راهنمای نصب ویجت چت روی سایت، مدل ارتباط با API، و پروتکل بلادرنگ برای یکپارچه‌سازی‌های سفارشی.

معرفی

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

نصب ویجت

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

  1. کد زیر رو قبل از تگ بسته </body> در سایتتون قرار بدید.
  2. ذخیره و صفحه رو رفرش کنید — حباب چت پایین سمت راست سایت ظاهر می‌شه.
  3. وارد پنل مدیریت بشید تا پیام‌ها رو مشاهده و پاسخ بدید.
<script src="https://chat.exirsms.ir/widget.js" data-site="YOUR_WIDGET_KEY"></script>
💡 YOUR_WIDGET_KEY یه شناسه عمومیه (نه یک رمز مخفی) — همون‌جوری که توی HTML سایتتون قابل مشاهده‌ست، امنه که در معرض دید باشه.

سفارشی‌سازی

رنگ برند ویجت (رنگ حباب و پیام‌های شما) از تنظیمات سایت شما در پایگاه‌داده خونده می‌شه و به‌صورت خودکار روی ویجت اعمال می‌شه — نیازی به تغییر کد جاسازی نیست.

مدل احراز هویت

دو نوع کلید در این سیستم وجود داره:

نوعمصرفسطح دسترسی
widget_keyنصب ویجت روی سایت (در HTML عمومیه)فقط شروع گفتگوی بازدیدکننده
Session Cookieورود به پنل مدیریت (httpOnly)مشاهده/پاسخ به همه گفتگوهای همون سایت

درخواست‌های عمومی (شروع نشست، تاریخچه) فقط با widget_key کار می‌کنن. درخواست‌های مدیریتی نیاز به ورود از طریق پنل و کوکی نشست دارن.

POST شروع نشست بازدیدکننده

POST https://chat.exirsms.ir/api/session

هر بار که ویجت باز می‌شه این درخواست ارسال می‌شه. اگه بازدیدکننده قبلاً نشست داشته باشه (از localStorage)، همون گفتگو ادامه پیدا می‌کنه؛ در غیر این صورت گفتگوی جدید ساخته می‌شه.

پارامترنوعالزامیتوضیح
siteKeystringاجباریهمون widget_key
sessionIdstringاختیاریشناسه نشست قبلی (برای ادامه گفتگو)
pagestringاختیاریآدرس صفحه فعلی بازدیدکننده
referrerstringاختیاریصفحه ارجاع‌دهنده
name, phonestringاختیاریاطلاعات تماس اختیاری بازدیدکننده
curl -X POST https://chat.exirsms.ir/api/session \
  -H "Content-Type: application/json" \
  -d '{"siteKey":"YOUR_WIDGET_KEY","page":"https://example.com/"}'

# پاسخ:
{
  "sessionId": "c56729f6f3791fe3b3f90ebf1bd7d50b",
  "conversationId": 42,
  "siteId": 7,
  "brandColor": "#6d5efc"
}
⚠️ اگه اشتراک سایت منقضی شده باشه، این درخواست با کد وضعیت 402 برمی‌گرده.

GET تاریخچه گفتگو

GET https://chat.exirsms.ir/api/history?conversationId=42

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

{
  "messages": [
    { "sender_type": "visitor", "body": "سلام", "created_at": 1788616754996 },
    { "sender_type": "admin", "body": "سلام بفرمایید", "created_at": 1788616800000 }
  ]
}

اتصال WebSocket

پیام‌های جدید به‌صورت بلادرنگ از طریق WebSocket ارسال می‌شن — نه polling.

wss://chat.exirsms.ir/ws?role=visitor&siteKey=YOUR_WIDGET_KEY&sessionId=SESSION_ID

برای ارسال پیام از سمت بازدیدکننده، یک فریم JSON با ساختار زیر روی این اتصال بفرستید:

{ "type": "message", "body": "متن پیام شما" }
🔁 اتصال دارای heartbeat هست تا از قطع‌شدن توسط NAT/پراکسی‌های بین‌راهی (رایج در برخی شبکه‌های موبایل) جلوگیری بشه — نیازی به پیاده‌سازی اضافه از سمت شما نیست.

رویدادهای دریافتی

پیام‌های دریافتی از سرور روی همین اتصال، بر اساس فیلد type تفکیک می‌شن:

typeزمان ارسال
messageپاسخ جدید از پشتیبانی رسیده

چت داخلی تیم

هر سایت می‌تونه چند عضو مدیریت داشته باشه. یک عضو موجود از داخل پنل (تب «تیم») می‌تونه لینک دعوت بسازه و برای همکارش بفرسته؛ همکار با اون لینک حساب خودش رو می‌سازه و به تیم اضافه می‌شه — بدون این‌که رمز عبورش رو کسی غیر از خودش وارد کنه. اعضای تیم یک کانال گفتگوی داخلی مشترک هم دارن که جدا از گفتگوهای مشتریانه.

اشتراک و تمدید

اشتراک ماهانه‌ست و تاریخ انقضا در پنل مدیریت (بالای لیست گفتگوها) نمایش داده می‌شه. تا ۷ روز مونده به انقضا هشدار زرد، و بعد از انقضا هشدار قرمز با دکمه تمدید فوری نشون داده می‌شه. تمدید از همون تاریخ انقضای فعلی محاسبه می‌شه، پس تمدید زودهنگام هیچ روزی از اشتراک باقی‌مونده رو هدر نمی‌ده. در صورت انقضا، ویجت روی سایت شما غیرفعال می‌شه ولی داده‌های گفتگوهای قبلی حفظ می‌مونه.