
Compartilhar:
Oleksii é Developer Advocate na Vonage, autor e contador de histórias. Seus interesses incluem IA/ML, comunicações unificadas, tecnologias educacionais, tecnologias em nuvem e código aberto.
Integre chamadas telefônicas e o WhatsApp com a OpenAI
Tempo de leitura: 19 minutos
Introdução
A IA generativa se tornou parte da cultura popular. Ao longo do último ano, surgiram modelos e produtos como o ChatGPT e o DALL-E 2, que permitem gerar textos, imagens e áudio. A OpenAI, criadora do ChatGPT e do DALL-E 2, disponibilizou essas poderosas ferramentas para que os desenvolvedores possam acessá-las e criar novos aplicativos criativos.
Este artigo abordará, em primeiro lugar, como integrar a Voice API da Vonage e API da OpenAI. Criaremos um aplicativo que receberá uma solicitação de um usuário por meio de uma ligação telefônica e a enviará a um serviço de IA generativa. Enviaremos a resposta da IA ao usuário com a Messages API da Vonage. Vamos começar!
Pré-requisitos
Já desenvolvemos um aplicativo inicial do Vonage para receber uma chamada, capturar a resposta do usuário, enviá-la para a OpenAI e, em seguida, enviar uma resposta pelo WhatsApp. Com o aplicativo inicial, basta adicionar suas credenciais ao arquivo .env e implantar o aplicativo usando o GitHub Codespaces. Além disso, você pode editar o aplicativo inicial e fazer alguns testes.
Para começar:
Fork este repositório. Abra-o no Codespaces clicando em “Criar codespace no principal”
CLI da Vonage - Após instalar o Node.js, você pode usar o comando `npm install -g @vonage/cli` para instalá-lo. Essa ferramenta permite criar e gerenciar suas Applications Vonage.

Como alternativa, você pode implantar o aplicativo com Node.js e ngrok.
Criar um novo aplicativo da Vonage
Faça login/Cadastre-se gratuitamente developer.vonage.com; para poder usar a Voice API da Vonage, você precisará criar um aplicativo Vonage no portal do desenvolvedor.
Todas as solicitações à Voice API da Vonage exigem autenticação. Portanto, você deve gerar uma chave privada por meio da API de Aplicativos, o que permite criar JSON Web Tokens (JWT) para realizar as solicitações. Para fins de demonstração, usaremos a chave da API e o segredo da API.
No menu à esquerda aqui, clique em “Configurações da API”. Na aba “Chaves da API”, você encontrará sua chave da API e o segredo da Account (segredo da API).

No ambiente do Codespaces, copie e cole a chave da API e o segredo da API no arquivo .env. Tome cuidado para não armazenar essas informações no próprio repositório do GitHub.
API_KEY=b**********
API_SECRET=******************Um aplicativo da Vonage contém as informações de segurança e configuração necessárias para interagir com as Voice APIs da Vonage.
Vamos criar uma Application usando o Painel do Desenvolvedor da Vonage.
Clique em “Applications” no menu à esquerda. Em seguida, clique em “Criar um novo aplicativo”. Você precisará dar um nome ao seu aplicativo. Por exemplo, “VoiceApp”. Você também precisará gerar uma chave pública e uma chave privada. Por fim, habilite os recursos de voz.

Verifique isso usando o CLI da Vonage.
Definir configuração
Resultado esperado
Precisamos adquirir um número virtual para que nosso aplicativo possa receber chamadas telefônicas. Você pode fazer isso usando a CLI da Vonage:
Pesquise e compre números de telefone virtuais.
Escolha o número mencionado
Voicena coluna “Recursos”.Podemos pesquisar números pelo código do país. A API de Numbers da Vonage API de Numbers da Vonage usa códigos ISO Alpha-2. Veja os códigos de país listados aqui.
O comando CLI a seguir nos permite adquirir um número virtual:
Ou pesquise e compre números de telefone virtuais usando Painel da Vonage. Selecione o recurso “Voice” no menu suspenso.
Encontre nosso aplicativo
Vincular o número de telefone ao aplicativo
Por exemplo
Resposta esperada:
Você também pode vincular números usando o Painel da Vonage: acesse “Applications”, abra o aplicativo correspondente (por exemplo, o VoiceApp) e clique no botão “Vincular” na lista de números.

Criar objeto de controle de chamadas
Reconhecimento de Fala (ASR)
O Reconhecimento Automático de Fala (ASR) permite que os aplicativos ofereçam suporte à entrada de voz em casos como IVR, identificação e diversos tipos de bots/assistentes de voz. Ao utilizar esse recurso, nosso aplicativo recebe a transcrição da fala do usuário (na forma de texto) quando espera que o usuário responda a alguma pergunta falando, em vez de digitar dígitos (DTMF); e, então, pode continuar o fluxo da chamada de acordo com sua lógica de negócios, com base no que o usuário disse. O esquema a seguir mostra como nosso aplicativo interage com a API da Vonage por meio do Nexmo Call Control Object (NCCO).

Você pode usar a ação de entrada para coletar os dígitos digitados pelo usuário ou a entrada por voz. Essa ação é síncrona; a Vonage processa a entrada e a encaminha para o eventUrl ponto de extremidade do webhook. Você deverá configurá-lo para receber essa entrada em sua solicitação. Seu ponto de extremidade do webhook deve retornar outro NCCO que substitua o NCCO existente e controle a chamada com base na entrada do usuário.
Podemos ver como tudo isso funciona em nosso index.js arquivo. Primeiro, o aplicativo aguarda para ser acionado no webhook/answer ponto de extremidade. Em seguida, o aplicativo segue pelas três ações:
{
action: 'talk',
text: 'Hi, describe an image that you want to generate'
},
{
eventMethod: 'POST',
action: 'input',
eventUrl: [
'[Codespace-or-server-URL]/webhooks/asr'],
type: [ "speech" ],
speech: {
language: 'en-gb',
endOnSilence: 0.1
}
},
{
action: 'talk',
text: 'Thank you'
}Links úteis:
Configurar o OpenAI
A OpenAI lançou novos recursos de geração de imagens com seus modelos DALL·E. Há alguns aspectos muito legais na API da OpenAI. Primeiro, a partir de janeiro de 2023, os usuários recebem um crédito gratuito de US$ 18, que pode ser usado durante os primeiros três meses. É um crédito bem generoso para você explorar! Por exemplo, você pode criar ou editar 900 imagens 1024x1024. Em segundo lugar, de acordo com o capítulo “Seu Conteúdo” nos Termos de Uso da OpenAI: “... A OpenAI, por meio deste, cede a você todos os seus direitos, títulos e interesses relativos à Saída.” Isso significa que você detém a propriedade total das imagens geradas para qualquer uso, inclusive para fins comerciais.
Primeiro, depois de se cadastrar e confirmar seu número de telefone, você precisa gerar sua chave de API.
Com essa chave de API, podemos seguir em frente.
Cole isso no seu .env arquivo
API_KEY=b**********
API_SECRET=******************
OPENAI_API_KEY=sk-**************************************Neste tutorial, usamos API de Imagens para gerar uma imagem.
Para gerar uma imagem, utilizamos a seguinte solicitação POST.
var req = unirest('POST', 'https://api.openai.com/v1/images/generations')
.headers({
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + openaiApiKey
})Com a seguinte carga JSON. Onde você pode gerenciar os parâmetros
n- o número de imagens geradas; você pode solicitar de 1 a 10 imagens por vezsize- tamanhos disponíveis: 256x256, 512x512 ou 1024x1024 pixels. Os tamanhos menores são gerados mais rapidamente.
.send(JSON.stringify({
"prompt": promptText,
"n": 1,
"size": "1024x1024"
}))O texto do prompt que analisaremos a partir da resposta do usuário que recebermos como um webhook.
let promptText = request.body.speech.results[0].textDepois de recebermos uma resposta da API da OpenAI, analisaremos a URL da imagem contida no corpo da resposta.
let imgUrl = res.body.data[0].url Configurar a Messages API da Vonage
A Messages API da Vonage permite que você envie e receba mensagens por SMS, MMS, Facebook Messenger, Viber e WhatsApp! No nosso caso de uso, utilizamos o WhatsApp, mas os usuários podem alterar o código e usar o Facebook ou o Viber. Lembre-se de consultar a documentação da Messages API para obter mais informações."
Usaremos a Messages API do Vonage no ambiente de teste do WhatsApp para receber uma mensagem com conteúdo ou um link.
Criamos a sentMsg função que recebe dois parâmetros, phoneNumber, que contém informações sobre o número de telefone de quem está ligando. E imgUrl que extraímos da resposta da OpenAI.
function sentMsg(phoneNumber, imgUrl)Abra o WhatsApp no seu smartphone e clique no ícone da foto. Em seguida, escaneie o código QR e clique em “enviar” na mensagem já preenchida.

Abrir Sandbox da Messages API se precisar de mais informações ou quiser usar outro aplicativo de mensagens.
Implantar nosso aplicativo no Codespace
Abra o GitHub Codespace no seu fork.
No terminal do Codespace, execute o seguinte comando para instalar nossos pacotes do Node:
npm installExecute o seguinte comando no terminal para obter a URL do GitHub Codespace para os webhooks
echo "https://${CODESPACE_NAME}-3000.preview.app.github.dev/webhooks/asr"Copie e cole o resultado EVENT_URL= no .env arquivo
API_KEY=b**********
API_SECRET=******************
OPENAI_API_KEY=sk-**************************************
EVENT_URL=https://******************************************-3000.preview.app.github.dev/webhooks/asrAgora precisamos atualizar as configurações do nosso aplicativo Vonage para receber os webhooks do CodeSpace. Podemos fazer isso usando o Painel. Vá até “Aplicativo” no menu à esquerda. Escolha nosso aplicativo atual e clique no botão “Editar”.

Atualize as configurações do aplicativo usando a CLI da Vonage. Cole a URL do seu Codespace ou a URL do servidor no lugar de [Codespace-or-server-URL] no comando da CLI a seguir
Execute o aplicativo
No terminal, abra a Port aba. Clique em Private na Visibility coluna e altere para Public.

Está tudo pronto
Experimente ligar para o número vinculado ao aplicativo
**732**56**Diga ao bot qual é a sua gorjeta
Aguarde o conteúdo no aplicativo de mensagens correspondente
Monitorar o console
A seguir, você encontra uma imagem de exemplo que poderá receber no seu celular.

Texto da solicitação: Prado montanhoso nos Cárpatos ucranianos, fotografia, fotorrealista em 8K, HD
Conclusão
Parabéns! Você acabou de criar um serviço de atendimento por bot para chamadas recebidas usando a Voice API da Vonage, que envia mensagens por meio da Messages API da Vonage. E tudo isso está hospedado no GitHub Codespaces. Você pode ampliar esse projeto com o Vonage AI Studio, adicionando um fluxo de trabalho dinâmico para responder de maneira diferente de acordo com as informações fornecidas pelo chamador. Ou, como já fizemos a integração com a OpenAI, você pode integrar o ChatGPT.
Mostre suas criações com IA ou diga-nos como podemos ajudar! Participe da conversa na nossa Slack da Comunidade Vonage ou envie-nos uma mensagem no Twitter.