Guide de transition vidéo de Vonage pour PHP

Transition de opentok/opentok à vonage/video

Introduction

Objectif

Le SDK PHP d'OpenTok est en mode maintenance, car nous sommes passés à un nouveau SDK vidéo où les identifiants Vonage peuvent être utilisés dans notre SDK Node à travers toutes les API. Video SDK où les identifiants Vonage peuvent être utilisés dans notre Node SDK dans toutes les API.

Champ d'application

En tant que vonage/video utilise le vonage/client-core la configuration minimale requise pour l'utiliser est PHP8.1. Cela ne signifie pas, cependant, que toute version inférieure à 8.1 ne fonctionnera pas. Cela signifie que des erreurs d'analyse de versions inférieures peuvent se produire, en particulier parce que la bibliothèque de base utilise beaucoup de promotion de propriétés de constructeurs.

Hypothèses

Pour réussir la migration, vous devez avoir une bonne compréhension du fonctionnement du gestionnaire de paquets de facto de PHP, Composer, et du fonctionnement des espaces de noms de PHP, car c'est ce qui aura le plus d'impact.

Ressources

Code source du SDK vidéo de Vonage Code source sur Packagist SDK PHP de Vonage (nécessaire pour que la vidéo fonctionne) Documentation de l'API Video de Vonage Spécifications de l'API Video de Vonage

Planifier votre migration

Évaluer l'impact

Pour réduire l'impact, presque toutes les signatures de fonctions sont restées les mêmes dans le SDK vidéo de Vonage. Par conséquent, bien que les appels de fonction et les arguments puissent rester les mêmes, l'impact le plus important sera la création du client, l'utilisation du client et la vérification que la logique de votre application consomme les réponses de la bonne manière.

L'impact le plus important qui dictera si oui ou non vous pouvez est si vous utilisez des méthodes non prises en charge. À l'heure actuelle, les fonctionnalités prises en charge sont les suivantes :

Création de session Signalisation Forcer le silence Archivage

La fonctionnalité actuelle qui n'est pas prise en charge est la suivante :

Buckets S3/Azure personnalisés Interconnexion SIP Diffusion en direct Experience Composer Account Management

Si vous utilisez l'une de ces méthodes, vous ne pourrez pas migrer.

Chronologie

Le temps nécessaire dépend vraiment de la quantité d'utilisation au sein de votre application. Si vous créez un client OpenTok pour chaque appel d'API que vous devez effectuer, cela prendra probablement plus de temps. La méthode de création du client OpenTok augmentera également le temps nécessaire - les identifiants codés en dur nécessiteront plus de remaniement, par exemple.

Si votre application n'utilise pas d'options dans vos méthodes vidéo, la migration peut prendre quelques heures au maximum. Toutefois, si vous avez des besoins plus complexes et que vous transmettez des configurations dans vos fonctions, il faudra procéder à un remaniement manuel pour les corriger. Pour cette raison, nous vous recommandons d'allouer plus de temps en fonction du nombre d'appels effectués par votre application.

Mise à jour du paquet

Pour mettre à jour les paquets vidéo, exécutez la procédure suivante dans Composer :

composer update

Les bibliothèques Video et Core SDK utilisent le système de versionnement SemVer. Ainsi, lorsque l'une de ces bibliothèques atteint une version majeure, vous devez spécifier cette version majeure dans le fichier composer.json et exécuter composer update pour remonter tous les changements en amont.

Modifications de l'authentification

Le SDK vidéo de Vonage permet d'utiliser les informations d'identification de Vonage au lieu de celles d'OpenTok. Ils sont toutefois compatibles avec les versions antérieures. La différence réside dans la manière dont vous gérez les informations d'identification dans le nouveau client - toutes les autorisations sont désormais gérées par des objets de valeur qui définissent clairement ce qu'ils sont, au lieu d'arguments de chaîne pour ApiKey et ApiSecret. Pour votre migration, vous voudrez utiliser un objet Vonage\Client\Credentials\Basic::class avec votre clé d'API et votre secret.

Changements de méthode

Les signatures de fonctions ont été codées avec des objets de valeur qui devront être créés. Par exemple, la signature de la fonction createSession a changé par rapport à celle-ci :

public function createSession($options = array())

A cela :

public function createSession(?SessionOptions $options = null): Session

Vous pouvez voir que options n'est plus un tableau, mais qu'il prend la valeur null par défaut. Si vous ne passez pas d'argument, l'objet est créé pour vous dans la méthode. Cependant, si vous passez actuellement des options, elles devront être migrées. Dans le SDK, les objets de valeur sont livrés avec l'option pratique fromArray() donc si vous avez un tableau d'options existant, vous pouvez le passer de cette façon :

$existingOptions = [
	'my-key' -> 'my-value'
];

$optionsValueObject = new SessionOptions()->fromArray($existingOptions);
$session = $client->createSession($optionsValueObject);

Stratégies de migration

Migration par recherche et remplacement

Elle se décompose en deux étapes.

  1. Vous devrez installer les nouveaux paquets nécessaires. Dans votre ligne de commande, installez les deux paquets suivants à l'aide de Composer :
composer install vonage/client-core composer install vonage/video
  1. En utilisant votre IDE, utilisez une recherche et un remplacement globaux. Un exemple de création de client serait le suivant :
$apiKey = 'key';
$apiSecret = 'secret'
$client = new OpenTok\OpenTok($apiKey, $apiSecret);
$session = $client->createSession();

Si vous utilisez la même ligne de code pour créer le client, votre recherche et remplacement devrait ressembler à ce qui suit :

$client = new OpenTok\OpenTok($apiKey, $apiSecret);
$client = new \Vonage\Client(new \Vonage\Client\Credentials($apiKey, $apiSecret))->video();

Nous utilisons ici des espaces de noms entièrement qualifiés pour des raisons de compatibilité - vous pouvez remanier le code après les migrations pour importer les espaces de noms.

La partie importante à ajouter ici est l'appel de ->video() enchaîné à l'extrémité. Si vous remplacez $client avec un téléphone Vonage Client()vos appels de fonction ne seront pas rétro-compatibles. Appel de fonction ->video() renvoie le client vidéo qui est le point d'entrée de la même classe et qui est rétrocompatible avec OpenTok.

  1. Pour chaque changement de signature de méthode, vous devrez coder à la main la migration des tableaux ou des chaînes vers l'objet de valeur correct.

Modèle de wrapper/adaptateur

L'une des circonstances de migration les plus faciles est si vous utilisez un cadre d'application Web PHP populaire tel que Symfony ou Laravel. Dans ce cas, il se peut que vous utilisiez déjà un conteneur de service pour amorcer le client. Dans ce cas, vous n'aurez qu'à remplacer le client dans le service. Si vous n'avez pas de conteneur de service, ce serait une bonne occasion d'en créer un pendant la migration.

Si vous ne disposez pas de l'un des principaux cadres, vous pouvez toujours le faire vous-même. Jetez un coup d'œil à L'excellent article de Ryan Chandler ici sur la manière de mettre en œuvre une interface PSR-11.

Recommandations pour les tests

Si vous disposez d'une suite de tests existante, vous voudrez vérifier que vos assertions sont toujours valables. La création d'une session, par exemple, sera légèrement différente car vous voudrez affirmer que vous avez créé une \Vonage\Video\Session plutôt qu'un objet OpenTok\Session un. L'accès aux données de l'objet valeur se fera également par méthode plutôt que par l'intermédiaire d'un tableau, de sorte que vous devrez modifier les assertions pour tout ce qui était auparavant un retour de tableau.

Nous vous recommandons d'ajouter des tests unitaires et d'intégration pour chaque partie de votre application qui utilise le client vidéo. Les tests d'intégration doivent inclure des appels réels à l'API et être exécutés dans le cadre de votre pipeline de production, mais les tests unitaires peuvent simuler la réponse pour s'assurer qu'aucun appel n'est effectué, mais que votre application analyse correctement les réponses du SDK.

Pour savoir comment simuler les réponses, jetez un coup d'œil à la rubrique la suite de tests existante pour le SDK lui-même qui teste les fonctionnalités que vous souhaitez intégrer dans votre propre suite de tests.

Canaux de soutien

Support direct via. Slack : Développeur Vonage Slack

Créer un ticket sur Github : https://github.com/Vonage/vonage-php-sdk-video