Metabase

وب‌هوک‌ها

مدیران و افرادی که دسترسی به تنظیمات دارند می‌توانند وب‌هوک‌ها را طوری تنظیم کنند که هشدارها را به یک URL مشخص ارسال کنند. یعنی می‌توانید هشدار را طوری پیکربندی کنید که نتیجهٔ یک پرسش را به هر اندپوینتی که خواستید بفرستد؛ چه اپلیکیشن خودتان باشد، چه سرویس‌های ثالث یا هر مقصد دیگری.

فقط مدیران و افراد دارای دسترسی تنظیمات می‌توانند هشدارها را به وب‌هوک‌ها ارسال کنند.

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

ساخت وب‌هوک

قبل از این‌که بتوانید هشدار را به وب‌هوک بفرستید، یک مدیر باید وب‌هوک موردنظر را ایجاد کند.

مدیران و کسانی که دسترسی به تنظیمات دارند می‌توانند با کلیک روی آیکون چرخ‌دنده > Admin settings > Notification channels یک وب‌هوک بسازند. در بخش Webhooks for alerts روی + Add another کلیک کنید. متابیس فرمی کوتاه نمایش می‌دهد:

  • Webhook URL: مسیری که می‌خواهید متابیس نتایج هشدار را به آن بفرستد؛ باید یک URL معتبر باشد.
  • Give it a name: نامی برای وب‌هوک بگذارید تا هنگام تنظیم هشدار، کاربران بتوانند وب‌هوک درست را انتخاب کنند.
  • Description: توضیح کوتاهی دربارهٔ کاربرد این وب‌هوک.
  • Authentication method: روش احراز هویت؛ توضیح در بخش بعد.

روش احراز هویت وب‌هوک

می‌توانید روش احراز هویت وب‌هوک را مشخص کنید:

  • None: بدون احراز هویت.
  • Basic: تنظیم نام کاربری و گذرواژه.
  • Bearer: افزودن توکن محرمانه.
  • API key: افزودن کلید API در Header یا به‌صورت Query param؛ در هر دو حالت باید نام کلید و مقدار آن (خود API key) را مشخص کنید.

محتوای ارسالی وب‌هوک (Payload)

متابیس نتایج هشدار را در قالب JSON ارسال می‌کند. این JSON حاوی بخشی از متادیتای پرسش است، مثل سازندهٔ هشدار و شناسهٔ آن (برای هشدارهای تستی، null خواهد بود).

متابیس نمودار «پیوست‌شده» را به‌صورت یک PNG رمزگذاری‌شدهٔ base64 در کلید data و زیرکلید visualization می‌فرستد.

The encoded PNG chart

همچنین داده‌ها را همان‌طور که در نمای جدول می‌بینید، در فیلد raw_data ارسال می‌کند.

Results as table view

در زیر، نمونه‌ای از Payload یک هشدار را می‌بینید (کدگذاری PNG به‌دلیل طولانی‌بودن کوتاه شده است):

{
  "type": "alert",
  "alert_id": null,
  "alert_creator_id": 2666,
  "alert_creator_name": "Roberto Bolaño",
  "data": {
    "type": "question",
    "question_id": 108,
    "question_name": "Sales",
    "question_url": "https://example.com/question/108",
    "visualization": "data:image/png;base64,=...LONG_ENCODED_PNG_HERE...",
    "raw_data": {
      "cols": [
        "CREATED_AT",
        "count"
      ],
      "rows": [
        [
          "2023-09-01T00:00:00Z",
          346
        ],
        [
          "2023-10-01T00:00:00Z",
          354
        ],
        [
          "2023-11-01T00:00:00Z",
          394
        ],
        [
          "2023-12-01T00:00:00Z",
          418
        ],
        [
          "2024-01-01T00:00:00Z",
          457
        ],
        [
          "2024-02-01T00:00:00Z",
          404
        ],
        [
          "2024-03-01T00:00:00Z",
          445
        ],
        [
          "2024-04-01T00:00:00Z",
          439
        ],
        [
          "2024-05-01T00:00:00Z",
          520
        ],
        [
          "2024-06-01T00:00:00Z",
          455
        ],
        [
          "2024-07-01T00:00:00Z",
          523
        ],
        [
          "2024-08-01T00:00:00Z",
          501
        ]
      ]
    }
  },
  "sent_at": "2024-09-30T20:16:15.76582Z"
}

مطالعهٔ بیشتر