Zealy کی دستاویزات

خودکار ترجمہ · انگریزی میں پڑھیں

ویب ہکس

ویب ہک کنکشنز کے ساتھ Zealy کی صلاحیتوں کو بہتر بنائیں۔

بذریعہ louis, Fredrika, benjamin

ویب ہکس
اس صفحے پر

Zealy ویب ہک نو میں سے کسی کمیونٹی ایونٹ کے واقع ہونے پر آپ کے منتخب کردہ URL پر HTTP POST بھیجتا ہے، جن میں ممبر کا شامل ہونا، کوئسٹ کلیم کا کامیاب یا ناکام ہونا، اسپرنٹ کا آغاز، اور صارف کا بین ہونا شامل ہیں۔ ہر پے لوڈ میں ایونٹ آئی ڈی، قسم، ڈیٹا، ملی سیکنڈ ٹائم اسٹیمپ، اور وہ سیکرٹ ہوتا ہے جو درخواست کے اصلی ہونے کا ثبوت دیتا ہے۔

بنیادی باتیں

Zealy فراہم کرتا ہے ویب ہکس جو آپ کو ڈیٹا بننے یا اپ ڈیٹ ہونے پر HTTP پش نوٹیفکیشنز وصول کرنے کی اجازت دیتے ہیں۔ اس سے آپ Zealy کے اوپر انٹیگریشنز بنا سکتے ہیں۔ آپ CI بلڈز ٹرگر کر سکتے ہیں، کوئسٹ ڈیٹا پر حسابات کر سکتے ہیں، یا مخصوص شرائط پر پیغامات بھیج سکتے ہیں – جو آپ چاہیں۔

اپنے ویب ہکس سیٹ اپ کرنے کے لیے براہ کرم Settings > Integrations > Zapier & Webhooks پر جائیں۔

ویب ہک کیسے کام کرتا ہے؟

ویب ہک پش دراصل ایک HTTP POST درخواست ہے، جو آپ کے منتخب کردہ URL پر بھیجی جاتی ہے۔ ڈیٹا اپ ڈیٹ ہونے پر پش خود بخود ٹرگر ہوتی ہے۔ پے لوڈ میں کون سا ڈیٹا شامل ہوتا ہے کی مثال کے لیے دیکھیں ویب ہک پے لوڈ.

آپ کا ویب ہک کنزیومر ایک سادہ HTTP اینڈ پوائنٹ ہے۔ اسے درج ذیل شرائط پوری کرنی ہوں گی:

  • یہ عوامی طور پر قابل رسائی HTTPS، غیر لوکل ہوسٹ URL پر دستیاب ہو
  • یہ Zealy ویب ہک پش (HTTP POST درخواست) کا جواب HTTP 200 ("OK") کے ساتھ دے

اگر ڈیلیوری ناکام ہو (یعنی سرور دستیاب نہ ہو، جواب میں 5 سیکنڈ سے زیادہ وقت لگے، جواب کا باڈی 5000 بائٹس سے بڑا ہو یا غیر-200 HTTP اسٹیٹس کوڈ کے ساتھ جواب دے)، تو پش 15 بار دوبارہ بھیجی جائے گی۔ یہاں ایکسپونینشل بیک آف تاخیر استعمال ہوتی ہے: کوشش تقریباً 10 منٹ بعد، پھر 30 منٹ بعد، اور اسی طرح دوبارہ کی جائے گی۔ اگر ویب ہک URL غیر جوابدہ رہے تو Zealy ویب ہک کو غیر فعال کر سکتا ہے، اور اسے دوبارہ دستی طور پر فعال کرنا ہوگا۔

اس بات کو یقینی بنانے کے لیے کہ ویب ہک POST واقعی Zealy نے بنایا ہے، ہم ایک بے ترتیب سیکرٹ بناتے ہیں جو درخواست کے باڈی میں secret فیلڈ کے ساتھ منسلک ہوگا۔

ویب ہکس کے بارے میں مزید معلومات کے لیے، کئی اچھے ذرائع ہیں:

میں اسے کس لیے استعمال کر سکتا ہوں؟

  • Zapier کے ساتھ انٹیگریٹ کریں
  • حسب ضرورت انعامات کو خودکار بنائیں
  • جائزے کے منتظر کوئسٹس کی Telegram پر اطلاع دیں

اور بہت کچھ!

Zealy ویب ہکس کے ساتھ آغاز

  1. شناخت کریں کہ آپ کون سے ایونٹس کی نگرانی کرنا چاہتے ہیں۔
  2. ایونٹ ڈیٹا POST درخواستوں کو وصول کرنے کے لیے ویب ہک اینڈ پوائنٹ فنکشن تیار کریں۔
  3. Settings > Integrations > Zapier & Webhooks میں Webhooks Dashboard کا استعمال کرتے ہوئے اپنا اینڈ پوائنٹ Zealy میں رجسٹر کریں۔
  4. اپنے ویب ہک اینڈ پوائنٹ کو محفوظ بنائیں۔

ایک سادہ ویب ہک کنزیومر بنانا

آپ Netlify Functions جیسی چیز استعمال کرنے پر غور کر سکتے ہیں، جو سادہ HTTP(S) اینڈ پوائنٹس تعینات کرنے کا ایک آسان طریقہ فراہم کرتا ہے: https://www.netlify.com/blog/2018/09/13/how-to-run-express.js-apps-with-netlify-functions/.

// server.js
//
// Use this sample code to handle webhook events in your integration.
//
// 1) Paste this code into a new file (server.js)
//
// 2) Install dependencies
//   npm install express
//
// 3) Run the server on http://localhost:4242
//   node server.js
 
// The library needs to be configured with your account's secret key.
// Ensure the key is kept out of any version control system you might be using.
const express = require('express');
const app = express();
 
// This is your Zealy webhook secret for testing your endpoint locally.
const endpointSecret = '5888a6800dbac634e52d8504f097e064';
 
app.post('/webhook', express.raw({ type: 'application/json' }), (request, response) => {
  const payload = req.body;
  // Does createdAt make more sense than time?
  const { id, type, data, time, secret } = payload;
 
  if (secret === endpointSecret) {
    // Do something neat with the data received!
  }
 
  // Return a 200 response to acknowledge receipt of the event
  response.send();
});
 
app.listen(4242, () => console.log('Running on port 4242'));

سیٹنگز میں کنفیگر کرنا

Settings > Integrations > Webhooks میں ویب ہک اور اس کے زیر نگرانی ایونٹس سیٹ اپ کریں۔

ویب ہک پے لوڈ

ویب ہک HTTP پے لوڈ میں اس کے HTTP ہیڈرز اور اس کے درخواست باڈی دونوں میں معلومات شامل ہوں گی۔

پے لوڈ درج ذیل HTTP ہیڈرز کے ساتھ بھیجا جائے گا:

User-Agent: Zealy-Webhook
Content-Type: application/json; charset=utf-8
{
  id: string // unique ID for this event (UUID v4)
  type: "JOINED_COMMUNITY" | "LEFT_COMMUNITY" | "QUEST_SUCCEEDED" | "QUEST_CLAIMED" | "QUEST_FAILED" | "QUEST_CLAIM_STATUS_UPDATED" | "SPRINT_STARTED" | "SPRINT_ENDED" | "USER_BANNED", // event type
  data: EventData, // event data, see below
  time: number, // timestamp, in milliseconds
  secret: string, // secret generated when you created your webhook, used for checking origin
}

فی ایونٹ EventData فیلڈ:

// JOINED_COMMUNITY
type JoinedCommunityEventData = {
  community: WebhookCommunityPayload;
  user: WebhookUserPayload;
};
 
// LEFT_COMMUNITY
type LeftCommunityEventData = {
  community: WebhookCommunityPayload;
  user: WebhookUserPayload;
};
 
// QUEST_SUCCEEDED
type QuestSucceededEventData = {
  community: WebhookCommunityPayload;
  user: WebhookUserPayload;
  quest: WebhookQuestPayload;
  taskInputs?: Array<{
    taskId: string, // task ID (uuid v4)
    taskType: 'number' | 'date' | 'api' | 'text' | 'discord' | 'url' | 'telegram' | 'quiz' | 'invites' | 'visitLink' | 'file' | 'poll' | 'opinion' | 'twitterFollow' | 'twitterSpace' | 'tweetReact' | 'tweet',
    input: WebhookQuestTaskInputPayload,
  }>;
  status: 'success';
};
 
// QUEST_CLAIMED
type QuestClaimedEventData = {
  community: WebhookCommunityPayload;
  user: WebhookUserPayload;
  quest: WebhookQuestPayload;
  taskInputs?: Array<{
    taskId: string, // task ID (uuid v4)
    taskType: 'number' | 'date' | 'api' | 'text' | 'discord' | 'url' | 'telegram' | 'quiz' | 'invites' | 'visitLink' | 'file' | 'poll' | 'opinion' | 'twitterFollow' | 'twitterSpace' | 'tweetReact' | 'tweet',
    input: WebhookQuestTaskInputPayload,
  }>;
};
 
// QUEST_FAILED
type QuestFailedEventData = {
  community: WebhookCommunityPayload;
  user: WebhookUserPayload;
  quest: WebhookQuestPayload;
  taskInputs?: Array<{
    taskId: string, // task ID (uuid v4)
    taskType: 'number' | 'date' | 'api' | 'text' | 'discord' | 'url' | 'telegram' | 'quiz' | 'invites' | 'visitLink' | 'file' | 'poll' | 'opinion' | 'twitterFollow' | 'twitterSpace' | 'tweetReact' | 'tweet',
    input: WebhookQuestTaskInputPayload,
  }>;
};
 
// QUEST_CLAIM_STATUS_UPDATED
type QuestClaimStatusUpdatedEventData = {
  community: WebhookCommunityPayload;
  user: WebhookUserPayload;
  quest: WebhookQuestPayload;
  taskInputs?: Array<{
    taskId: string, // task ID (uuid v4)
    taskType: 'number' | 'date' | 'api' | 'text' | 'discord' | 'url' | 'telegram' | 'quiz' | 'invites' | 'visitLink' | 'file' | 'poll' | 'opinion' | 'twitterFollow' | 'twitterSpace' | 'tweetReact' | 'tweet',
    input: WebhookQuestTaskInputPayload,
  }>;
  status: 'success' | 'pending' | 'failed';
};
 
// SPRINT_STARTED
type SprintStartedEventData = {
  community: WebhookCommunityPayload;
  sprint: WebhookSprintPayload;
};
 
// SPRINT_ENDED
type SprintEndedEventData = {
  community: WebhookCommunityPayload;
  sprint: WebhookSprintPayload;
};
 
// USER_BANNED
type UserBannedEventData = {
  community: WebhookCommunityPayload;
  user: WebhookUserPayload;
};

عام ہستیاں:

type WebhookCommunityPayload = {
  id: string; // community ID (uuid V4)
  name: string; // community name
  subdomain: string; // community subdomain
  blockchain: string;
  discord: string | null; // discord URI of the community, e.g., https://discord.gg/zealy
  twitter: string | null; // twitter handle of the community, e.g., zealy_io
  website: string | null; // website URI of the community
};
type WebhookUserPayload = {
  id: string; // user ID (uuid V4)
  name: string | null; // user display name
  twitter: {
    id: string; // user twitter ID
    username: string | null; // user twitter handle
  } | null;
  discord: {
    id: string; // user discord ID
    handle: string | null; // user discord handle
  } | null;
  email: string | null; // user email
  addresses: Dict<string>; // key/value dictionary for wallets
  verifiedAddresses: Dict<string>; // key/value dictionary for all users verified wallets
};
type WebhookQuestPayload = {
  id: string; // quest ID (uuid V4)
  name: string; // quest display name
  categoryId: string; // category ID (uuid V4)
  categoryName: string | null; // category display name
  xp: number | null; // XP reward
  published: boolean | null; // true if quest is published, false otherwise
  autoValidate: boolean | null;
  tasks: TaskPayload[];
  lastReviewerId: string; // user ID (uuid V4)
};
type WebhookQuestTaskInputPayload =
 | { } // for task type 'visitLink', 'invites', 'discord', 'telegram', 'twitterFollow', 'twitterSpace'
 | { value: string } // for task type 'text', 'date', 'url', 'opinion'
 | { value: number } // for task type 'number'
 | { values: string[] } // for task type 'poll', 'quiz'
 | { fileUrls: string[] } // for task type 'fileUrls'
 | { tweetId?: string } // for task type 'tweetReact', 'tweet'
 | { requestId: string, statusCode: number } // for task type 'api'
type WebhookSprintPayload = {
  id: string; // sprint ID (uuid V4)
  startingAt: ISOString; // sprint starting date - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
  endingAt: ISOString; // sprint ending date
};

ویب ہکس کو محفوظ بنانا

ویب ہک بنانے سے ایک بے ترتیب سیکرٹ بنے گا جسے آپ تصدیق کے لیے استعمال کر سکتے ہیں کہ درخواست Zealy ویب ہکس سے آ رہی ہے۔ ویب ہک انسپکٹ پینل کے اوپر دائیں جانب سیکرٹ کاپی کریں اور تصدیق کریں کہ POST درخواست کے باڈی میں سیٹ سیکرٹ وہی ہے۔

اگر سیکرٹ لیک ہو جائے، تو آپ اسی صفحے سے اسے دوبارہ جنریٹ کر سکتے ہیں۔

ویب ہک انسپکٹ پینل جس میں Copy secret بٹن اور ایک کھلا مینو ہے جس میں Edit webhook، Disable، Trigger test event، Regenerate secret اور Delete webhook درج ہیں

ویب ہکس کی جانچ

ویب ہک کے انسپکٹ پینل سے آپ دستی طور پر ٹیسٹ ایونٹ ٹرگر کر سکتے ہیں۔ اوپر دائیں جانب بٹن پر کلک کریں اور ‘Send test event’ منتخب کریں۔ آپ زیر نگرانی ایونٹ اقسام میں سے ایک ایونٹ کی قسم منتخب کر سکیں گے۔ موک ڈیٹا کے ساتھ ایک ایونٹ ٹرگر ہوگا اور اسٹیٹس دکھایا جائے گا۔

ڈی بگنگ

اگر آپ Webhooks صفحے سے ویب ہک پر کلک کریں تو آپ ویب ہک کے ذریعے ٹرگر ہونے والے تمام ماضی کے ایونٹس کے لاگز دیکھ سکتے ہیں۔ اسٹیٹس کے مطابق فلٹر کر کے آپ لاگز کا استعمال کر سکتے ہیں تاکہ معلوم ہو سکے کہ کچھ غلط کیوں ہوا۔ ہر ایونٹ کے لیے، آپ موصول ہونے والا ایرر پیغام اور بھیجی گئی درخواست دیکھ سکتے ہیں۔

آپ اس صفحے سے کوئی بھی ایونٹ دوبارہ بھیج بھی سکتے ہیں۔

ویب ہک ایونٹ لاگ میں Join community ایونٹس کی فہرست ہے، جس میں ایک ایونٹ کی ڈیلیوری کوششیں، درخواست پے لوڈ اور ایرر جواب دکھایا گیا ہے

عمومی سوالات