پایتون
وب‌‌هوک

سرویس وب‌هوک

با استفاده از سرویس وب‌هوک، امکان دریافت اعلان‌های لحظه‌ای از رخدادهای مرتبط با حساب باسلام خود را خواهید داشت. ایجاد و مدیریت اشتراک‌های وب‌هوک، مدیریت انواع مختلف رخدادها، نظارت بر لاگ‌ها و وضعیت تحویل وب‌هوک و ایجاد و حذف کلاینت‌ها در وب‌هوک.

فهرست مطالب

متد‌های وب‌هوک

متدتوضیحاتپارامترها
get_webhook_services()دریافت سرویس‌های وب‌هوکNone
create_webhook_service()ایجاد یک سرویس وب‌هوک جدیدrequest
get_webhooks()دریافت لیست وب‌هوک‌هاservice_id، event_ids
create_webhook()ایجاد یک وب‌هوک جدیدrequest
update_webhook()به‌روزرسانی یک وب‌هوکwebhook_id، request
delete_webhook()حذف یک وب‌هوکwebhook_id
get_webhook_events()دریافت رویدادهای قابل استفادهNone
get_webhook_customers()دریافت مشتریان متصل به وب‌هوکpage، per_page، webhook_id
get_webhook_logs()دریافت لاگ‌های یک وب‌هوکwebhook_id
register_webhook()ثبت مشتری در یک وب‌هوکrequest
unregister_webhook()لغو ثبت مشتری از یک وب‌هوکrequest
get_registered_webhooks()دریافت وب‌هوک‌هایی که مشتری در آن‌ها ثبت شده استpage، per_page، service_id

مثال‌ها

پیکربندی اولیه

from basalam_sdk import BasalamClient, PersonalToken
 
auth = PersonalToken(
    token="your_access_token",
    refresh_token="your_refresh_token"
)
client = BasalamClient(auth=auth)

دریافت سرویس‌های وب‌هوک

async def get_webhook_services_example():
    services = await client.get_webhook_services()
    
    return services

ایجاد سرویس وب‌هوک

from basalam_sdk.webhook.models import CreateServiceRequest
 
async def create_webhook_service_example():
    service = await client.create_webhook_service(
        request=CreateServiceRequest(
            title="My Webhook Service",
            description="Service for handling order notifications"
        )
    )
    
    return service

دریافت وب‌هوک‌ها

async def get_webhooks_example():
    webhooks = await client.get_webhooks(
        service_id=1,
        event_ids="1,2,3"
    )
    
    return webhooks

ایجاد وب‌هوک

from basalam_sdk.webhook.models import CreateWebhookRequest
 
async def create_webhook_example():
    webhook = await client.create_webhook(
        request=CreateWebhookRequest(
            service_id=1,
            event_ids=[1, 2],
            request_headers="Content-Type: application/json",
            request_method=RequestMethodType.POST,  # Enum: POST, PUT, PATCH
            url="https://your-app.com/webhook",
            is_active=True
        )
    )
 
    return webhook

به‌روزرسانی وب‌هوک

from basalam_sdk.webhook.models import UpdateWebhookRequest
 
async def update_webhook_example():
    updated_webhook = await client.update_webhook(
        webhook_id=123,
        request=UpdateWebhookRequest(
            event_ids=[1, 2, 3],
            request_headers="Content-Type: application/json",
            request_method=RequestMethodType.POST,
            url="https://your-app.com/webhook",
            is_active=False
        )
    )
 
    return updated_webhook

حذف وب‌هوک

async def delete_webhook_example():
    result = await client.delete_webhook(webhook_id=123)
    
    return result

دریافت رخدادهای وب‌هوک

async def get_webhook_events_example():
    events = await client.get_webhook_events()
    
    return events

نمونه پاسخ

EventListResource(
  data=[
    EventResource(
      id=1, 
      name='CHAT_RECEIVED_MESSAGE', 
      description='پیام دریافتی گفتگوی باسلام', 
      sample_data={
        'id': 0,
        'chat_id': 0, 
        'message': {
          'text': 'string',
          'files': [
            {'id': 0, 'url': 'string', 'width': 0, 'height': 0}
          ],
          'links': {},
          'entity_id': 0
        }, 
        'seen_at': None, 
        'sender_id': 0, 
        'created_at': 'string', 
        'updated_at': 'string', 
        'message_type': MessageTypeEnum.TEXT, 
        'message_source': None
      }, 
        scopes='customer.chat.read'
      )
    ], 
  result_count=9, 
  total_count=None, 
  total_page=None, 
  page=1, 
  per_page=10
)

برای مطالعه دسترسی موردنیاز برای هر نوع رخداد به این سند مراجعه کنید.

دریافت مشتریان وب‌هوک

async def get_webhook_customers_example():
    customers = await client.get_webhook_customers(
        page=1,
        per_page=10,
        webhook_id=123
    )
    
    return customers

دریافت لاگ‌های وب‌هوک

async def get_webhook_logs_example():
    logs = await client.get_webhook_logs(webhook_id=123)
    
    return logs

عضویت کاربر در وب‌هوک

from basalam_sdk.webhook.models import RegisterClientRequest
 
async def register_webhook_example():
    result = await client.register_webhook(
        request=RegisterClientRequest(
            webhook_id=123
        )
    )
 
    return result

لغو عضویت کاربر از وب‌هوک

from basalam_sdk.webhook.models import UnRegisterClientRequest
 
async def unregister_webhook_example():
    result = await client.unregister_webhook(
        request=UnRegisterClientRequest(
            webhook_id=123,
            customer_id=456
        )
    )
    
    return result

دریافت وب‌هوک‌های عضوشده

async def get_registered_webhooks_example():
    webhooks = await client.get_registered_webhooks(
        page=1,
        per_page=10,
        service_id=1
    )
    
    return webhooks