...
✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Zoomi abil koosoleku loomine Zoomi API ja PHP abil

88

Hiljuti töötasin projektiga, kus mul oli vaja suhelda Zoom API-ga. Kliendi rakenduses juurutasime Zoom API abil palju asju, näiteks Kontod, Arveldamine, Koosolekud, Grupid, Aruanded, Toad jne. Kuigi me tegime Zoom API abil palju asju, keskendun selles õpetuses sellele, kuidas looge koosolek Zoom API ja PHP abil.

Nagu me kõik teame, on Zoom platvorm, mida kasutatakse telekonverentside, kaugtöö, kaugõppe jms jaoks. See on inimeste seas populaarne veebikonverentside, koosolekute, veebiseminaride ja muu jaoks.

Need, kes otsivad koosoleku loomist Zoom API kaudu, peavad oma API-dega suhtlemiseks valima kas OAuthi või JWT. OAuth ja JWT (JSON-i veebimärgis) tagavad kolmanda osapoole teenustega suhtlemiseks kõrge turvalisuse taseme. Selles õpetuses kasutame OAuthi protsessi ja suhtleme selle kaudu Zoom API-ga.

Samuti võite kontrollida PHP-s olevat õpetust Suumi integreerimine JWT-ga.

Looge suumil OAuthi rakendus

Kui olete oma suumikonto saanud, peate alltoodud sammude abil Zoomis looma OAuthi rakenduse.

  • Registreerige oma rakendus Zoom APP Marketplace’is.
  • Rakenduse registreerimisel saate oma loodud volitused. Siin peate edastama OAuthi ja lubatud loendi URL-i ümbersuunamise URL-i.
  • Järgmisel sammul sisestage oma rakenduse põhiteave.
  • Vahekaardil saate oma rakenduse jaoks lubada lisafunktsioone, näiteks sündmuste tellimused ja vestluste tellimused.
  • Vahekaardil „Reguleerimisala" peate lisama oma rakendusega seotud ulatused. Näiteks saate lisada suumi koosolekute ulatuse.

Kui olete localhostis, siis kasutage ngrokit ja genereerige kohalik URL. Minu puhul on ngroki URL-id OAuthi ümbersuunamiseks ja lubatud loendi URL-id allpool näidatud.

Kui teil on OAuthi rakenduse loomisega probleeme, vaadake Zoomi ametlikku dokumentatsiooni teemal OAuthi rakenduse loomine.

Põhiline seadistamine ja seadistamine

Ma ei leidnud ühtegi PHP-teeki, mida saaks kasutada Zoom API-ga suhtlemiseks. Uurides saan seda hallata läbi Guzzle’i teegi ja Zoom REST API. Installige Guzzle’i teek käsuga:

composer require guzzlehttp/guzzle

Zoom REST API-ga suhtlemiseks on vaja juurdepääsuloa saatmist. Kavatseme selle genereerida ja andmebaasi salvestada. Juurdepääsuluba kehtib lühikest aega. Meie koodis taastame juurdepääsuloa taustal, nii et kasutajal pole vaja autoriseerimisprotsessi uuesti teha.

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

Kuna peame andmebaasist loa väärtuste tooma, peame selle jaoks kirjutama koodi. Looge fail class-db.phpja lisage sellesse allolev kood.

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

Asendage kohatäited kindlasti oma tegelike andmebaasi mandaatidega. Järgmisena genereerime OAuthi protsessi kaudu juurdepääsuloa.

Looge juurdepääsuluba

Kasutaja saab rakenduse mandaatide ja OAuthi protsessi abil luua oma kontole juurdepääsuloa. Looge config.phpselles PHP-failis fail, salvestage rakenduse mandaadid ja suunake URL ümber. Lisage ka muud keskkonnad, nagu DB klass ja hankija kogu, järgmiselt.

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

Asendage kohatäited oma rakenduse mandaatidega ja määrake sama ümbersuunamise URL, mille lisasite rakenduses Zoom OAuth. Minu puhul on ümbersuunamise URL https://f2448150.ngrok.io/zoom/callback.php. See tähendab, et callback.phpfailis peame kirjutama koodi, mis kutsub suumi API-d, taotlema juurdepääsuluba ja salvestama selle andmebaasi.

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

Nüüd genereerime volitatud URL-i, kus kasutaja saab klõpsata ja autoriseerimisprotsessi lõpule viia. Kavatsen selle URL-i index.phpfaili luua .

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>

Käivitage ülaltoodud fail brauseris, klõpsake linki "Logi sisse suumiga" ja viige autoriseerimisprotsess lõpule. Eduka autentimise korral peaksite nägema edukat teadet ja pääsuluba salvestatakse teie tokentabelisse. Kui see töötab, võime jätkata ja luua koosoleku Zoom API-ga.

Koosoleku loomine Zoomi abil, kasutades Zoom API-d

Zoom pakub lõpp-punkti koosoleku loomiseks nende REST API kaudu. Võite lugeda selle kohta nende dokumentatsioonist. See nõuab POST-päringu saatmist antud lõpp-punkti koos vajalike parameetritega.

Samuti nõuab API lõpp-punkt lubamise päises edastamist juurdepääsuluba. Nagu ma varem ütlesin, on juurdepääsuloa eluiga lühike ja me taastame selle taustal uuesti autentimisprotsessi küsimata.

Olen loonud create-meeting.phpfaili POST-päringu saatmiseks lõpp-punkti. Tegelesin ka märgise aegumise tingimusega ja selle taastamisega, kui aegumine on lõppenud.

loo-koosolek.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();

Kui märkasite koodi, olen algusajana läbinud “2021-03-20T20: 30: 00”. See tähendab, et koosoleku aeg on 20. märts 2021 kell 20.30. Kasutaja peaks edastama selle vormingu aastal yyyy-MM-ddTHH: mm: ss. Võtme "type" jaoks andsin edasi väärtuse "2", mis on mõeldud ajastatud koosoleku jaoks. Kasutaja peab määrama ka koosoleku parooli, mille määrasin väärtuseks "123456".

Jätkake ja käivitage see kood ning peaksite nägema, et teie suumikontol on koosolek loodud.

Lisage koosolekute loend

Oleme kirjutanud koodi suumikoosolekute loomiseks. Selle koodi abil saate luua nii palju koosolekuid kui soovite. Pärast seda võite loendada kõik koosolekud oma rakenduses.

Zoom pakub API-d, mille kaudu saame tuua kõik oma Zoom-koosolekud. Looge fail list-meeting.phpja kasutage allolevat koodi, mis printib kõik koosolekud.

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

Ülalolevas koodis printin koosolekute teema ja URL-i. Võite printida ka muud teavet. $dataSaadaoleva teabe loendi saamiseks printige muutuja .

Hankige eelmised koosolekul osalejad

Kui koosolek on lõppenud, saate osalejate nimekirja, kasutades Zoom API-d. Sellele API-le on soovitatav helistada ainult siis, kui olete tasulisel kontol. Sellel konkreetsel API-l peab olema tasuline konto. Kui proovite sellele API-le helistada tasuta kontoga, kuvatakse tõrge.

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

Asendage kohatäide MEETING_ID tegeliku eelmise koosoleku ID-ga. Vastuses saate osalejate nimed ja meiliaadressid.

Koosoleku kustutamine

Kasutaja saab mängida Zoom API lõpp-punktidega, näiteks loendit, värskendada, koosolekut kustutada. Kõik, mida peate tegema, on järgida nende juhiseid konkreetsete lõpp-punktide kasutamiseks. Näiteks võite koosoleku kustutada, saates API lõpp-punktile DELETE päringu. Selle lõpp-punkti saamiseks peate edastama oma koosoleku ID, nagu allpool näidatud.

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

Loodan, et saite teada, kuidas Zoom API ja PHP abil koosolekut luua. Tahaksin kuulda teie mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem