Como criar um IVR simples com entrada por voz e teclado
Um Resposta Interativa de Voz (IVR) permite automatizar interações telefônicas, oferecendo aos usuários um menu de opções. Enquanto os IVRs tradicionais dependem da entrada por teclado (DTMF), os sistemas modernos costumam incluir o recurso de conversão de fala em texto (ASR) para proporcionar uma experiência mais natural ao usuário. Você pode consultar o IVR avançado Consulte o guia para obter mais detalhes.
Para uma visão geral dos conceitos de automação de voz e uma comparação entre as três abordagens de implementação, consulte Entendendo a automação por voz.
Neste guia, você criará um aplicativo em Node.js que atende uma chamada e solicita que o usuário pressione uma tecla ou fale. Em seguida, o aplicativo repetirá essa entrada para quem ligou.
Pré-requisitos
- Um account da API da Vonage. Cadastre-se gratuitamente.
- Node.js instalado no seu computador.
- ngrok instalado no seu computador.
Inicialize a pasta do seu projeto
Antes de configurar seus recursos da Vonage, crie um local para armazenar seu código. Isso garante que você tenha um destino para suas chaves de segurança mais tarde.
Exponha seu servidor local
Vonage needs to send webhooks to your local machine. Use ngrok to expose your server:
Note: Keep this terminal open and copy your ngrok URL. You'll need it in the next steps.
Configure seus recursos da Vonage
Configure seu ambiente usando o Painel da API da Vonage.
Criar um aplicativo de voz
- Acesse Applications > Criar um novo aplicativo.
- Dê um nome ao seu aplicativo (por exemplo, Simple-IVR-Speech-DTMF).
- Clique Gerar chave pública e chave privada.
- Mova o arquivo baixado
private.keysalve o arquivo na pasta do seu projeto simple-ivr. - Sob Recursos, ativar Voz.
- Defina o URL da resposta ao seu URL do ngrok com
/webhooks/answeranexado. Exemplo:https://{random-id}.ngrok.app/webhooks/answer. Defina o método como GET. - Defina o URL do evento ao seu URL do ngrok com
/webhooks/eventsanexado. Exemplo:https://{random-id}.ngrok.app/webhooks/events. Defina o método como POST. - Clique Criar um novo pedido na parte de baixo.
Vincular um número virtual
- Acesse Números de telefone > Números para compra e alugar um número com Voz recursos.
- Voltar para Applications, selecione seu aplicativo de IVR e vincule o novo número a ele.
Atender a chamada recebida
Quando um usuário liga para o seu número, a Vonage solicita um NCCO (Objeto de controle de chamadas) da URL da sua resposta. Crie um arquivo chamado index.js e adicione o seguinte código:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
// 1. Initial greeting and input request
app.get('/webhooks/answer', (req, res) => {
const ncco = [
{
action: 'talk',
text: 'Hello. Please enter a digit or say something.',
bargeIn: true
},
{
action: 'input',
type: ['dtmf', 'speech'],
dtmf: { maxDigits: 1 },
speech: { language: 'en-us' },
eventUrl: [`${req.protocol}://${req.get('host')}/webhooks/input`]
}
];
res.json(ncco);
});
Processar entrada de voz e DTMF
Adicione o manipulador de entrada ao seu index.js para processar a carga útil que a Vonage envia de volta assim que o usuário interage com o menu.
// 2. Handle the user's response
app.post('/webhooks/input', (req, res) => {
let responseText = "I'm sorry, I didn't catch that.";
if (req.body.dtmf && req.body.dtmf.digits) {
responseText = `You pressed ${req.body.dtmf.digits}.`;
}
else if (req.body.speech && req.body.speech.results) {
const transcript = req.body.speech.results[0].text;
responseText = `You said: ${transcript}.`;
}
res.json([{ action: 'talk', text: responseText }]);
});
// 3. Log call events
app.post('/webhooks/events', (req, res) => {
res.sendStatus(200);
});
app.listen(3000, () => console.log(`IVR server running on port 3000`));
Teste o IVR
- Inicie seu servidor:
node index.js. - Ligue para o seu número da Vonage:
- Teclado: Pressione 1. O sistema de atendimento automatizado (IVR) deve dizer: Você digitou 1.
- Discurso: Diga Olá. O IVR deveria dizer: Você disse: Olá.
Próximos passos
- Transferência de chamada: Adicionar um
connectação para conectar o chamador ao departamento pertinente com base nas informações fornecidas pelo usuário por meio de número de telefone, terminal SIP ou seu aplicativo web usando o Client SDK. - Gravação de chamadas: Gravar e transcrever a ligação com
recordação. - IA de voz: Envie a entrada do usuário para o seu agente de IA para fornecer informações úteis ao interlocutor.
- Personalização: Alterar conversão de texto em fala falar ou usar o fluxo configure no seu NCCO para reproduzir arquivos MP3 pré-gravados em vez da função de conversão de texto em fala.