
Compartilhar:
Ex-diretor de Formação de Desenvolvedores da Vonage. Com experiência como desenvolvedor criativo, gerente de produto e organizador de hack days, Martyn atua como defensor da tecnologia desde 2012, tendo trabalhado anteriormente no setor de radiodifusão e em grandes gravadoras. Ele se dedica a capacitar e empoderar desenvolvedores em todo o mundo.
Gravar uma mensagem de telefone com PHP
Tempo de leitura: 9 minutos
Gravar uma mensagem telefônica é o primeiro passo fundamental para criar um sistema de correio de voz completo. Neste tutorial, vamos percorrer as etapas necessárias para configurar um número de telefone capaz de gravar uma chamada recebida usando PHP e a interface de linha de comando do Nexmo.
O código deste tutorial pode ser encontrado em nossos seção “Blocos de Construção em PHP” .
Pré-requisitos
Você vai precisar do seguinte:
Um número de telefone que ainda não esteja associado a outro aplicativo
PHP (>5.6), Composer e o framework Slim
Espera-se que o código que você criará funcione com qualquer versão do PHP 5.6 ou superior.
Nossa forma recomendada de trabalhar com o Nexmo, do ponto de vista administrativo, é utilizar nossa ferramenta de linha de comando, Nexmo-CLI.
Para tornar o código em nossa máquina local acessível ao mundo exterior, vamos usar o ngrok; portanto, certifique-se de que ele também esteja instalado.
Receber e registrar uma mensagem telefônica
Comece instalando o Slim na sua pasta de trabalho, caso ainda não tenha feito isso.
Você precisará de apenas um arquivo PHP para este exemplo; portanto, crie um chamado index.php na sua pasta de trabalho e abra-o no editor de sua preferência.
Adicione o código a seguir ao seu index.php:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require 'vendor/autoload.php';
$app = new \Slim\App;
$app->get('/webhooks/answer', function (Request $request, Response $response) {
$uri = $request->getUri();
$ncco = [
[
'action' => 'talk',
'text' => 'Please leave a message after the tone, then press #. We will get back to you as soon as we can'
],
[
'action' => 'record',
'eventUrl' => [
$uri->getScheme().'://'.$uri->getHost().'/webhooks/recording'
],
'endOnSilence' => '3',
'endOnKey' => '#',
'beepOnStart' => true
],
[
'action' => 'talk',
'text' => 'Thank you for your message. Goodbye'
],
];
return $response->withJson($ncco);
});
?>
Vamos analisar o que está acontecendo aqui:
A chamada recebida será encaminhada para
/webhooks/answer, e então o NCCO assumirá o atendimento.O NCCO lê uma mensagem para a pessoa que está ligando.
Em seguida, a mensagem do interlocutor é gravada.
Os dados de gravação são repassados para um novo
eventUrl, neste caso/webhooks/recording.É reproduzida uma mensagem informando ao usuário que sua mensagem foi recebida e, em seguida, o NCCO desliga.
Você vai perceber que é o $ncco matriz que realiza a maior parte do trabalho nesta função.
NCCO significa Nexmo Call Control Object e é um array JSON usado para controlar o fluxo de uma chamada da Voice API.
Você pode se aprofundar nas funcionalidades do NCCO e saber mais sobre como ampliar os recursos do seu aplicativo lendo a documentação de referência.
Processar a mensagem gravada
No código acima, o NCCO possui uma ação de registro com um eventUrl nele, que foi definido como /webhooks/recording. É para lá que serão enviados todos os dados sobre a gravação, incluindo a localização do arquivo gravado.
No entanto, no momento ela não existe, portanto, abaixo da /webhooks/answer rotas e antes de $app->run();, adicione este novo código:
$app->post('/webhooks/recording', function (Request $request, Response $response) {
$params = $request->getParsedBody();
error_log($params['recording_url']);
return $response->withStatus(204);
});
Vamos examinar essa rota e sua função:
Ele recebe uma solicitação POST com um objeto JSON contendo todo tipo de informação sobre nossa gravação.
Ele registra a URL da gravação que foi feita.
Responde com o código de status 204, para que o NCCO não continue tentando enviar isso repetidamente.
Executando o código
Agora, você já está com tudo configurado e pronto para executar o código. Para isso, basta digitar o seguinte comando no terminal:
Isso iniciará um servidor e redirecionará todo o tráfego http://localhost:3000 seu index.php arquivo.
Divulgue seu aplicativo com o ngrok
Para testar adequadamente esse código e permitir que a Nexmo faça solicitações ao seu aplicativo, você precisa tornar o código em execução na sua máquina local acessível à internet.
ngrok é a nossa ferramenta preferida para isso, e disponibilizamos uma ótima introdução à ferramenta que você pode ler para se familiarizar com ela, caso ainda não a tenha usado antes.
Depois de instalar o ngrok, execute ngrok http 3000 para expor seu aplicativo à internet. Anote o ngrok URL gerada, pois você precisará fornecê-la à Nexmo na próxima etapa (ela terá um formato semelhante a http://45hfh5.ngrok.io).
Compre um número e conecte seu aplicativo
Com o código pronto e seu aplicativo disponível para o mundo, agora você precisa obter um número de telefone e vinculá-lo ao seu aplicativo.
Comece comprando um número pela CLI da Nexmo:
Você pode usar um código de país diferente, se quiser. Anote o número que você comprar, pois vai precisar dele na próxima etapa.
Em seguida, use uma CLI do Nexmo para criar seu aplicativo, certificando-se de substituir <your_ngrok_url> pela URL recém-gerada que o ngrok forneceu anteriormente:
A resposta que você receberá conterá uma saída extensa da chave privada e, acima dela, um ID do aplicativo.
Anote o ID do aplicativo (que tem o seguinte formato: e7b25242-77a1-42cd-a32e-09fbbcb375f4) e, em seguida, vincule-o ao seu novo número usando este comando:
Agora seu código está vinculado ao número! Você pode testá-lo ligando para o número que comprou e seguindo as instruções que, como por mágica, serão informadas a você do outro lado da linha!
Verifique a saída do console depois de terminar de gravar sua mensagem. Lá você verá o recording_url. Se quiser fazer o download disso, dê uma olhada no Baixar uma gravação e adicione esse código adicional ao seu aplicativo.
Conclusão
Depois de aprender a gravar mensagens, você poderá rapidamente ampliar esse código para um sistema de correio de voz mais completo, conectando-o recording_url em um banco de dados e adicionando uma interface simples para permitir que os usuários ouçam as mensagens.
Você também poderia ampliar a funcionalidade do aplicativo para enviar uma notificação por SMS a alguém quando uma nova mensagem for gravada, ou até mesmo enviar as gravações por e-mail para um endereço de e-mail pré-definido.
Como sempre, isso é só o começo. Fique à vontade para fazer perguntas ou compartilhar o que você tem desenvolvido no canal do Slack da Comunidade Nexmoou diretamente conosco no devrel@nexmo.com.
Compartilhar:
Ex-diretor de Formação de Desenvolvedores da Vonage. Com experiência como desenvolvedor criativo, gerente de produto e organizador de hack days, Martyn atua como defensor da tecnologia desde 2012, tendo trabalhado anteriormente no setor de radiodifusão e em grandes gravadoras. Ele se dedica a capacitar e empoderar desenvolvedores em todo o mundo.