✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як створити зустріч на Zoom за допомогою Zoom API та PHP

66

Нещодавно я працював над проектом, де мені потрібно було взаємодіяти із Zoom API. У програмі клієнта ми впровадили багато речей за допомогою Zoom API, таких як Облікові записи, Рахунки, Зустрічі, Групи, Звіти, Кімнати тощо. Хоча ми зробили багато речей, використовуючи Zoom API, у цьому посібнику я зупинюсь на тому створити зустріч за допомогою Zoom API та PHP.

Як ми всі знаємо, Zoom – це платформа, яка використовується для телеконференцій, дистанційного навчання, дистанційного навчання тощо. Вона популярна серед людей для проведення онлайн-конференцій, зустрічей, вебінарів та інших речей.

Тим, хто шукає створення зустрічі за допомогою Zoom API, для взаємодії зі своїми API потрібно вибрати OAuth або JWT. OAuth та JWT (веб-маркер JSON) забезпечують високий рівень безпеки для взаємодії зі сторонніми службами. У цьому посібнику ми використовуватимемо процес OAuth та спілкуватимемось із ним через Zoom API.

Ви також можете перевірити підручник Збільшення інтеграції з JWT у PHP.

Створіть програму OAuth на Zoom

Отримавши обліковий запис Zoom, вам потрібно створити програму OAuth на Zoom, дотримуючись наведених нижче кроків.

  • Зареєструйте свій додаток на Zoom APP Marketplace.
  • Після реєстрації програми ви отримаєте створені облікові дані. Тут вам потрібно передати URL-адресу переспрямування для URL-адреси OAuth та білого списку.
  • На наступному кроці введіть основну інформацію про свою програму.
  • На цій вкладці ви можете за бажанням увімкнути деякі додаткові функції, такі як підписка на події та підписка на чат для вашого додатка.
  • На вкладці "Області" потрібно додати сфери застосування програми. Наприклад, ви можете додати область для зустрічей із збільшенням.

Якщо ви перебуваєте на localhost, використовуйте ngrok і сформуйте локальну URL-адресу. У моєму випадку URL-адреси ngrok для перенаправлення OAuth та URL-адреси білого списку наведені нижче.

Якщо у вас виникли проблеми зі створенням програми OAuth, зверніться до офіційної документації Zoom щодо створення програми OAuth.

Основне налаштування та конфігурація

Я не знайшов жодної бібліотеки PHP, яку можна використовувати для взаємодії з Zoom API. Проводячи деякі дослідження, я можу керувати ними за допомогою бібліотеки Guzzle та Zoom REST API. Встановіть бібліотеку Guzzle за допомогою команди:

composer require guzzlehttp/guzzle

Для взаємодії з Zoom REST API потрібно надіслати маркер доступу. Ми збираємося його генерувати та зберігати у базі даних. Токен доступу діє протягом короткого періоду часу. У нашому коді ми відновимо маркер доступу у фоновому режимі, щоб користувачеві не потрібно було повторювати процес авторизації.

CREATE TABLE `token` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `access_token` text NOT NULL,
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Оскільки нам потрібно буде отримати значення маркерів з бази даних, нам потрібно написати код для нього. Створіть файл class-db.phpі додайте в нього код нижче.

class-db.php

<?php
class DB {
    private $dbHost     = "DB_HOST";
    private $dbUsername = "DB_USERNAME";
    private $dbPassword = "DB_PASSWORD";
    private $dbName     = "DB_NAME";
  
    public function __construct(){
        if(!isset($this->db)){
            // Connect to the database
            $conn = new mysqli($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName);
            if($conn->connect_error){
                die("Failed to connect with MySQL: ". $conn->connect_error);
            }else{
                $this->db = $conn;
            }
        }
    }
  
    public function is_table_empty() {
        $result = $this->db->query("SELECT id FROM token");
        if($result->num_rows) {
            return false;
        }
  
        return true;
    }
  
    public function get_access_token() {
        $sql = $this->db->query("SELECT access_token FROM token");
        $result = $sql->fetch_assoc();
        return json_decode($result['access_token']);
    }
  
    public function get_refersh_token() {
        $result = $this->get_access_token();
        return $result->refresh_token;
    }
  
    public function update_access_token($token) {
        if($this->is_table_empty()) {
            $this->db->query("INSERT INTO token(access_token) VALUES('$token')");
        } else {
            $this->db->query("UPDATE token SET access_token = '$token' WHERE id = (SELECT id FROM token)");
        }
    }
}

Переконайтесь, що замінили заповнювачі фактичними даними бази даних. Далі давайте генеруємо маркер доступу через процес OAuth.

Створіть маркер доступу

Користувач може створити маркер доступу для свого облікового запису, використовуючи облікові дані програми та процес OAuth. Створіть config.phpфайл, збережіть облікові дані програми та переспрямуйте URL-адресу у цьому PHP-файлі. Включіть інші середовища, такі як клас DB та бібліотека постачальників, також наступним чином.

config.php

<?php
require_once 'vendor/autoload.php';
require_once "class-db.php";
  
define('CLIENT_ID', 'YOUR_CLIENT_ID');
define('CLIENT_SECRET', 'YOUR_CLIENT_SECRET');
define('REDIRECT_URI', 'REDIRECT_URL_FOR_OAUTH');

Замініть заповнювачі обліковими даними програми та встановіть ту саму URL-адресу переспрямування, яку ви додали в програмі Zoom OAuth. У моєму випадку, перенаправлення URL є https://f2448150.ngrok.io/zoom/callback.php. Це означає, що у callback.phpфайлі ми повинні написати код, який викликає Zoom API, запитати маркер доступу та зберегти його в базі даних.

callback.php

<?php
require_once 'config.php';
  
try {
    $client = new GuzzleHttpClient(['base_uri' => 'https://zoom.us']);
  
    $response = $client->request('POST', '/oauth/token', [
        "headers" => [
            "Authorization" => "Basic ". base64_encode(CLIENT_ID.':'.CLIENT_SECRET)
        ],
        'form_params' => [
            "grant_type" => "authorization_code",
            "code" => $_GET['code'],
            "redirect_uri" => REDIRECT_URI
        ],
    ]);
  
    $token = json_decode($response->getBody()->getContents(), true);
  
    $db = new DB();
  
    if($db->is_table_empty()) {
        $db->update_access_token(json_encode($token));
        echo "Access token inserted successfully.";
    }
} catch(Exception $e) {
    echo $e->getMessage();
}

Тепер давайте створимо авторизовану URL-адресу, де користувач може натиснути та завершити процес авторизації. Я збираюся створити цю URL-адресу у index.phpфайлі.

index.php

<?php
require_once 'config.php';
  
$url = "https://zoom.us/oauth/authorize?response_type=code&client_id=".CLIENT_ID."&redirect_uri=".REDIRECT_URI;
?>
  
<a href="<?php echo $url; ?>">Login with Zoom</a>

Запустіть вищезгаданий файл у браузері, натисніть посилання «Увійти за допомогою масштабування» та завершіть процес авторизації. Після успішної автентифікації ви побачите повідомлення про успішне завершення, і маркер доступу буде зберігатися у вашій tokenтаблиці. Якщо це спрацює, ми можемо продовжити і створити зустріч із Zoom API.

Створіть нараду щодо масштабування за допомогою Zoom API

Zoom надає кінцеву точку для створення зустрічі за допомогою їх REST API. Ви можете прочитати про це в їх документації. Це вимагає надсилання запиту POST до вказаної кінцевої точки разом із необхідними параметрами.

Кінцева точка API також вимагає передачі маркера доступу в заголовку авторизації. Як я вже говорив раніше, токен доступу має короткий термін служби, і ми збираємося його відновити у фоновому режимі, не вимагаючи повторного процесу автентифікації.

Я створив create-meeting.phpфайл для відправки запиту POST до кінцевої точки. Я також обробляв умову закінчення терміну дії маркера та відновлював його, якщо термін дії закінчився.

create-meeting.php

<?php
require_once 'config.php';
  
function create_meeting() {
    $client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
    $db = new DB();
    $arr_token = $db->get_access_token();
    $accessToken = $arr_token->access_token;
  
    try {
        $response = $client->request('POST', '/v2/users/me/meetings', [
            "headers" => [
                "Authorization" => "Bearer $accessToken"
            ],
            'json' => [
                "topic" => "Let's learn Laravel",
                "type" => 2,
                "start_time" => "2021-03-05T20:30:00",
                "duration" => "30", // 30 mins
                "password" => "123456"
            ],
        ]);
  
        $data = json_decode($response->getBody());
        echo "Join URL: ". $data->join_url;
        echo "<br>";
        echo "Meeting Password: ". $data->password;
  
    } catch(Exception $e) {
        if( 401 == $e->getCode()) {
            $refresh_token = $db->get_refersh_token();
  
            $client = new GuzzleHttpClient(['base_uri' => 'https://zoom.us']);
            $response = $client->request('POST', '/oauth/token', [
                "headers" => [
                    "Authorization" => "Basic ". base64_encode(CLIENT_ID.':'.CLIENT_SECRET)
                ],
                'form_params' => [
                    "grant_type" => "refresh_token",
                    "refresh_token" => $refresh_token
                ],
            ]);
            $db->update_access_token($response->getBody());
  
            create_meeting();
        } else {
            echo $e->getMessage();
        }
    }
}
  
create_meeting();

Якщо ви помітили код, я передав "2021-03-20T20: 30: 00" як "час_початку". Це означає, що час зустрічі буде 20 березня 2021 року, 20:30. Користувач повинен передати його формат yyyy-MM-ddTHH: mm: ss. Для клавіші ‘type’ я передав значення ‘2’, яке відповідає запланованій зустрічі. Користувачеві також потрібно встановити пароль зустрічі, який я встановив як ‘123456’.

Вперед і запустіть цей код, і ви побачите, що нарада створена у вашому обліковому записі Zoom.

Перелік зустрічей із збільшенням

Ми написали код для створення нарад Zoom. Використовуючи цей код, ви можете створити скільки завгодно зустрічей. Після цього, можливо, ви захочете перерахувати всі зустрічі у своїй заявці.

Zoom надає API, за допомогою якого ми можемо отримати всі наші зустрічі Zoom. Створіть файл list-meeting.phpі скористайтеся наведеним нижче кодом, який буде друкувати всі зустрічі.

list-meeting.php

<?php
require_once 'config.php';
  
$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
$db = new DB();
$arr_token = $db->get_access_token();
$accessToken = $arr_token->access_token;
  
$response = $client->request('GET', '/v2/users/me/meetings', [
    "headers" => [
        "Authorization" => "Bearer $accessToken"
    ]
]);
 
$data = json_decode($response->getBody());
 
if (!empty($data)) {
    foreach ($data->meetings as $d) {
        $topic = $d->topic;
        $join_url = $d->join_url;
        echo "<h3>Topic: $topic</h3>";
        echo "Join URL: $join_url";
    }
}

У наведеному вище коді я друкую тему та URL-адресу нарад. Ви також можете надрукувати іншу інформацію. Роздрукуйте змінну, $dataщоб отримати список доступної інформації.

Отримати учасників минулих зборів

Після завершення наради ви зможете отримати список учасників за допомогою Zoom API. Рекомендується викликати цей API, лише якщо ви перебуваєте на платному рахунку. Для цього конкретного API потрібно мати платний рахунок. Якщо ви спробуєте зателефонувати цьому API із безкоштовним обліковим записом, ви отримаєте повідомлення про помилку.

<?php
require_once 'config.php';
   
$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
   
$db = new DB();
$arr_token = $db->get_access_token();
$accessToken = $arr_token->access_token;
   
$response = $client->request('GET', '/v2/past_meetings/MEETING_ID/participants', [
    "headers" => [
        "Authorization" => "Bearer $accessToken"
    ]
]);
  
$data = json_decode($response->getBody());
if (!empty($data)) {
    foreach ($data->participants as $p) {
        $name = $p->name;
        $email = $p->user_email;
        echo "Name: $name";
        echo "Email: $email";
    }
}

Замініть заповнювач MEETING_ID фактичним ідентифікатором минулої зустрічі. У відповідь ви отримаєте імена та електронні адреси учасників.

Видалити зустріч

Користувач може грати з кінцевими точками Zoom API, такими як список, оновлення, видалення зустрічі. Все, що вам потрібно зробити, це дотримуватися їхніх рекомендацій щодо використання конкретних кінцевих точок. Наприклад, ви можете видалити зустріч, надіславши запит DELETE до кінцевої точки API. Для цієї кінцевої точки потрібно передати ідентифікатор наради, як показано нижче.

<?php
require_once 'config.php';
  
$client = new GuzzleHttpClient(['base_uri' => 'https://api.zoom.us']);
  
$db = new DB();
$arr_token = $db->get_access_token();
$accessToken = $arr_token->access_token;
  
$response = $client->request('DELETE', '/v2/meetings/{meeting_id}', [
    "headers" => [
        "Authorization" => "Bearer $accessToken"
    ]
]);
 
if (204 == $response->getStatusCode()) {
    echo "Meeting is deleted.";
}

Сподіваюся, ви дізналися, як створити зустріч за допомогою Zoom API та PHP. Я хотів би почути ваші думки та пропозиції у розділі коментарів нижче.

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі