پرش به مطلب اصلی

دریافت رویدادها در لحظه

برای مطلع شدن در لحظه از اتفاقاتی که در دیوار رخ می‌دهد می‌توانید از این سرویس استفاده کنید. دقت کنید که سرویس، نسخه‌ی آزمایشی هست و ممکن است در آینده دچار تغییرات Backward incompatible شود.

برای مطلع شدن از یک رویداد، ابتدا باید درخواستی برای گوش دادن به آن ارسال کنید. در صورت موفق بودن این درخواست، تا زمان معتبر بودن دسترسی شما به آن رویداد، هر زمانی که آن رویداد رخ دهد، کنار برنامه‌ی شما را از طریق یک درخواست HTTP (Webhook) مطلع می‌کند.

دقت کنید که برای دریافت رویدادها باید برای برنامه‌ی خود یک آدرس دریافت رویداد‌های معتبر ست کنید.

درخواست گوش دادن به یک رویداد

برای ارسال این درخواست برنامه‌ی شما باید دسترسی EVENTS_REGISTER_SUBSCRIPTION را داشته باشد. دقت کنید که این یک دسترسی OAuth نیست، بلکه این دسترسی بر روی کلید API شما تعریف می‌شود.

همچنین برای گوش دادن به هر نوع رویداد، دسترسی Oauth متناظر با آن نیز باید در توکن همراه درخواست گوش دادن به آن وجود داشته باشد.

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

انواع رویداد‌ها

نوع رویداددسترسی Oauth متناظرتوضیحات
NEW_MESSAGE_ON_POSTCHAT_POST_CONVERSATIONS_READ.{{post_token}}مطلع شدن از پیام‌های جدید بر روی چت یک آگهی. فقط برای آگهی گذار
NEW_MESSAGE_ON_POSTCHAT_SUPPLIER_ALL_CONVERSATIONS_READمطلع شدن از پیام‌های جدید بر روی تمام چت‌های تمام آگهی‌های یک فرد. فقط برای چت های مربوط به آگهی گذار
NEW_CHATBOT_MESSAGE-مطلع شدن از پیام جدید کاربران به چت بات
USER_ACCESS_REVOCATIONNOTIFICATION_ACCESS_REVOCATION و USER_IDمطلع شدن از حذف شدن دسترسی‌های برنامه توسط کاربر
POST_UPDATEUSER_POSTS_GETمطلع شدن از تغییرات آگهی‌ منتشر شده و آگهی در جریان

درخواست

پارامترنوعتوضیحات
event_typestringیک نوع رویداد معتبر. برای مثال NEW_MESSAGE_ON_POST
event_resource_idstringشناسهٔ چیزی که می خواهید از رویداد آن باخبر شوید و نوعش رو در بالا گفتید. اگر ارسال نشود همهٔ موارد در نظر گرفته می شود. مثلاً می توانید با ارسال توکن آگهی پیام های جدید یک آگهی را دریافت کنید و بدون ارسال آن پیام های جدید همهٔ آگهی را دریافت می کنید.
POST https://api.divar.ir/v1/open-platform/events/subscriptions
Content-Type: application/json
x-api-key: {{apikey}}
x-access-token: {{access_token}}

{
"event_type": "NEW_MESSAGE_ON_POST",
"event_resource_id": "gZd7omnS",
"metadata": {
"key": "value"
}
}

درخواست ارسالی از سمت کنار دیوار

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

POST https://{{new_events_url}}
Authorization: {{identification_key}}
Content-Type: application/json

{
"type": "NEW_MESSAGE",
"metadata": {
"key": "value"
},
"new_message": {
"id": "e7a08a2c-8ee4-11ef-af85-4e9e9bfa3c12",
"conversation": {
"id": "edbb9499-cccc-4d35-b21f-621fa95f2b3e",
"type": "POST",
"post_token": "gZd7omnS"
},
"sender": {
"side": "SELLER",
"type": "BOT"
},
"type": "TEXT",
"sent_at": 1729429926140000,
"text": "Hello!"
}
}

درخواست رویداد جدید (ارسالی از سمت دیوار)

پارامترنوعتوضیحات
typeEventTypeنوع رویداد، برای مثال NEW_MESSAGE
new_messageOptional[ChatMessage]پیام جدید. در صورتی که نوع رویداد NEW_MESSAGE باشد
new_chatbot_messageOptional[ChatMessage]پیام جدید. در صورتی که نوع رویداد NEW_CHATBOT_MESSAGE باشد
user_access_revocationOptional[UserAccessRevocation]حذف دسترسی برنامه توسط کاربر. در صورتی که نوع رویداد USER_ACCESS_REVOCATION باشد
post_updateOptional[PostUpdate]تغییر آگهی منتشر شده یا در جریان. در صورتی که نوع رویداد POST_UPDATE باشد
metadataOptional[Object]دیتای دلخواه از سمت برنامه‌ی شما.

رویدادها

رویدادتوضیحات
NEW_MESSAGEپیام جدید در چت
NEW_CHATBOT_MESSAGEپیام جدید در چت بات
USER_ACCESS_REVOCATIONحذف دسترسی برنامه توسط کاربر
POST_UPDATEتغییر آگهی