...
✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kuinka luoda kokous Zoomilla käyttämällä Zoom API: ta ja PHP: tä

17

Viime aikoina työskentelin projektissa, jossa minun piti olla vuorovaikutuksessa Zoom-sovellusliittymän kanssa. Asiakkaan sovelluksessa toteutimme paljon asioita Zoom-sovellusliittymän avulla, kuten tilit, laskutus, kokoukset, ryhmät, raportit, huoneet jne. Vaikka teimme paljon asioita Zoom-sovellusliittymän avulla, tässä opetusohjelmassa keskityn siihen, miten luo kokous Zoom API: n ja PHP: n avulla.

Kuten me kaikki tiedämme, Zoom on alusta, jota käytetään puhelinneuvotteluissa, etätyössä, etäopetuksessa jne. Se on suosittu ihmisten keskuudessa online-konferensseissa, kokouksissa, webinaareissa ja muissa asioissa.

Niiden, jotka haluavat luoda kokouksen Zoom-sovellusliittymän kautta, on valittava joko OAuth tai JWT vuorovaikutuksessa API: nsa kanssa. OAuth ja JWT (JSON-verkkotunnus) tarjoavat korkean suojaustason vuorovaikutuksessa kolmansien osapuolten palveluiden kanssa. Tässä opetusohjelmassa käytämme OAuth-prosessia ja kommunikoimme sen kautta Zoom-sovellusliittymän kanssa.

Voit myös tarkistaa opetusohjelman Zoom-integraation JWT: n kanssa PHP: ssä.

Luo OAuth-sovellus zoomauksessa

Kun sinulla on Zoom-tili, sinun on luotava OAuth-sovellus Zoomiin alla olevien ohjeiden avulla.

  • Rekisteröi sovelluksesi Zoom APP Marketplacessa.
  • Kun rekisteröit sovelluksen, saat luomasi kirjautumistiedot. Täällä sinun on välitettävä OAuth- ja sallittujen URL-osoitteiden uudelleenohjaus-URL.
  • Anna seuraavassa vaiheessa sovelluksesi perustiedot.
  • Välilehdellä voit vaihtoehtoisesti ottaa käyttöön joitain lisäominaisuuksia, kuten Tapahtumatilaukset ja Chat-tilaukset sovelluksellesi.
  • Laajuudet-välilehdessä sinun on lisättävä sovelluksesi laajuuksia. Voit esimerkiksi lisätä laajuuden Zoom-kokouksiin.

Jos olet localhostissa, käytä ngrokia ja luo paikallinen URL. Minun tapauksessani ngrok-URL-osoitteet OAuth-uudelleenohjaukselle ja sallittujen luettelon URL-osoitteet ovat alla esitetyt.

Jos sinulla on ongelmia OAuth-sovelluksen luomisessa, tutustu Zoomin virallisiin ohjeisiin OAuth-sovelluksen luominen -osiossa.

Perusasetukset

En löytänyt PHP-kirjastoa, jota voidaan käyttää vuorovaikutuksessa Zoom-sovellusliittymän kanssa. Tehdessäni tutkimusta pystyn hallitsemaan sitä Guzzlen kirjaston ja Zoom REST -sovellusliittymän kautta. Asenna Guzzle-kirjasto komennolla:

composer require guzzlehttp/guzzle

Jos haluat käyttää Zoom REST -sovellusliittymää, sinun on lähetettävä käyttöoikeustunnus. Aiomme luoda sen ja tallentaa sen tietokantaan. Käyttöoikeustunnus on voimassa lyhyen ajan. Koodissamme uudistamme käyttöoikeustunnuksen taustalla, jotta käyttäjän ei tarvitse tehdä valtuutusprosessia uudelleen.

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

Koska meidän on haettava tunnusluvut tietokannasta, meidän on kirjoitettava sille koodi. Luo tiedosto class-db.phpja lisää siihen alla oleva koodi.

luokka-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)");
        }
    }
}

Muista korvata paikkamerkit todellisilla tietokannan tunnistetiedoilla. Seuraavaksi luodaan käyttöoikeustunnus OAuth-prosessin kautta.

Luo käyttöoikeustunnus

Käyttäjä voi luoda käyttötunnuksen tililleen App-tunnistetietojen ja OAuth-prosessin avulla. Luo config.phptiedosto, tallenna sovelluksen tunnistetiedot ja ohjaa URL-osoite tähän PHP-tiedostoon. Sisällytä muut ympäristöt, kuten DB-luokka ja toimittajakirjasto, myös seuraavasti.

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');

Korvaa paikkamerkit sovellustiedoillasi ja määritä sama uudelleenohjaus-URL, jonka lisäsit Zoom OAuth -sovelluksessa. Minun tapauksessani uudelleenohjauksen URL on https://f2448150.ngrok.io/zoom/callback.php. Se tarkoittaa callback.phptiedostossa, että meidän on kirjoitettava koodi, joka kutsuu Zoom-sovellusliittymää, pyytänyt käyttöoikeustunnusta ja tallennettava se tietokantaan.

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();
}

Luodaan nyt valtuutettu URL, jossa käyttäjä voi napsauttaa ja suorittaa valtuutusprosessin loppuun. Aion luoda tämän URL-osoitteen index.phptiedostoon.

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>

Suorita yllä oleva tiedosto selaimessa, napsauta ‘Kirjaudu sisään zoomauksella’ -linkkiä ja suorita valtuutusprosessi loppuun. Onnistuneen todennuksen yhteydessä sinun pitäisi nähdä onnistumisviesti ja käyttöoikeustunnus tallennetaan tokentaulukkoon. Jos se toimii, voimme mennä eteenpäin ja luoda kokouksen Zoom-sovellusliittymän kanssa.

Luo kokous Zoomilla Zoom API: n avulla

Zoom tarjoaa päätepisteen kokouksen luomiseen REST-sovellusliittymän kautta. Voit lukea siitä heidän asiakirjoistaan. Se vaatii POST-pyynnön lähettämisen annetulle päätepisteelle yhdessä vaadittujen parametrien kanssa.

API-päätepiste vaatii myös käyttöoikeustunnuksen välittämisen Valtuutus-otsikossa. Kuten sanoin aiemmin, käyttöoikeustunnuksella on lyhyt käyttöikä, ja aiomme uudistaa sen taustalla pyytämättä uudelleen todennusprosessia.

Olen luonut create-meeting.phptiedoston POST-pyynnön lähettämistä päätepisteeseen. Käsittelin myös tunnuksen vanhentumisen ehdon ja uudistin sen, jos se vanhentui.

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();

Jos huomasit koodin, olen läpäissyt "2021-03-20T20: 30: 00" alkamisajana. Se tarkoittaa, että kokousaika on 20. maaliskuuta 2021 klo 20.30. Käyttäjän tulisi välittää sen muoto muodossa vvvv-kk-ppHK: kp: ss. "type" -avaimelle välitin arvon "2", joka on ajastetulle kokoukselle. Käyttäjän on myös asetettava kokoussalasana, jonka asetan arvoon "123456".

Suorita tämä koodi, niin sinun pitäisi nähdä, että kokous on luotu Zoom-tilillesi.

Luettelo Zoom-kokouksista

Olemme kirjoittaneet koodin Zoom-kokousten luomista varten. Tämän koodin avulla voit luoda niin monta kokousta kuin haluat. Tämän jälkeen haluat ehkä luetella kaikki kokoukset sovelluksessasi.

Zoom tarjoaa API: n, jonka kautta voimme noutaa kaikki Zoom-kokouksemme. Luo tiedosto list-meeting.phpja käytä alla olevaa koodia, joka tulostaa kaikki kokoukset.

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";
    }
}

Tulostan yllä olevaan koodiin aiheen ja kokousten URL-osoitteet. Voit tulostaa myös muita tietoja. Tulosta muuttuja $datasaadaksesi luettelon käytettävissä olevista tiedoista.

Hanki aiemmat kokouksen osallistujat

Kun kokous on ohi, voit saada luettelon osallistujista Zoom-sovellusliittymän avulla. On suositeltavaa kutsua tätä sovellusliittymää vain, jos olet maksullisella tilillä. Tällä erityisellä sovellusliittymällä on oltava maksettu tili. Jos yrität soittaa tähän sovellusliittymään ilmaisella tilillä, saat virheilmoituksen.

<?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";
    }
}

Korvaa paikkamerkki MEETING_ID todellisella edellisen kokouksen tunnuksella. Vastauksessa saat osallistujien nimet ja sähköpostit.

Poista kokous

Käyttäjä voi pelata Zoom-sovellusliittymän päätepisteillä, kuten luettelo, päivitys ja kokouksen poisto. Sinun tarvitsee vain noudattaa heidän ohjeita tiettyjen päätepisteiden käytöstä. Voit esimerkiksi poistaa kokouksen lähettämällä DELETE-pyynnön API-päätepisteelle. Tähän päätepisteeseen sinun on välitettävä kokoustunnuksesi alla olevan kuvan mukaisesti.

<?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.";
}

Toivon, että sait tietää kuinka luoda kokous Zoom API: n ja PHP: n avulla. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.

Aiheeseen liittyvät artikkelit

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja