Guía de transición a Vonage Video 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.
Ámbito de aplicación
Como 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 Video API de Vonage Especificaciones de la API de Video de Vonage
Planificación de la migración
Evaluar el impacto
Para minimizar el impacto, casi todas las firmas de las funciones se han mantenido iguales en el SDK de Vonage Video. Por lo tanto, aunque las llamadas a las funciones y los argumentos pueden seguir siendo los mismos, el mayor impacto se producirá en la creación del cliente, el uso del mismo y la comprobación de que la lógica de tu aplicación procesa las respuestas de forma correcta.
El factor más importante que determinará 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 Silenciamiento forzado Archivado
Las funciones que actualmente no son compatibles son:
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:
Las bibliotecas Video y Core SDK utilizan el sistema de versionado SemVer, por lo que, cuando una de estas bibliotecas alcance una versión principal, deberás especificar dicha versión principal en el 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
Como puedes ver, «options» ya no es un array, sino que, por defecto, tomará el valor «null». Si no pasas ningún argumento, el objeto se crea automáticamente dentro del método. Sin embargo, si actualmente pasas «options», tendrás que migrarlas. Los objetos de valor del SDK incluyen la práctica fromArray() función, así que si ya tienes una matriz de opciones, puedes pasarlas 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.
- Deberá instalar los nuevos paquetes necesarios. En su línea de comandos, instale los dos paquetes siguientes utilizando Composer:
- 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();
Aquí estamos utilizando espacios de nombres completos por motivos de compatibilidad; puedes refactorizar el código tras las migraciones para importar los espacios de nombres.
La parte importante a añadir aquí es la llamada a ->video() encadenado al final. Si sustituyes $client con un Vonage Client(), tus llamadas a funciones no serán compatibles con versiones anteriores. Al llamar a ->video() devuelve el Video Client que es el mismo punto de entrada de clase que es compatible con OpenTok.
- 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 1. El acceso a los datos del objeto de valor también se realizará mediante métodos, en lugar de a través de un array, por lo que tendrás que modificar las comprobaciones para todo aquello que antes devolviera un array.
Recomendamos añadir pruebas unitarias y de integración para cada parte de tu aplicación que utilice el Video Client. Las pruebas de integración deben incluir llamadas reales a la API y ejecutarse como parte de tu proceso de producción, pero las pruebas unitarias pueden simular la respuesta para garantizar que no se realicen llamadas, aunque tu aplicación analice correctamente las respuestas del Client SDK.
Para hacerte una idea de cómo simular las respuestas, echa un vistazo a la conjunto de pruebas existente para el propio SDK que prueba la funcionalidad que querrá incorporar a su propio conjunto de pruebas.
Canales de asistencia
Soporte directo vía. Slack: Slack para desarrolladores de Vonage
Cree un ticket en Github: https://github.com/Vonage/vonage-php-sdk-video