به گفتوگوها
قابلیت اضافه کنید.
از اولین پیام تا یک تجربه تعاملی کامل. ربات بسازید، با اعضای خود گفتوگو کنید و متن، رسانه و کارتهای کاربردی بفرستید.
ارسال فقط پس از Start همان ربات
مقصد پیام با chat_id
فایل، کارت و دکمه در یک API
اولین پیام در سه قدم
- ۱
ربات بسازید و توکن بگیرید
از مدیربات داخل برنامه، ربات خود را بسازید. توکن را تنها روی سرور خود نگه دارید و در درخواستها با
Authorization: Bearerبفرستید. - ۲
کاربر ربات شما را شروع کند
کاربر صفحه ربات را باز میکند و «شروع» را میزند. از رویداد عضویت یا پیام او،
chat_idرا بگیرید. عضویت برای هر ربات مستقل است. - ۳
به همان شناسه پیام بفرستید
متد
sendMessageرا صدا بزنید وmessage_idپاسخ را برای ویرایش یا حذف بعدی ذخیره کنید.
آدرس عمومی API برابر https://bots.vispaco.net/v2/ است. توکن ربات و شناسه گفتوگوی واقعی خود را در مثالها بگذارید؛ توکن را فقط روی سرور نگه دارید.
درخواست و احراز هویت
نام متد را در مسیر https://bots.vispaco.net/v2/<method> مشخص کنید. درخواستها با HTTPS و متد POST فرستاده میشوند؛ بدنه معمولاً JSON است. آپلود فایل از multipart/form-data استفاده میکند.
POST https://bots.vispaco.net/v2/sendMessage
Authorization: Bearer YOUR_BOT_TOKEN
Content-Type: application/jsonپاسخ موفق دارای ok: true و result است. خطا دارای ok: false، error_code و description است. error_code یک شناسه متنی است؛ کد HTTP پاسخ را هم بررسی کنید.
{
"ok": true,
"result": { "message_id": 42 }
}{
"ok": false,
"error_code": "BOT_NOT_STARTED",
"description": "User must start this bot before receiving messages"
}جلوگیری از ارسال تکراری
برای درخواستهای قابل تکرار، هدر Idempotency-Key با ۱ تا ۱۲۸ حرف لاتین، رقم یا کاراکترهای ._:- بفرستید. هنگام تکرار همان درخواست پس از قطع ارتباط، همان کلید و همان بدنه را نگه دارید. استفاده از همان کلید با متد یا بدنه متفاوت، خطای IDEMPOTENCY_CONFLICT با HTTP 409 میدهد. برای عملیات جدید کلید جدید بسازید.
شناسه گفتوگو و عضویت
chat_id شناسه متنی پایدار و غیرقابلحدس کاربر است؛ شماره تلفن، نام کاربری یا شناسه عددی داخلی را به جای آن نفرستید. داشتن این شناسه بهتنهایی مجوز ارسال نیست.
Stop یا مسدودکردن ربات، ارسال را متوقف میکند. ارسال انبوه هم وضعیت هر عضو را در زمان پردازش بررسی میکند. ربات فقط به گفتوگوها و فایلهای مجاز خودش دسترسی دارد.
دریافت رویدادها
از polling یا وبهوک برای دریافت پیام و تعامل کاربر استفاده کنید. update_id را ذخیره و پردازش رویداد را در برنامه خود نسبت به تکرار مقاوم کنید. برای polling، پس از پردازش آخرین رویداد، offset را برابر update_id + 1 بفرستید؛ رویدادهای کوچکتر تأیید میشوند. جزئیات در مرجع متدها آمده است.
پس از ثبت موفق رویداد در برنامه خود، آن را تأیید کنید. پاسخ موفق وبهوک فقط زمانی برگردد که رویداد را پذیرفتهاید.
فایل امن، توکن محرمانه
فایل را از مسیر uploadFile بارگذاری کنید و file_id پاسخ را در متدهای رسانه استفاده کنید. آدرس دلخواه اینترنتی بهعنوان فایل پذیرفته نمیشود.
- نوع واقعی فایل، اندازه و نوع رسانه باید از محدودیتهای سرور عبور کنند؛ نام و پسوند فایل معیار اعتماد نیستند.
- فایل پیش از قابلاستفادهشدن اسکن میشود. نبود اسکنر یا خطای آن باعث رد آپلود میشود. عکسها دوباره کدگذاری، صوت و ویدئو تبدیل، و PDF پاکسازی میشود.
- توکن ربات را در JavaScript مرورگر، مخزن کد، نشانی URL یا گزارشها قرار ندهید. در صورت افشا، آن را تعویض کنید.
- دریافت فایل از مسیر محافظتشده API انجام میشود؛ مسیر خصوصی فایل را منتشر نکنید.
برای رفتار دقیق نصب خود، تنظیمات فعال اسکنر و سقف حجم را از مدیر سامانه بگیرید. محدودیتهای متدها در ادامه درج شدهاند.
هر کار، یک متد روشن
پارامترها، نمونه درخواست و رفتار هر متد را اینجا ببینید.
در حال بارگذاری مرجع متدها…
خطا و تلاش مجدد
سقف پیشفرض هر ربات ۶۰ درخواست API در ثانیه، ۲۰ ارسال در ثانیه (شامل ارسال انبوه)، ۱۰ آپلود در دقیقه و ۱۰ ساخت ارسال انبوه در دقیقه است. مدیر نصب میتواند این سقفها را تغییر دهد. پاسخ RATE_LIMITED با HTTP 429 شامل parameters.retry_after به ثانیه است؛ پیش از تلاش بعدی صبر کنید.
| HTTP | معنا | اقدام |
|---|---|---|
400 | پارامتر یا فایل نامعتبر | ورودی و error_code پاسخ را بررسی کنید. |
401 | توکن نامعتبر | توکن فعال و هدر احراز هویت را بررسی کنید. |
403 | دسترسی یا عضویت نامعتبر | کاربر باید همین ربات را Start کرده باشد. |
404 | منبع در دسترس نیست | شناسه و مالکیت پیام یا فایل را بررسی کنید. |
409 | تداخل وضعیت | حالت دریافت رویداد یا درخواست تکراری را بررسی کنید. |
413 | حجم درخواست بیش از حد | بدنه JSON را کوچکتر بفرستید. |
429 | محدودیت درخواست | بهاندازه retry_after صبر کنید. |
503 | سرویس یا بررسی امنیتی در دسترس نیست | وضعیت فعالسازی، اسکنر و ابزارهای رسانه را بررسی کنید. |
5xx | خطای سرور | با فاصله افزایشی و جلوگیری از ارسال تکراری دوباره تلاش کنید. |