<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
	<id>https://wiki.hesabix.ir/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA_%D9%81%D9%86%DB%8C_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%DA%86%D8%AA_%D8%A8%D8%A7_%D9%85%D8%B4%D8%AA%D8%B1%DB%8C</id>
	<title>مستندات فنی سیستم چت با مشتری - تاریخچهٔ نسخه‌ها</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.hesabix.ir/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA_%D9%81%D9%86%DB%8C_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%DA%86%D8%AA_%D8%A8%D8%A7_%D9%85%D8%B4%D8%AA%D8%B1%DB%8C"/>
	<link rel="alternate" type="text/html" href="https://wiki.hesabix.ir/index.php?title=%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA_%D9%81%D9%86%DB%8C_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%DA%86%D8%AA_%D8%A8%D8%A7_%D9%85%D8%B4%D8%AA%D8%B1%DB%8C&amp;action=history"/>
	<updated>2026-05-25T21:55:49Z</updated>
	<subtitle>تاریخچهٔ نسخه‌ها برای این صفحه در ویکی</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.hesabix.ir/index.php?title=%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA_%D9%81%D9%86%DB%8C_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%DA%86%D8%AA_%D8%A8%D8%A7_%D9%85%D8%B4%D8%AA%D8%B1%DB%8C&amp;diff=30&amp;oldid=prev</id>
		<title>Alizadeh.babak: صفحه‌ای تازه حاوی « = مستند فنی چت وب CRM (Embed) برای توسعه‌دهندگان = این سند قرارداد &#039;&#039;&#039;REST API&#039;&#039;&#039; و &#039;&#039;&#039;WebSocket&#039;&#039;&#039; بستر چت وب را توصیف می‌کند. رابط کاربری ویجت روی سایت مشتری (مثلاً افزونهٔ وردپرس) جدا از این مخزن توسعه داده می‌شود؛ اینجا فقط بک‌اند Hesabix است.  == پیش‌نیاز دیتاب...» ایجاد کرد</title>
		<link rel="alternate" type="text/html" href="https://wiki.hesabix.ir/index.php?title=%D9%85%D8%B3%D8%AA%D9%86%D8%AF%D8%A7%D8%AA_%D9%81%D9%86%DB%8C_%D8%B3%DB%8C%D8%B3%D8%AA%D9%85_%DA%86%D8%AA_%D8%A8%D8%A7_%D9%85%D8%B4%D8%AA%D8%B1%DB%8C&amp;diff=30&amp;oldid=prev"/>
		<updated>2026-04-25T00:36:07Z</updated>

		<summary type="html">&lt;p&gt;صفحه‌ای تازه حاوی « = مستند فنی چت وب CRM (Embed) برای توسعه‌دهندگان = این سند قرارداد &amp;#039;&amp;#039;&amp;#039;REST API&amp;#039;&amp;#039;&amp;#039; و &amp;#039;&amp;#039;&amp;#039;WebSocket&amp;#039;&amp;#039;&amp;#039; بستر چت وب را توصیف می‌کند. رابط کاربری ویجت روی سایت مشتری (مثلاً افزونهٔ وردپرس) جدا از این مخزن توسعه داده می‌شود؛ اینجا فقط بک‌اند Hesabix است.  == پیش‌نیاز دیتاب...» ایجاد کرد&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
= مستند فنی چت وب CRM (Embed) برای توسعه‌دهندگان =&lt;br /&gt;
این سند قرارداد &amp;#039;&amp;#039;&amp;#039;REST API&amp;#039;&amp;#039;&amp;#039; و &amp;#039;&amp;#039;&amp;#039;WebSocket&amp;#039;&amp;#039;&amp;#039; بستر چت وب را توصیف می‌کند. رابط کاربری ویجت روی سایت مشتری (مثلاً افزونهٔ وردپرس) جدا از این مخزن توسعه داده می‌شود؛ اینجا فقط بک‌اند Hesabix است.&lt;br /&gt;
&lt;br /&gt;
== پیش‌نیاز دیتابیس ==&lt;br /&gt;
پس از به‌روزرسانی کد، مایگریشن زیر را اجرا کنید:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;cd hesabixAPI&lt;br /&gt;
alembic upgrade head&amp;lt;/syntaxhighlight&amp;gt;فایل مایگریشن: &amp;lt;code&amp;gt;migrations/versions/20260505_000001_crm_chat_embed.py&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
جداول: &amp;lt;code&amp;gt;crm_chat_widgets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crm_chat_conversations&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;crm_chat_messages&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
برای ثبت مدل‌ها در metadata آل embیک، &amp;lt;code&amp;gt;import adapters.db.models.crm_chat&amp;lt;/code&amp;gt; در &amp;lt;code&amp;gt;migrations/env.py&amp;lt;/code&amp;gt; اضافه شده است. اگر در محیط شما جایی غیر از این، metadata بدون این مدل‌ها لود می‌شود، می‌توانید در &amp;lt;code&amp;gt;adapters/db/models/__init__.py&amp;lt;/code&amp;gt; نیز ایمپورت مدل‌های &amp;lt;code&amp;gt;crm_chat&amp;lt;/code&amp;gt; را اضافه کنید.&lt;br /&gt;
&lt;br /&gt;
== اتصال روترها به اپلیکیشن ==&lt;br /&gt;
&lt;br /&gt;
* مسیرهای مدیریتی چت زیر همان روتر CRM سوار شده‌اند: &amp;lt;code&amp;gt;router.include_router&amp;lt;/code&amp;gt; در انتهای &amp;lt;code&amp;gt;adapters/api/v1/crm.py&amp;lt;/code&amp;gt;.&lt;br /&gt;
* مسیرهای عمومی در &amp;lt;code&amp;gt;adapters/api/v1/public_share_links.py&amp;lt;/code&amp;gt; با &amp;lt;code&amp;gt;include_router&amp;lt;/code&amp;gt; به روتر اشتراک‌لینک‌ها اضافه شده‌اند.&lt;br /&gt;
* WebSocket در &amp;lt;code&amp;gt;adapters/api/v1/notifications_ws.py&amp;lt;/code&amp;gt; با &amp;lt;code&amp;gt;include_router&amp;lt;/code&amp;gt; کنار &amp;lt;code&amp;gt;/ws/notifications&amp;lt;/code&amp;gt; ثبت شده است.&lt;br /&gt;
&lt;br /&gt;
نیازی به تغییر &amp;lt;code&amp;gt;main.py&amp;lt;/code&amp;gt; برای این نسخه نیست.&lt;br /&gt;
&lt;br /&gt;
== جریان کاری (بازدیدکننده) ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;قبل از چت&amp;#039;&amp;#039;&amp;#039;، فرم سمت سایت شما نام، نام خانوادگی، ایمیل و تلفن را می‌گیرد.&lt;br /&gt;
# با &amp;lt;code&amp;gt;POST /api/v1/public/crm-chat/conversations/start&amp;lt;/code&amp;gt; مکالمه ساخته می‌شود و &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;visitor_token&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; + &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;conversation_id&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; برمی‌گردد.&lt;br /&gt;
# سپس بازدیدکننده می‌تواند با &amp;lt;code&amp;gt;POST /api/v1/public/crm-chat/messages&amp;lt;/code&amp;gt; پیام بفرستد و با &amp;lt;code&amp;gt;GET .../messages&amp;lt;/code&amp;gt; تاریخچه را بخواند.&lt;br /&gt;
# اختیاری: برای رویداد لحظه‌ای، WebSocket بازدیدکننده (پایین) با همان &amp;lt;code&amp;gt;visitor_token&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;conversation_id&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== CORS و مبدأ (Origin) ==&lt;br /&gt;
&lt;br /&gt;
* درخواست‌های عمومی از دامنهٔ سایت مشتری به API Hesabix می‌آیند؛ باید دامنهٔ API در &amp;lt;code&amp;gt;allow_origins&amp;lt;/code&amp;gt; تنظیمات CORS سرور Hesabix برای آن دامنه‌ها مجاز باشد (مثل سایر کلاینت‌های وب).&lt;br /&gt;
* برای هر &amp;#039;&amp;#039;&amp;#039;ویجت&amp;#039;&amp;#039;&amp;#039; می‌توان فهرست &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;allowed_origins&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (لیست hostname، مثل &amp;lt;code&amp;gt;example.com&amp;lt;/code&amp;gt;) ذخیره کرد. اگر خالی باشد، از نظر بک‌اند مبدأ بررسی نمی‌شود (پیشنهاد: در تولید حتماً محدود شود). سرور هدر &amp;lt;code&amp;gt;Origin&amp;lt;/code&amp;gt; یا در نبود آن &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; را برای تشخیص host استفاده می‌کند.&lt;br /&gt;
&lt;br /&gt;
== REST — عمومی (بدون &amp;lt;code&amp;gt;Authorization&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
پایهٔ مسیرها: همان host بک‌اند (مثلاً &amp;lt;code&amp;gt;https://api.example.com&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== شروع مکالمه ===&lt;br /&gt;
&amp;lt;code&amp;gt;POST /api/v1/public/crm-chat/conversations/start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
بدنهٔ JSON نمونه:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;public_key&amp;quot;: &amp;quot;&amp;lt;از پنل CRM پس از ساخت ویجت&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;first_name&amp;quot;: &amp;quot;علی&amp;quot;,&lt;br /&gt;
  &amp;quot;last_name&amp;quot;: &amp;quot;رضایی&amp;quot;,&lt;br /&gt;
  &amp;quot;email&amp;quot;: &amp;quot;ali@example.com&amp;quot;,&lt;br /&gt;
  &amp;quot;phone&amp;quot;: &amp;quot;09123456789&amp;quot;,&lt;br /&gt;
  &amp;quot;page_url&amp;quot;: &amp;quot;https://customer-site.com/contact&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;پاسخ موفق (داخل &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;conversation_id&amp;lt;/code&amp;gt; (integer)&lt;br /&gt;
* &amp;lt;code&amp;gt;visitor_token&amp;lt;/code&amp;gt; (رشتهٔ محرمانه؛ فقط برای همان مرورگر/نشست نگه دارید)&lt;br /&gt;
* &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ارسال پیام بازدیدکننده ===&lt;br /&gt;
&amp;lt;code&amp;gt;POST /api/v1/public/crm-chat/messages&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;visitor_token&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;conversation_id&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;body&amp;quot;: &amp;quot;سلام، سوال دارم&amp;quot;&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== لیست پیام‌ها (بازدیدکننده) ===&lt;br /&gt;
&amp;lt;code&amp;gt;GET /api/v1/public/crm-chat/conversations/{conversation_id}/messages?visitor_token=...&amp;amp;#x26;limit=100&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
خروجی: &amp;lt;code&amp;gt;{ &amp;amp;#x22;data&amp;amp;#x22;: { &amp;amp;#x22;items&amp;amp;#x22;: [ { &amp;amp;#x22;id&amp;amp;#x22;, &amp;amp;#x22;sender_role&amp;amp;#x22;, &amp;amp;#x22;body&amp;amp;#x22;, &amp;amp;#x22;created_at&amp;amp;#x22;, ... } ] } }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sender_role&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;visitor&amp;lt;/code&amp;gt; | &amp;lt;code&amp;gt;agent&amp;lt;/code&amp;gt; | &amp;lt;code&amp;gt;system&amp;lt;/code&amp;gt; (در حال حاضر عمدتاً visitor/agent).&lt;br /&gt;
&lt;br /&gt;
== REST — پنل CRM (با API key کاربر Hesabix) ==&lt;br /&gt;
همه با هدر:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Authorization: Bearer &amp;amp;#x3C;api_key&amp;amp;#x3E;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
و همان الگوی سایر APIها (مثلاً &amp;lt;code&amp;gt;X-Business-ID&amp;lt;/code&amp;gt; اگر در کلاینت شما لازم است).&lt;br /&gt;
&lt;br /&gt;
پایه: &amp;lt;code&amp;gt;/api/v1/crm/businesses/{business_id}/chat/...&amp;lt;/code&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; |متد&lt;br /&gt;
! width=&amp;quot;25%&amp;quot; |مسیر&lt;br /&gt;
! width=&amp;quot;54%&amp;quot; |مجوز تقریبی&lt;br /&gt;
|-&lt;br /&gt;
|GET&lt;br /&gt;
|&amp;lt;code&amp;gt;/widgets&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;crm&amp;lt;/code&amp;gt; + view&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|&amp;lt;code&amp;gt;/widgets&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;crm&amp;lt;/code&amp;gt; + write&lt;br /&gt;
|-&lt;br /&gt;
|PATCH&lt;br /&gt;
|&amp;lt;code&amp;gt;/widgets/{widget_id}&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;crm&amp;lt;/code&amp;gt; + write&lt;br /&gt;
|-&lt;br /&gt;
|GET&lt;br /&gt;
|&amp;lt;code&amp;gt;/conversations&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;crm&amp;lt;/code&amp;gt; + view&lt;br /&gt;
|-&lt;br /&gt;
|GET&lt;br /&gt;
|&amp;lt;code&amp;gt;/conversations/{id}/messages&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;crm&amp;lt;/code&amp;gt; + view&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|&amp;lt;code&amp;gt;/conversations/{id}/messages&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;crm&amp;lt;/code&amp;gt; + write (پاسخ عامل)&lt;br /&gt;
|-&lt;br /&gt;
|PATCH&lt;br /&gt;
|&amp;lt;code&amp;gt;/conversations/{id}&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;crm&amp;lt;/code&amp;gt; + write (وضعیت، assign، lead_id، person_id)&lt;br /&gt;
|}&lt;br /&gt;
فیلدهای ویجت مهم: &amp;lt;code&amp;gt;public_key&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;allowed_origins&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;is_active&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;settings&amp;lt;/code&amp;gt; (JSON اختیاری برای آیندهٔ UI).&lt;br /&gt;
&lt;br /&gt;
== WebSocket ==&lt;br /&gt;
مسیر: &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;/ws/crm-chat&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; (بدون پیشوند &amp;lt;code&amp;gt;/api/v1&amp;lt;/code&amp;gt;؛ همان الگوی &amp;lt;code&amp;gt;/ws/notifications&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
بلافاصله پس از اتصال TLS، &amp;#039;&amp;#039;&amp;#039;اولین فریم&amp;#039;&amp;#039;&amp;#039; باید JSON متنی باشد.&lt;br /&gt;
&lt;br /&gt;
=== احراز بازدیدکننده ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;auth&amp;quot;,&lt;br /&gt;
  &amp;quot;role&amp;quot;: &amp;quot;visitor&amp;quot;,&lt;br /&gt;
  &amp;quot;visitor_token&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
  &amp;quot;conversation_id&amp;quot;: 1&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;پاسخ موفق: &amp;lt;code&amp;gt;{ &amp;amp;#x22;type&amp;amp;#x22;: &amp;amp;#x22;auth_ok&amp;amp;#x22;, &amp;amp;#x22;role&amp;amp;#x22;: &amp;amp;#x22;visitor&amp;amp;#x22;, &amp;amp;#x22;conversation_id&amp;amp;#x22;: 1 }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
سپس سرور رویدادهای &amp;lt;code&amp;gt;crm_chat.event&amp;lt;/code&amp;gt; را برای همان مکالمه push می‌کند (مثلاً &amp;lt;code&amp;gt;message.created&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== احراز عامل CRM ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;auth&amp;quot;,&lt;br /&gt;
  &amp;quot;role&amp;quot;: &amp;quot;agent&amp;quot;,&lt;br /&gt;
  &amp;quot;api_key&amp;quot;: &amp;quot;&amp;lt;همان Bearer&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;business_id&amp;quot;: 123&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;پاسخ: &amp;lt;code&amp;gt;{ &amp;amp;#x22;type&amp;amp;#x22;: &amp;amp;#x22;auth_ok&amp;amp;#x22;, &amp;amp;#x22;role&amp;amp;#x22;: &amp;amp;#x22;agent&amp;amp;#x22;, &amp;amp;#x22;business_id&amp;amp;#x22;: 123 }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
برای دریافت پیام‌های یک ترد خاص، پس از &amp;lt;code&amp;gt;auth_ok&amp;lt;/code&amp;gt; برای هر مکالمه یک بار بفرستید:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{ &amp;quot;type&amp;quot;: &amp;quot;subscribe&amp;quot;, &amp;quot;conversation_id&amp;quot;: 1 }&amp;lt;/syntaxhighlight&amp;gt;قالب تقریبی رویداد:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;crm_chat.event&amp;quot;,&lt;br /&gt;
  &amp;quot;event&amp;quot;: &amp;quot;message.created&amp;quot;,&lt;br /&gt;
  &amp;quot;conversation_id&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;message&amp;quot;: { &amp;quot;id&amp;quot;, &amp;quot;conversation_id&amp;quot;, &amp;quot;sender_role&amp;quot;, &amp;quot;body&amp;quot;, &amp;quot;user_id&amp;quot;, &amp;quot;created_at&amp;quot; }&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;رویدادهای &amp;lt;code&amp;gt;conversation.started&amp;lt;/code&amp;gt; و &amp;lt;code&amp;gt;conversation.updated&amp;lt;/code&amp;gt; روی کانال کسب‌وکار نیز برای عامل‌های متصل broadcast می‌شوند.&lt;br /&gt;
&lt;br /&gt;
== ورک‌فلو (اتوماسیون) ==&lt;br /&gt;
تریگرهای ثبت‌شده (کلید برای نود Trigger در ویرایشگر ورک‌فلو):&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;crm.chat.conversation.started&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;crm.chat.message.received&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;crm.chat.message.sent&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;crm.chat.conversation.assigned&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;crm.chat.conversation.resolved&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;crm.chat.conversation.reopened&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
بدنهٔ &amp;lt;code&amp;gt;trigger_data&amp;lt;/code&amp;gt; معمولاً شامل &amp;lt;code&amp;gt;conversation_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;widget_id&amp;lt;/code&amp;gt; و برای پیام‌ها &amp;lt;code&amp;gt;message_id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sender_role&amp;lt;/code&amp;gt; است.&lt;br /&gt;
&lt;br /&gt;
== نمونهٔ حداقلی برای افزونهٔ وردپرس ==&lt;br /&gt;
&lt;br /&gt;
# در تنظیمات افزونه: &amp;lt;code&amp;gt;API_BASE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;public_key&amp;lt;/code&amp;gt; (و در صورت نیاز &amp;lt;code&amp;gt;business_id&amp;lt;/code&amp;gt; فقط برای ابزارهای داخلی، نه برای سایت عمومی).&lt;br /&gt;
# در فرانت سایت: فرم نام/نام‌خانوادگی/ایمیل/تلفن → &amp;lt;code&amp;gt;conversations/start&amp;lt;/code&amp;gt; → ذخیرهٔ &amp;lt;code&amp;gt;visitor_token&amp;lt;/code&amp;gt; در &amp;lt;code&amp;gt;sessionStorage&amp;lt;/code&amp;gt;.&lt;br /&gt;
# ارسال پیام‌ها با &amp;lt;code&amp;gt;POST .../messages&amp;lt;/code&amp;gt; و نمایش تاریخچه با &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt;.&lt;br /&gt;
# اختیاری: &amp;lt;code&amp;gt;new WebSocket(wsBase + &amp;#039;/ws/crm-chat&amp;#039;)&amp;lt;/code&amp;gt; و ارسال فریم &amp;lt;code&amp;gt;auth&amp;lt;/code&amp;gt; بازدیدکننده.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;public_key&amp;lt;/code&amp;gt; را هرگز در کد سرور وردپرس برای عملیات حساس به‌تنهایی کافی نکنید&amp;#039;&amp;#039;&amp;#039;؛ برای مدیریت ویجت فقط از توکن‌های ادمین وردپرس و درخواست سمت سرور استفاده کنید. روی سایت عمومی فقط &amp;lt;code&amp;gt;public_key&amp;lt;/code&amp;gt; (همان که در embed تعمداً عمومی است) کافی است.&lt;br /&gt;
&lt;br /&gt;
اگر اسکریپت ویجت را خودتان روی CDN بگذارید، آدرس آن می‌تواند بعداً فقط &amp;lt;code&amp;gt;public_key&amp;lt;/code&amp;gt; را به این APIها وصل کند؛ بک‌اند Hesabix فایل JS ویجت سرو نمی‌کند.&lt;br /&gt;
&lt;br /&gt;
== امنیت ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;visitor_token&amp;lt;/code&amp;gt; مانند نشست کوتاه برای همان مکالمه است؛ طولانی نگه ندارید و در لاگ‌های عمومی ننویسید.&lt;br /&gt;
* محدودیت نرخ (rate limit) در این نسخهٔ اولیه روی اندپوینت‌های عمومی به‌صورت سراسری به عهدهٔ فایروال/زیرساخت است؛ در صورت نیاز بعداً در اپلیکیشن اضافه می‌شود.&lt;br /&gt;
&lt;br /&gt;
----سؤالات یا تغییرات قرارداد API را می‌توان در کنار این سند نسخه‌گذاری کرد (مثلاً prefix &amp;lt;code&amp;gt;v2&amp;lt;/code&amp;gt; در آینده).&lt;/div&gt;</summary>
		<author><name>Alizadeh.babak</name></author>
	</entry>
</feed>