Guía de transición de video de Vonage para PHP

Transición de opentok/opentok a vonage/video

Introducción

Propósito

El SDK PHP de OpenTok está en modo de mantenimiento, ya que hemos hecho la transición a un nuevo SDK de video donde las credenciales de Vonage se pueden usar en nuestro SDK de nodo en todas las API.

Alcance

En vonage/video utiliza el vonage/client-core los requisitos mínimos para usarla son PHP8.1. Esto no significa, sin embargo, que cualquier versión por debajo de 8.1 no funcionará. Significa que pueden ocurrir errores de análisis de versiones inferiores, especialmente debido a que el núcleo de la librería usa mucha promoción de propiedades de constructores.

Supuestos

Para poder migrar con éxito, necesitarás un buen conocimiento de cómo funciona el gestor de paquetes de PHP, Composer, y cómo funcionan los espacios de nombres de PHP, ya que esto tendrá el mayor impacto.

Recursos

Código fuente del SDK de vídeo de Vonage Código fuente en Packagist Vonage PHP SDK (necesario para que funcione Video) Documentación de la API de Video de Vonage Especificaciones de la API de Video de Vonage

Planificación de la migración

Evaluar el impacto

Para disminuir el impacto, casi todas las firmas de funciones han permanecido iguales en el SDK de Vonage Video. Por lo tanto, si bien las llamadas a funciones y los argumentos pueden seguir siendo los mismos, el mayor impacto será la creación del cliente, el uso del cliente y la comprobación de que la lógica de tu aplicación consume las respuestas de la forma correcta.

El mayor impacto que dictará si o no puedes migrar es si está utilizando métodos no soportados. En este momento, la funcionalidad compatible es:

Creación de sesiones Señalización Forzar silencio Archivo

La funcionalidad actual no soportada es:

Cubos S3/Azure personalizados Interconexión SIP Transmisión de secuencias en directo Compositor de experiencias Gestión de cuentas

Si utilizas alguno de los anteriores, no podrás migrar.

Cronología

El tiempo necesario realmente depende de la cantidad de uso dentro de tu aplicación. Si estás creando un cliente OpenTok para cada llamada a la API que necesites hacer, es probable que te lleve más tiempo. El método de creación del cliente OpenTok también aumentará el tiempo en función de las credenciales codificadas, por ejemplo.

Si su aplicación no utiliza principalmente opciones que se pasan a sus métodos de vídeo, la migración podría llevar hasta un par de horas como máximo. Sin embargo, si tiene requisitos más complejos en los que se pasa configuración a las funciones, será necesario realizar una refactorización manual para corregirlos. Por este motivo, recomendamos asignar más tiempo en función del número de llamadas que realice su aplicación.

Actualización del paquete

Para actualizar los paquetes de vídeo, ejecute lo siguiente en Composer:

composer update

Las bibliotecas Video y Core SDK utilizan el sistema de versiones SemVer, por lo que cuando una de estas bibliotecas alcance una versión mayor, deberá especificar dicha versión mayor en el archivo composer.json y ejecuta composer update para subir todos los cambios.

Cambios en la autenticación

El SDK de Vonage Video ofrece la posibilidad de usar tus credenciales de Vonage en lugar de las de OpenTok. Sin embargo, son compatibles con versiones anteriores. La diferencia radica en cómo se manejan las credenciales en el nuevo cliente: toda la autenticación ahora se maneja mediante objetos de valor que definen claramente lo que son, en lugar de argumentos de cadena para ApiKey y ApiSecret. Para su migración, querrá utilizar un objeto Vonage\Client\Credentials\Basic::class con su clave de API y su secreto.

Cambios de método

Las firmas de función se han codificado con objetos de valor que será necesario crear. Por ejemplo, la función createSession ha cambiado:

public function createSession($options = array())

A esto:

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

Puede ver que options ya no es un array, sino que también será null por defecto. Si no pasa ningún argumento, el objeto se creará dentro del método. Sin embargo, si actualmente pasas opciones, será necesario migrarlas. En el SDK, los objetos de valor se suministran con la práctica función fromArray() por lo que, si dispone de una matriz de opciones, puede introducirla de la siguiente manera:

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

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

Estrategias de migración

Migración mediante búsqueda y sustitución

Se divide en dos etapas.

  1. Deberá instalar los nuevos paquetes necesarios. En su línea de comandos, instale los dos paquetes siguientes utilizando Composer:
composer install vonage/client-core composer install vonage/video
  1. Utilizando su IDE, utilice una búsqueda y sustitución global. Un ejemplo de creación de cliente sería el siguiente:
$apiKey = 'key';
$apiSecret = 'secret'
$client = new OpenTok\OpenTok($apiKey, $apiSecret);
$session = $client->createSession();

Siempre que utilice la misma línea de código para crear el cliente, su búsqueda y sustitución debería tener el siguiente aspecto:

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

Estamos utilizando Fully Qualified namespaces aquí por compatibilidad - puedes refactorizar el código después de las migraciones para importar los namespaces.

La parte importante a añadir aquí es la llamada a ->video() encadenado en el extremo. Si sustituye $client con un Vonage Client()sus llamadas a funciones no serán compatibles con versiones anteriores. Llamada a ->video() devuelve el Video Client que es el mismo punto de entrada de clase que es compatible con OpenTok.

  1. Para cada cambio de firma de método, tendrá que codificar a mano la migración de matrices o cadenas al objeto de valor correcto.

Patrón envoltorio/adaptador

Una de las circunstancias de migración más fáciles es si utilizas un Framework de Aplicaciones Web PHP popular como Symfony o Laravel. En esta situación, puede que ya estés utilizando un Contenedor de Servicio para arrancar el cliente. En este caso, solo necesitarás reemplazar el cliente dentro del servicio. Si no tienes un contenedor de servicio, sería una buena oportunidad durante la migración para crear uno.

Sin uno de los principales frameworks, aún puedes hacerlo tú mismo. Eche un vistazo a Excelente artículo de Ryan Chandler aquí sobre cómo implementar una interfaz PSR-11.

Recomendaciones para las pruebas

Si tiene un conjunto de pruebas existente, querrá comprobar que sus afirmaciones siguen siendo válidas. Crear una Sesión, por ejemplo, será ligeramente diferente porque querrá afirmar que ha creado una \Vonage\Video\Session en lugar de un objeto OpenTok\Session uno. El acceso a los datos del objeto de valor también será por método en lugar de a través de un array, por lo que tendrás que cambiar las aserciones para cualquier cosa que antes era una devolución de array.

Recomendamos añadir pruebas unitarias y de integración para cada parte de su aplicación que utilice el cliente de vídeo. Las pruebas de integración deben incluir llamadas en vivo a la API y ejecutarse como parte de su canal de producción, pero las pruebas unitarias pueden simular la respuesta para asegurarse de que no se realizan llamadas, pero su aplicación está analizando las respuestas del SDK correctamente.

Para saber cómo preparar las respuestas, eche un vistazo a la página conjunto de pruebas existente para el propio SDK que prueba la funcionalidad que querrá incorporar a su propio conjunto de pruebas.

Canales de apoyo

Soporte directo vía. Slack: Desarrollador de Vonage Slack

Cree un ticket en Github: https://github.com/Vonage/vonage-php-sdk-video