تنظیمات ربات
هر ربات همان تنظیماتی را دارد که مشتری شما در پنل پارسچت میبیند: گفتگوی بیفعالیت کی بسته شود، وقتی یک نفر گفتگو را به دست میگیرد به مشتری چه گفته شود، ساعت کاری تیم، و هوش مصنوعی چطور پاسخ دهد. این تنظیمات را در هر پاسخی که ربات در آن هست میخوانید و هر کدام را با یک درخواست تغییر میدهید:
پاسخ، کل ربات است با همهٔ تنظیماتش به همان شکلی که اکنون هست.
خواندن تنظیمات
settings در هر رباتی که دریافت میکنید هست: GET /robots/{robot_id}، هر مورد از GET /robots، و
پاسخهای POST /robots و PATCH /robots/{robot_id}.
رباتی که هیچ تنظیمی را تغییر نداده، مقداری را نشان میدهد که واقعاً اعمال میشود، نه یک مقدار
نمایشی. برای بستن خودکار گفتگو این همان قاعدهٔ امروز است: {"enabled": true, "idle_minutes": 10080}،
یعنی یک هفته.
settings.ai و settings.ai_operator برای حسابی که بستهٔ پیام هوش مصنوعی ندارد null هستند. این
دو به بستهای نیاز دارند که پیام هوش مصنوعی داشته باشد. بستهای که پیامهای این دورهاش تمام شده هم
حساب میشود: تنظیمات با کم شدن موجودی قفل و باز نمیشوند.
تغییر تنظیمات
PATCH /robots/{robot_id} هر زیرمجموعهای از این فیلدها را میپذیرد:
name،external_id،description،is_activesettings.conversations،settings.ai،settings.ai_operator
همین شیء settings هنگام ساختن ربات با POST /robots هم پذیرفته میشود؛ هر چیزی را که نفرستید
مقدار پیشفرض میگیرد.
فقط چیزی که میفرستید تغییر میکند و شیءهای تودرتو با هم ادغام میشوند. فرستادن
{"settings": {"conversations": {"auto_close": {"idle_minutes": 720}}}} مقدار enabled را همانطور
که بود نگه میدارد. شیء days در ساعت کاری فقط روزهایی را تغییر میدهد که نام میبرد.
چهار قاعده برای هر درخواست برقرار است:
- همه یا هیچ. اگر بخشی از درخواست رد شود، هیچ چیز از آن ذخیره نمیشود، حتی بخشهای درست.
- فیلد ناشناخته با
422رد میشود و هرگز نادیده گرفته نمیشود، تا فیلدی که اشتباه تایپ شده بهجای ذخیرهشده پذیرفته نشود. nullفقط برایexternal_idوdescriptionپذیرفته میشود و آنها را پاک میکند. جای دیگر422است: برای نگه داشتن یک فیلد، آن را نفرستید.- بدنهٔ خالی
{}چیزی را تغییر نمیدهد و ربات را برمیگرداند.
این درخواست به مجوز robot:create روی کلید شما نیاز دارد، همان مجوزی که ربات میسازد و حذف میکند.
گفتگوها
گفتگو کی بسته میشود
گفتگویی که به اندازهٔ idle_minutes ربات پیامی نداشته باشد بسته میشود و رویداد chat با
status: "closed" دریافت میکنید. بستن هر ساعت یک بار انجام میشود، پس یک گفتگو تا حدود یک ساعت پس
از رسیدن به حدش بسته میشود.
enabled: falseبه معنای «هرگز» نیست. گفتگو باز هم پس از ۱۵ روز (۲۱۶۰۰ دقیقه) بدون پیام بسته میشود.idle_minutesنگه داشته میشود، پس با روشن کردن دوبارهٔ بستن خودکار همان مقدار برمیگردد.- مشتریای که دوباره پیام بدهد، همان گفتگو را باز میکند: همان
conversation_id، وضعیتnot_answered، یک رویدادchatدیگر، و هوش مصنوعی با زمینهٔ تازه شروع میکند. - این تنظیم همهٔ کانالهایی را که پارسچت برای ربات اداره میکند پوشش میدهد: اینستاگرام، تلگرام، واتساپ، گپ، ابزارک (ویجت) وبسایت و Direct API. گفتگوهای گفتینو و کریسپ از چرخهٔ عمر خود آن سرویسها پیروی میکنند.
آنچه به مشتریِ منتظرِ اپراتور گفته میشود
هر ربات سه پیام دارد. هر کدام در هر گفتگو حداکثر یک بار فرستاده میشود.
operator_handoverدر همهٔ کانالها فرستاده میشود، گفتینو و کریسپ هم. فقط وقتی فرستاده میشود که هوش مصنوعی در حال پاسخ دادن بوده است: گفتگویی که هوش مصنوعی به آن پاسخ نداده (مثلاً وقتی پیامهای هوش مصنوعی شما تمام شده) «سپرده» نمیشود و پیامoperator_handoverنمیگیرد.offlineوbusyدر اینستاگرام، تلگرام، واتساپ، گپ و ابزارک وبسایت فرستاده میشوند. گفتینو و کریسپ تنظیمات خودشان را برای اینها دارند، پس آنجا فرستاده نمیشوند.- مشتریِ منتظر کسی است که هوش مصنوعی به پیامش پاسخ نمیدهد: گفتگو با تیم شماست، هوش مصنوعی خاموش است،
یا در این زمان پاسخ نمیدهد (
ai_operator.availability). - وقتی هوش مصنوعی پس از
wait_minutesپاسخ میدهد (start_mode: "if_operator_not_respond")، پاسخ هوش مصنوعی جایbusyرا میگیرد. - پیامی که روشن است متن لازم دارد:
send_message: trueباmessageخالی با422رد میشود.
هوش مصنوعی
به بستهٔ پیام هوش مصنوعی نیاز دارد.
topic همان معرفی بات در پنل است. از پیام بعدی مشتری اعمال میشود: چیزی دوباره آموزش داده
نمیشود و کاراکتری مصرف نمیشود. ۵ کاراکتر یا کمتر یعنی خالی.
اپراتور هوش مصنوعی
به بستهٔ پیام هوش مصنوعی نیاز دارد.
غیرفعال کردن ربات
{"is_active": false} همان کلید فعالسازی پنل است و توقف موقت نیست:
- همهٔ کانالهای ربات خاموش میشوند (
is_active: falseروی هر کانال) و ظرفیت کانالشان آزاد میشود. فقط کانالهای فعال در بستهٔ شما حساب میشوند. - ربات جای خودش را در ظرفیت رباتها نگه میدارد: ظرفیت ربات همهٔ رباتهای موجود را میشمارد. برای آزاد کردن آن، ربات را حذف کنید.
{"is_active": true}ربات را دوباره فعال میکند اما کانالهایش را خاموش نگه میدارد. هر کانال را باPATCH /robots/{robot_id}/channels/{channel_id}دوباره روشن کنید که ظرفیت کانال را مثل همیشه بررسی میکند.
برای اینکه فقط هوش مصنوعی پاسخ ندهد و کانالها روشن بمانند، settings.ai_operator.enabled را false
کنید.
آنچه در این API نیست
- دستورالعمل اختصاصی (پرامپت). پرامپت ربات فقط از راه دستیار پرامپت پنل تغییر میکند: هوش مصنوعی
درخواست را بازنویسی میکند، بخشهایی را که نپذیرفته گزارش میدهد و مشتری شما نتیجه را تأیید میکند.
این فیلدی نیست که اینجا تنظیم شود:
settings.ai.instructionsبهعنوان فیلد ناشناخته رد میشود. - تصویر اپراتور هوش مصنوعی، که بارگذاری فایل است.
- کنترلهای بسته، مثل محدودیت پیام. اینها را پارسچت تنظیم میکند.
نمونهها
فقط تغییر بازهٔ بستن خودکار
200، کل ربات، با "auto_close": {"enabled": true, "idle_minutes": 720, "max_idle_minutes": 21600}.
خاموش کردن بستن خودکار
200، با "auto_close": {"enabled": false, "idle_minutes": 720, "max_idle_minutes": 21600}. اکنون
گفتگوها پس از ۱۵ روز بدون پیام بسته میشوند.
چند تنظیم با هم
200. جمعه اکنون از ۱۰:۰۰ تا ۱۴:۰۰ باز است و شش روز دیگر تغییری نکردهاند. هوش مصنوعی فقط بیرون از
ساعت کاری و پس از ۵ دقیقه بیپاسخ ماندن از سوی اپراتور پاسخ میدهد، و به مشتریای که به یک نفر سپرده
میشود «Connecting you to a person.» گفته میشود.
به مشتریِ منتظر بگو تیم آفلاین یا مشغول است
200. مشتریای که بیرون از ساعت کاری منتظر است پیام آفلاین را میگیرد؛ کسی که در ساعت کاری دو دقیقه بیپاسخ
منتظر بماند، پیام مشغول را با متن پیشفرض پارسچت میگیرد.
تغییر topic
200، با topic تازه که از پیام بعدی مشتری اعمال میشود. "topic": "" آن را حذف میکند.
پاک کردن شناسهٔ خودتان و توضیحات
200، با "external_id": null و "description": null.
ساختن ربات با تنظیمات
201، کل ربات، با مقدار پیشفرض برای هر تنظیمی که نفرستادهاید.
وقتی تغییری رد میشود
هیچ چیز از درخواستِ ردشده ذخیره نمیشود.
همین 422 برای creativity: 150، wait_minutes: 0، "start": "25:00"، بازهای که start آن پیش از
end نباشد، منطقهٔ زمانی ناشناخته، language: "french" و display_name: "" هم برمیگردد. پیام، فیلد را
با مسیرش نام میبرد؛ بر اساس error.code تصمیم بگیرید، نه متن پیام که ممکن است تغییر کند.