---
title: "Zoom کنیکٹر"
description: "Tajo کے ذریعے میٹنگ شرکاء، ویبینار حاضرین، اور engagement ڈیٹا کو Brevo کے ساتھ سنک کرنے کے لیے مکمل Zoom انٹیگریشن گائیڈ۔"
url: https://tajo.io/ur/docs/connectors/custom/zoom/
markdown: https://tajo.io/ur/docs/connectors/custom/zoom.md
lang: ur-PK
robots: noindex
---

ابتدائی رسائی کی درخواست کریں

اپنا پہلا نام اور دفتری ای میل پتہ درج کریں۔ ہم Tajo تک رسائی کی درخواست کی تصدیق کے لیے ایک لنک ای میل کریں گے۔

# Zoom کنیکٹر

کنیکٹر کی حیثیت: منصوبہ بند ابھی تیار نہیں ہوا۔ Tajo آج یہ کنیکٹر نہیں چلاتا۔

| ماخذ فیلڈ | منزل فیلڈ | نمونہ قدر |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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

## جائزہ

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

## خصوصیات

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

## شرائط

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

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

## تصدیق

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

```bash
# 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
```

```javascript
// 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 (صارف کی سطح)

```javascript
// 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'
  })
});
```

## تشکیل

### بنیادی سیٹ اپ

```yaml
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
```

### فیلڈ میپنگ

```yaml
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/users` | GET | صارفین کی فہرست |
| `https://api.zoom.us/v2/users/{userId}/meetings` | GET | میٹنگز کی فہرست |
| `https://api.zoom.us/v2/meetings/{meetingId}` | GET | میٹنگ کی تفصیلات حاصل کریں |
| `https://api.zoom.us/v2/past_meetings/{meetingId}/participants` | GET | گزشتہ میٹنگ شرکاء کی فہرست |
| `https://api.zoom.us/v2/users/{userId}/webinars` | GET | ویبینارز کی فہرست |
| `https://api.zoom.us/v2/webinars/{webinarId}/registrants` | GET | ویبینار رجسٹرینٹس کی فہرست |
| `https://api.zoom.us/v2/webinars/{webinarId}/participants` | GET | ویبینار شرکاء کی فہرست |
| `https://api.zoom.us/v2/meetings/{meetingId}/recordings` | GET | میٹنگ ریکارڈنگز حاصل کریں |
| `https://api.zoom.us/v2/webhooks` | POST | webhooks سبسکرائب کریں |

## کوڈ کی مثالیں

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

```javascript
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
});
```

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

```javascript
// 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]
    });
  }
}
```

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

```javascript
// 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 کو سنبھالیں

```javascript
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 Unauthorized | Token میعاد ختم | Server-to-Server OAuth token ریفریش کریں |
| غائب شرکاء | میٹنگ ختم نہیں ہوئی | مکمل ڈیٹا کے لیے میٹنگ ختم ہونے کا انتظار کریں |
| Webhook توثیق ناکام | غلط secret | Zoom Marketplace میں webhook secret کی تصدیق کریں |
| کوئی ای میل ڈیٹا نہیں | Guest شرکاء | ای میلز capture کرنے کے لیے رجسٹریشن فعال کریں |
| شرح کی حد 429 | بہت زیادہ درخواستیں | exponential backoff نافذ کریں |

### ڈیبگ موڈ

```yaml
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+

## متعلقہ وسائل

- [Calendly کنیکٹر](https://tajo.io/ur/docs/connectors/custom/calendly)
- [Zapier کنیکٹر](https://tajo.io/ur/docs/connectors/custom/zapier)
- [گاہک سنک اسکل](https://tajo.io/ur/docs/skills/data-sync/customer-sync)
- [Zoom API دستاویزات](https://developers.zoom.us/docs/api/)
