Guia de transição do Vonage Video para PHP

A transição de opentok/opentok para vonage/video

Introdução

Objetivo

O SDK do OpenTok para PHP está em modo de manutenção, pois fizemos a transição para um novo SDK de vídeo, no qual as credenciais da Vonage podem ser utilizadas em nosso SDK para Node em todas as APIs.

Âmbito

Como vonage/video utiliza o vonage/client-core biblioteca, os requisitos mínimos para utilizá-la são o PHP 8.1. Isso, no entanto, não significa que qualquer versão anterior à 8.1 não funcione. Significa, sim, que podem ocorrer erros de análise em versões anteriores, especialmente porque a biblioteca principal utiliza bastante a promoção de propriedades no construtor.

Suposições

Para que a migração seja bem-sucedida, você precisará ter um conhecimento sólido de como funciona o Composer — o gerenciador de pacotes de fato do PHP — e de como funcionam os namespaces do PHP, já que esses aspectos terão o maior impacto.

Recursos

Código-fonte do SDK de vídeo da Vonage Código-fonte no Packagist SDK do Vonage para PHP (necessário para que o recurso de vídeo funcione) Documentação da Video API da Vonage Especificações da Video API da Vonage

Planejando sua migração

Avaliar o impacto

Para minimizar o impacto, quase todas as assinaturas das funções permaneceram as mesmas no Client SDK do Vonage Video. Portanto, embora as chamadas de função e os argumentos possam permanecer os mesmos, o maior impacto estará na criação do cliente, no uso do cliente e na verificação de que a lógica do seu aplicativo processe as respostas da maneira correta.

O maior impacto que determinará se você pode A migração é necessária caso você esteja usando métodos não suportados. No momento, as funcionalidades suportadas são:

Criação de sessão Sinalização Silenciar à força Arquivamento

A funcionalidade que não é suportada no momento é:

Buckets personalizados do S3/Azure Interconexão SIP Transmissão ao vivo Experience Composer Gerenciamento de Accounts

Se você estiver usando qualquer uma das opções acima, não será possível realizar a migração.

Linha do tempo

O tempo necessário depende, na verdade, do nível de uso dentro do seu aplicativo. Se você estiver criando um cliente OpenTok para cada chamada de API que precisar fazer, é provável que demore mais. O método utilizado para criar o cliente OpenTok também influenciará no tempo necessário — credenciais codificadas diretamente no código, por exemplo, exigirão mais refatoração.

Se sua aplicação, em geral, não utiliza as opções passadas aos métodos de vídeo, a migração pode levar, no máximo, algumas horas. No entanto, se você tiver requisitos mais complexos, nos quais passa parâmetros de configuração para suas funções, será necessário realizar uma refatoração manual para corrigi-los. Por esse motivo, recomendamos reservar mais tempo, dependendo do número de chamadas que sua aplicação realiza.

Atualização do pacote

Para atualizar os pacotes de vídeo, execute o seguinte no Composer:

composer update

As bibliotecas Video e Core SDK utilizam o sistema de versionamento SemVer; portanto, quando uma dessas bibliotecas atingir uma versão principal, você precisará especificar essa versão principal no composer.json e executar composer update para enviar todas as alterações para o repositório principal.

Alterações na autenticação

O SDK de vídeo da Vonage permite usar suas credenciais da Vonage em vez das do OpenTok. No entanto, elas são compatíveis com versões anteriores. A diferença está na forma como as credenciais são tratadas no novo cliente — toda a autenticação agora é feita por meio de objetos de valor que definem claramente o que são, em vez de argumentos de string para ApiKey e ApiSecret. Para sua migração, você vai querer usar um Vonage\Client\Credentials\Basic::class objeto com sua chave de API e seu segredo.

Alterações no método

As assinaturas das funções foram codificadas com objetos de valor que precisarão ser criados. Por exemplo, a createSession O método mudou de assim:

public function createSession($options = array())

A isso:

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

Você pode ver que `options` não é mais um array, mas também assumirá o valor padrão `null`. Se você não passar nenhum argumento, o objeto será criado automaticamente dentro do método. No entanto, se você atualmente passa `options`, elas precisarão ser migradas. Os objetos de valor dentro do SDK vêm com a conveniente fromArray() função; portanto, se você já tiver uma matriz de opções, pode passá-las da seguinte maneira:

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

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

Estratégias de migração

Migração por meio da função “Localizar e Substituir”

Esse processo é dividido em duas etapas.

  1. Você precisará instalar os novos pacotes necessários. Na linha de comando, instale os dois pacotes a seguir usando o Composer:
composer install vonage/client-core composer install vonage/video
  1. No seu IDE, utilize a função de localização e substituição global. Um exemplo de criação de cliente seria o seguinte:
$apiKey = 'key';
$apiSecret = 'secret'
$client = new OpenTok\OpenTok($apiKey, $apiSecret);
$session = $client->createSession();

Desde que você use a mesma linha de código para criar o cliente, sua operação de localizar e substituir deve ficar assim:

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

Estamos usando namespaces totalmente qualificados aqui por uma questão de compatibilidade — você pode refatorar o código após as migrações para importar os namespaces.

O ponto importante a destacar aqui é a chamada de ->video() acoplado na extremidade. Se você substituir $client com a Vonage Client(), suas chamadas de função não serão compatíveis com versões anteriores. Ao chamar ->video() retorna o Video Client, que é o mesmo ponto de entrada da classe e é compatível com versões anteriores do OpenTok.

  1. Para cada alteração na assinatura de um método, você precisará codificar manualmente a migração de matrizes ou strings para o objeto de valor correto.

Padrão Wrapper/Adapter

Uma das situações mais fáceis de migração é quando você usa um framework popular de aplicativos web em PHP, como o Symfony ou o Laravel. Nessa situação, talvez você já esteja usando um contêiner de serviços para inicializar o cliente. Nesse caso, você só precisará substituir o cliente dentro do serviço. Se você não tiver um contêiner de serviços, essa seria uma boa oportunidade para criar um durante a migração.

Mesmo sem usar uma das principais estruturas, você ainda pode fazer isso por conta própria. Dê uma olhada em O excelente artigo de Ryan Chandler aqui sobre como implementar uma interface PSR-11.

Recomendações para testes

Se você já tiver um conjunto de testes, convém verificar se suas asserções ainda são válidas. A criação de uma sessão, por exemplo, será um pouco diferente, pois você precisará verificar se criou uma \Vonage\Video\Session objeto, em vez de um OpenTok\Session 1. O acesso aos dados do objeto de valor também será feito por meio de métodos, e não por meio de um array; portanto, será necessário alterar as asserções para tudo o que antes retornava um array.

Recomendamos adicionar testes de unidade e de integração para cada parte do seu aplicativo que utilize o Video Client. Os testes de integração devem incluir chamadas reais à API e ser executados como parte do seu pipeline de produção; já os testes de unidade podem simular a resposta para garantir que nenhuma chamada seja feita, mas que o seu aplicativo esteja analisando corretamente as respostas do SDK.

Para ter uma ideia inicial de como simular as respostas, dê uma olhada no conjunto de testes existente para o próprio SDK que testa a funcionalidade que você desejará incorporar ao seu próprio conjunto de testes.

Canais de suporte

Suporte direto pelo Slack: Slack dos desenvolvedores da Vonage

Crie um ticket no GitHub: https://github.com/Vonage/vonage-php-sdk-video