✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Cómo crear una reunión en Zoom usando Zoom API y PHP

2.240

Recientemente estaba trabajando en un proyecto en el que necesitaba interactuar con la API de Zoom. En la aplicación del cliente, implementamos muchas cosas usando la API de Zoom, como Cuentas, Facturación, Reuniones, Grupos, Informes, Salas, etc. Aunque hicimos muchas cosas usando la API de Zoom, en este tutorial me enfocaré en cómo cree una reunión utilizando Zoom API y PHP.

Como todos sabemos, Zoom es una plataforma que se utiliza para teleconferencias, teletrabajo, educación a distancia, etc. Es popular entre las personas para conferencias en línea, reuniones, seminarios web y otras cosas.

Aquellos que buscan crear una reunión a través de la API de Zoom deben elegir OAuth o JWT para interactuar con sus API. OAuth y JWT (token web JSON) proporcionan un alto nivel de seguridad para realizar interacciones con los servicios de terceros. En este tutorial, usaremos el proceso OAuth y nos comunicaremos con la API de Zoom a través de él.

También puede consultar el tutorial Integración de Zoom con JWT en PHP.

Cree una aplicación OAuth en Zoom

Una vez que tenga su cuenta de Zoom, debe crear una aplicación OAuth en Zoom siguiendo los pasos a continuación.

  • Registre su aplicación en Zoom APP Marketplace.
  • Al registrar una aplicación, obtendrá sus credenciales generadas. Aquí debe pasar la URL de redireccionamiento para OAuth y la URL de la lista blanca.
  • En el siguiente paso, ingrese la información básica sobre su aplicación.
  • En la pestaña, puede habilitar opcionalmente algunas funciones adicionales, como suscripciones a eventos y suscripciones a chat, para su aplicación.
  • En la pestaña ‘Ámbitos’, debe agregar ámbitos relacionados con su aplicación. Por ejemplo, puede agregar un ámbito para las reuniones de Zoom.

Si está en localhost, utilice ngrok y genere la URL local. En mi caso, las URL de ngrok para la redirección de OAuth y la URL de la lista blanca son las que se muestran a continuación.

Si tiene algún problema con la creación de una aplicación OAuth, consulte la documentación oficial de Zoom sobre Crear una aplicación OAuth.

Instalación y configuración básicas

No encontré ninguna biblioteca PHP que pueda usarse para interactuar con la API de Zoom. Investigando un poco, puedo administrarlo a través de la biblioteca Guzzle y la API REST de Zoom. Instale la biblioteca Guzzle usando el comando:

composer require guzzlehttp/guzzle

Para interactuar con Zoom REST API es necesario enviar un token de acceso. Lo vamos a generar y almacenar en la base de datos. El token de acceso es válido por un corto período de tiempo. En nuestro código, regeneraremos el token de acceso en segundo plano para que el usuario no tenga que volver a realizar el proceso de autorización.

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

Como necesitaremos obtener valores de token de la base de datos, debemos escribir un código para ello. Cree un archivo class-db.phpy agregue el código a continuación.

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

Asegúrese de reemplazar los marcadores de posición con sus credenciales de base de datos reales. A continuación, generemos un token de acceso a través del proceso OAuth.

Generar un token de acceso

El usuario puede crear un token de acceso para su cuenta utilizando las credenciales de la aplicación y el proceso OAuth. Cree un config.phparchivo, almacene las credenciales de la aplicación y redireccione la URL en este archivo PHP. Incluya los otros entornos como la clase DB y la biblioteca del proveedor también de la siguiente manera.

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

Reemplace los marcadores de posición con las credenciales de su aplicación y configure la misma URL de redireccionamiento que agregó en la aplicación Zoom OAuth. En mi caso, la URL de redireccionamiento es https://f2448150.ngrok.io/zoom/callback.php. Significa que en el callback.phparchivo, tenemos que escribir el código que llama a una API de Zoom, solicitar un token de acceso y almacenarlo en la base de datos.

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

Ahora, generemos una URL autorizada donde un usuario puede hacer clic y completar el proceso de autorización. Voy a crear esta URL en el index.phparchivo.

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>

Ejecute el archivo anterior en el navegador, haga clic en el enlace ‘Iniciar sesión con Zoom’ y complete el proceso de autorización. En la autenticación exitosa, debería ver un mensaje de éxito y el token de acceso se almacenaría en su tokentabla. Si eso funciona, podemos seguir adelante y crear una reunión con la API de Zoom.

Cree una reunión en Zoom usando la API de Zoom

Zoom proporciona un punto final para crear una reunión a través de su API REST. Puede leerlo en su documentación. Requiere enviar una solicitud POST al punto final dado junto con los parámetros requeridos.

El punto final de la API también requiere que se pase un token de acceso en el encabezado de autorización. Como dije anteriormente, el token de acceso tiene una vida corta y lo vamos a regenerar en segundo plano sin volver a solicitar el proceso de autenticación.

He creado un create-meeting.phparchivo para enviar una solicitud POST al punto final. También manejé la condición de caducidad del token y la regeneración si caduca.

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

Si has notado el código, he pasado "2021-03-20T20: 30: 00" como "hora de inicio". Significa que la hora de la reunión será el 20 de marzo de 2021, a las 20:30 horas. El usuario debe pasar el formato. en aaaa-MM-ddTHH: mm: ss. Para la clave "tipo", pasé el valor "2", que es para una reunión programada. El usuario también debe establecer una contraseña de reunión que configuré en "123456".

Continúe y ejecute este código y debería ver que se crea una reunión en su cuenta de Zoom.

Lista de reuniones de Zoom

Hemos escrito un código para crear reuniones de Zoom. Con este código, puede crear tantas reuniones como desee. Después de esto, es posible que desee enumerar todas las reuniones en su aplicación.

Zoom proporciona una API a través de la cual podemos obtener todas nuestras reuniones de Zoom. Cree un archivo list-meeting.phpy use el código a continuación que imprimirá todas las reuniones.

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

En el código anterior, estoy imprimiendo un tema y una URL de reuniones. También puede imprimir otra información. Imprima la variable $datapara obtener una lista de la información disponible.

Obtenga participantes anteriores de la reunión

Una vez que finaliza la reunión, puede obtener una lista de participantes utilizando la API de Zoom. Se recomienda llamar a esta API solo si tiene una cuenta paga. Esta API específica requiere tener una cuenta paga. Si intenta llamar a esta API con una cuenta gratuita, obtendrá un error.

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

Reemplaza el marcador de posición MEETING_ID con el ID de la reunión anterior real. En la respuesta, obtendrá los nombres y correos electrónicos de los participantes.

Eliminar una reunión

El usuario puede jugar con los puntos finales de la API de Zoom como listar, actualizar, eliminar una reunión. Todo lo que necesita hacer es seguir sus pautas sobre el uso de puntos finales específicos. Por ejemplo, puede eliminar una reunión enviando una solicitud DELETE al punto final de la API. Para este punto final, debe pasar su identificación de reunión como se muestra a continuación.

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

Espero que sepas cómo crear una reunión usando Zoom API y PHP. Me gustaría escuchar sus pensamientos y sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More