Zoom کنیکٹر

میٹنگ شرکاء اور ویبینار حاضرین کو خودکار طور پر رابطوں کے طور پر سنک کرنے، میٹنگ کے بعد فالو اپ سلسلے ٹرگر کرنے، اور اپنے مارکیٹنگ آٹومیشنز کے لیے engagement میٹرکس ٹریک کرنے کے لیے Tajo کے ذریعے Zoom کو Brevo سے منسلک کریں۔

جائزہ

خاصیتقدر
پلیٹ فارمZoom
زمرہویڈیو کانفرنسنگ (کسٹم)
سیٹ اپ کی پیچیدگیدرمیانی
آفیشل انٹیگریشننہیں
سنک شدہ ڈیٹاشرکاء، ایونٹس، ویبینارز، رابطے
تصدیق کا طریقہOAuth 2.0 / Server-to-Server OAuth

خصوصیات

  • شریک سنک - میٹنگ شرکاء سے Brevo رابطے خودکار بنائیں
  • ویبینار حاضرین capture - ویبینار رجسٹرینٹس اور حاضرین کو سنک کریں
  • میٹنگ ایونٹ ٹرگرز - میٹنگ شروع، ختم، اور ریکارڈنگ ایونٹس پر آٹومیشنز فائر کریں
  • Engagement ٹریکنگ - حاضری دورانیہ اور شرکت میٹرکس ٹریک کریں
  • ویبینار فالو اپ - ویبینار حاضری کی بنیاد پر ٹارگٹڈ ای میل سلسلے ٹرگر کریں
  • ریکارڈنگ نوٹیفکیشنز - Brevo ای میل مہمات کے ذریعے ریکارڈنگ لنکس بھیجیں

شرائط

شروع کرنے سے پہلے، یقینی بنائیں کہ آپ کے پاس ہے:

  1. Zoom اکاؤنٹ (Pro plan یا اس سے اوپر)
  2. Zoom App Marketplace کے ذریعے Zoom Server-to-Server OAuth ایپ یا OAuth ایپ
  3. API رسائی کے ساتھ Brevo اکاؤنٹ
  4. کنیکٹر اجازتوں کے ساتھ Tajo اکاؤنٹ

تصدیق

Server-to-Server OAuth (تجویز کردہ)

Terminal window
# Create a Server-to-Server OAuth app at marketplace.zoom.us
export ZOOM_ACCOUNT_ID=your_account_id
export ZOOM_CLIENT_ID=your_client_id
export ZOOM_CLIENT_SECRET=your_client_secret
// Get access token via Server-to-Server OAuth
const tokenResponse = await fetch('https://zoom.us/oauth/token', {
method: 'POST',
headers: {
'Authorization': `Basic ${Buffer.from(
`${process.env.ZOOM_CLIENT_ID}:${process.env.ZOOM_CLIENT_SECRET}`
).toString('base64')}`,
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
grant_type: 'account_credentials',
account_id: process.env.ZOOM_ACCOUNT_ID
})
});
const { access_token } = await tokenResponse.json();

OAuth 2.0 (صارف کی سطح)

// Authorization URL for user-level OAuth
const authUrl = 'https://zoom.us/oauth/authorize?' +
new URLSearchParams({
client_id: process.env.ZOOM_CLIENT_ID,
redirect_uri: 'https://your-app.com/callback',
response_type: 'code'
});
// Exchange code for tokens
const tokenResponse = await fetch('https://zoom.us/oauth/token', {
method: 'POST',
headers: {
'Authorization': `Basic ${Buffer.from(
`${process.env.ZOOM_CLIENT_ID}:${process.env.ZOOM_CLIENT_SECRET}`
).toString('base64')}`,
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
grant_type: 'authorization_code',
code: authorizationCode,
redirect_uri: 'https://your-app.com/callback'
})
});

تشکیل

بنیادی سیٹ اپ

connectors:
zoom:
enabled: true
account_id: "${ZOOM_ACCOUNT_ID}"
client_id: "${ZOOM_CLIENT_ID}"
client_secret: "${ZOOM_CLIENT_SECRET}"
sync:
participants: true
webinars: true
recordings: true
webhook:
secret_token: "${ZOOM_WEBHOOK_SECRET}"
verification_token: "${ZOOM_VERIFICATION_TOKEN}"
lists:
meeting_participants: 15
webinar_attendees: 16
webinar_registrants: 17

فیلڈ میپنگ

field_mapping:
email: email
name: FIRSTNAME
join_time: MEETING_JOIN_DATE
duration: MEETING_DURATION
webinar_title: WEBINAR_NAME
attendance_status: ATTENDANCE_STATUS
registration_source: UTM_SOURCE

API اینڈ پوائنٹس

اینڈ پوائنٹطریقہتفصیل
https://api.zoom.us/v2/usersGETصارفین کی فہرست
https://api.zoom.us/v2/users/{userId}/meetingsGETمیٹنگز کی فہرست
https://api.zoom.us/v2/meetings/{meetingId}GETمیٹنگ کی تفصیلات حاصل کریں
https://api.zoom.us/v2/past_meetings/{meetingId}/participantsGETگزشتہ میٹنگ شرکاء کی فہرست
https://api.zoom.us/v2/users/{userId}/webinarsGETویبینارز کی فہرست
https://api.zoom.us/v2/webinars/{webinarId}/registrantsGETویبینار رجسٹرینٹس کی فہرست
https://api.zoom.us/v2/webinars/{webinarId}/participantsGETویبینار شرکاء کی فہرست
https://api.zoom.us/v2/meetings/{meetingId}/recordingsGETمیٹنگ ریکارڈنگز حاصل کریں
https://api.zoom.us/v2/webhooksPOSTwebhooks سبسکرائب کریں

کوڈ کی مثالیں

کنیکٹر کو انیشیلائز کریں

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('zoom', {
accountId: process.env.ZOOM_ACCOUNT_ID,
clientId: process.env.ZOOM_CLIENT_ID,
clientSecret: process.env.ZOOM_CLIENT_SECRET
});

میٹنگ شرکاء سنک کریں

// Retrieve past meeting participants
const response = await fetch(
`https://api.zoom.us/v2/past_meetings/${meetingId}/participants`,
{
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json'
}
}
);
const { participants } = await response.json();
for (const participant of participants) {
if (participant.user_email) {
await tajo.contacts.sync({
email: participant.user_email,
attributes: {
FIRSTNAME: participant.name,
MEETING_DURATION: participant.duration,
MEETING_JOIN_DATE: participant.join_time,
ATTENDANCE_STATUS: 'attended'
},
listIds: [15]
});
}
}

ویبینار حاضرین سنک کریں

// Get webinar attendees and sync to Brevo
const attendeesResponse = await fetch(
`https://api.zoom.us/v2/past_webinars/${webinarId}/participants`,
{
headers: { 'Authorization': `Bearer ${accessToken}` }
}
);
const { participants: attendees } = await attendeesResponse.json();
for (const attendee of attendees) {
await tajo.contacts.sync({
email: attendee.user_email,
attributes: {
FIRSTNAME: attendee.name,
WEBINAR_NAME: webinarTitle,
ATTENDANCE_STATUS: 'attended',
MEETING_DURATION: attendee.duration
},
listIds: [16]
});
}

Zoom Webhooks کو سنبھالیں

app.post('/webhooks/zoom', async (req, res) => {
// Handle Zoom URL validation challenge
if (req.body.event === 'endpoint.url_validation') {
const hashForValidation = crypto
.createHmac('sha256', process.env.ZOOM_WEBHOOK_SECRET)
.update(req.body.payload.plainToken)
.digest('hex');
return res.json({
plainToken: req.body.payload.plainToken,
encryptedToken: hashForValidation
});
}
// Verify webhook signature
const message = `v0:${req.headers['x-zm-request-timestamp']}:${JSON.stringify(req.body)}`;
const hash = crypto
.createHmac('sha256', process.env.ZOOM_WEBHOOK_SECRET)
.update(message)
.digest('hex');
const signature = `v0=${hash}`;
if (req.headers['x-zm-signature'] !== signature) {
return res.status(401).send('Unauthorized');
}
const { event, payload } = req.body;
await tajo.connectors.handleWebhook('zoom', {
topic: event,
payload: payload
});
res.status(200).send('OK');
});

شرح کی حدود

زمرہحدنوٹس
ہلکی API کالز30 درخواستیں/سیکنڈGET صارف، میٹنگ معلومات
درمیانی API کالز20 درخواستیں/سیکنڈشرکاء کی فہرست، ویبینارز
بھاری API کالز10 درخواستیں/سیکنڈرپورٹس، ریکارڈنگز
روزانہ کی حد5,000+پلان کی سطح پر منحصر ہے

شرح کی حد ہیڈرز

Zoom X-RateLimit-Limit, X-RateLimit-Remaining, اور Retry-After ہیڈرز واپس کرتا ہے۔ 429 غلطیوں سے بچنے کے لیے ان ہیڈرز پر مبنی backoff لاجک نافذ کریں۔

ٹربل شوٹنگ

مسئلہوجہحل
401 UnauthorizedToken میعاد ختمServer-to-Server OAuth token ریفریش کریں
غائب شرکاءمیٹنگ ختم نہیں ہوئیمکمل ڈیٹا کے لیے میٹنگ ختم ہونے کا انتظار کریں
Webhook توثیق ناکامغلط secretZoom Marketplace میں webhook secret کی تصدیق کریں
کوئی ای میل ڈیٹا نہیںGuest شرکاءای میلز capture کرنے کے لیے رجسٹریشن فعال کریں
شرح کی حد 429بہت زیادہ درخواستیںexponential backoff نافذ کریں

ڈیبگ موڈ

connectors:
zoom:
debug: true
log_level: verbose
log_webhooks: true

بہترین طرز عمل

  1. Server-to-Server OAuth استعمال کریں - صارف کی مداخلت کے بغیر آسان تصدیق
  2. ویبینار رجسٹریشن فعال کریں - حاضرین کے ای میل پتے capture کرنے کے لیے ضروری
  3. میٹنگ ختم ہونے کے بعد پروسیس کریں - شریک ڈیٹا صرف میٹنگز ختم ہونے کے بعد مکمل ہوتا ہے
  4. ایونٹ کی قسم کے لحاظ سے سیگمنٹ - میٹنگز بمقابلہ ویبینارز کے لیے مختلف Brevo فہرستیں تفویض کریں
  5. Engagement میٹرکس ٹریک کریں - لیڈ اسکورنگ کے لیے دورانیہ اور join time استعمال کریں
  6. ریکارڈنگ فالو اپ بھیجیں - Brevo کے ذریعے ریکارڈنگ لنک ڈیلیوری کو آٹومیٹ کریں

سیکیورٹی

  • OAuth 2.0 - Server-to-Server یا صارف کی سطح کا OAuth تصدیق
  • Webhook توثیق - HMAC-SHA256 دستخط کی توثیق
  • URL توثیق - webhook اینڈ پوائنٹس کے لیے Challenge-response تصدیق
  • اسکوپڈ اجازتیں - کم از کم مطلوبہ OAuth اسکوپس کی درخواست کریں
  • Token روٹیشن - Server-to-Server tokens خودکار میعاد ختم ہوتی ہے (1 گھنٹہ)
  • انکرپٹڈ نقل و حمل - تمام API مواصلات کے لیے TLS 1.2+

متعلقہ وسائل

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI معاون

السلام علیکم! دستاویزات کے بارے میں کچھ بھی پوچھیں۔