
Compartilhar:
Victor é gerente de produto da Voice API da Vonage, com sete anos de experiência no setor de telecomunicações, e desenvolvedor de software desde a infância. Ele se dedica a tornar conceitos tecnicamente complexos fáceis de entender e usar, mantendo APIs poderosas de forma autoexplicativa e consistente. Quando não está criando e programando, ele constrói modelos em escala e toca instrumentos musicais folclóricos.
Apresentando o reconhecimento de fala da Voice API
Tempo de leitura: 4 minutos
Recentemente, anunciamos um novo Reconhecimento Automático de Fala (ASR) que permite que seu aplicativo compreenda o que as pessoas estão dizendo quando falam. Esse recurso permite que você crie uma ampla gama de interações por voz, desde simples IVRs com navegação por voz até sofisticados bots e assistentes de voz.
Com o ASR, você pode oferecer aos clientes o atendimento mais rápido possível, habilitar facilmente operações de autoatendimento baseadas em voz, ao mesmo tempo em que proporciona uma experiência de usuário superior e reduz os custos operacionais. Nesta postagem, vamos mostrar como criar um aplicativo IVR simples que o usuário possa navegar usando apenas a voz.
Antes de começar
Para começar, certifique-se de que você tenha um Account na API da Vonage e de que tenha criado um aplicativo de voz.
Vamos usar o Node.js para este exemplo, bem como o Express e os pacotes body-parser. Para facilitar, você pode usar o comando NPM abaixo para instalá-los em seu projeto:
Embora este exemplo utilize o Node.js, é possível recriar a mesma funcionalidade usando sua linguagem de programação ou framework preferido, utilizando o mesmo NCCO, conforme mostramos a seguir.
Escrevendo o código
O reconhecimento de voz é ativado pelo comando NCCO input , que também é adequado para capturar tons DTMF. Supondo que você já tenha um número atribuído ao seu aplicativo, crie um novo arquivo chamado index.js e comece implementando o answer webhook, conforme mostrado no código abaixo:
'use strict'
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const http = require('http')
app.use(bodyParser.json())
app.get('/webhooks/answer', (request, response) => {
const ncco = [{
action: 'talk',
text: 'Thank you for calling Example Inc.! Please tell us how we can help you today. Say Sales to talk to the sales department, Support to get technical support.',
bargeIn: true
},
{
action: 'input',
eventUrl: [
`${request.protocol}://${request.get('host')}/webhooks/asr`
],
speech: {
uuid: [request.query.uuid],
context: ["Sales", "Support"]
}
}
]
response.json(ncco)
})
No trecho de código acima:
uuid é o identificador da chamada (leg) e é um parâmetro obrigatório para esta ação. Você pode obter esse UUID a partir dos parâmetros da consulta do webhook de resposta.
bargeIn: true A função “falar agora” permite que o usuário comece a falar a qualquer momento enquanto a mensagem de conversão de texto em fala está sendo reproduzida, o que pode ser adequado caso o usuário já tenha ouvido essa mensagem em uma chamada anterior.
context na input ação aumenta a precisão do reconhecimento de fala e é adequada para casos do tipo IVR.
Quando o usuário disser o nome do departamento e a palavra for reconhecida pela Vonage, você receberá um callback de webhook no event_url que você especificou na input ação. O corpo da solicitação para esse retorno de chamada contém os resultados do reconhecimento de fala e tem a seguinte aparência:
{
"speech": {
"timeout_reason": "end_on_silence_timeout",
"results": [
{
"confidence": "0.9320692",
"text": "sales"
}
]
},
"dtmf": {
"digits": null,
"timed_out": false
},
"from": "15557654321",
"to": "15551234567",
"uuid": "abfd679701d7f810a0a9a44f8e298b33",
"conversation_uuid": "CON-64e6c8ef-91a9-4a21-b664-b00a1f41340f",
"timestamp": "2020-04-17T17:31:53.638Z"
}Em seguida, você precisa implementar um webhook que determine o que fazer com as informações retornadas pelo ASR:
app.post('/webhooks/asr', (request, response) => {
console.log(request.body)
var department = ""
if (request.body.speech.results)
department = request.body.speech.results[0].text
var departmentNumber = ""
switch (department) {
case 'sales':
departmentNumber = "15551234561"
break;
case 'support':
departmentNumber = "15551234562"
break;
default:
break;
}
var ncco = ""
if (departmentNumber != "") {
ncco = [{
"action": "connect",
"from": "15551234563",
"endpoint": [{
"type": "phone",
"number": departmentNumber
}]
}]
} else {
ncco = [{
action: 'talk',
text: `Sorry, we didn't understand your message. Please try again.`
}, {
action: 'input',
eventUrl: [
`${request.protocol}://${request.get('host')}/webhooks/asr`
],
speech: {
uuid: [request.body.uuid],
context: ["Sales", "Support"]
}
}]
}
response.json(ncco)
})
No trecho acima, você deve substituir os departmentNumber valores por outros números de telefone para que você possa receber e fazer chamadas para um dos números da sua conta Nexmo.
Por fim, crie seu servidor Node.js:
const port = 3000
app.listen(port, () => console.log(`Listening on port ${port}`))
Testando seu aplicativo
Para começar a testar localmente, você precisará tornar seu servidor local acessível ao resto do mundo para que seu answer e event_url webhooks possam ser acessados. Você pode usar o Ngrok para fazer isso, seguindo o guia “Testando com o Ngrok” em nossa documentação.
Com o aplicativo em execução, ligue para o número associado ao aplicativo que você criou no painel de controle. Você ouvirá a mensagem de boas-vindas com as opções do IVR e poderá se conectar a um dos seus números dizendo o nome do departamento.
Tente adicionar outras opções e palavras diferentes para identificar; por exemplo, em vez de anunciar as opções na saudação, mantenha apenas a pergunta de forma bastante genérica e, em seguida, tente analisar a resposta do usuário procurando pelas palavras “vendas”, “suporte” ou até mesmo “comprar”, a fim de transformar o IVR em um assistente inteligente.
E agora?
Saiba mais sobre o novo Reconhecimento de Fala .
Confira o tutorial do Voice Bot.
Confira nossos detalhes de preços detalhes de preços.
Caso tenha alguma dúvida ou sugestão, entre em contato conosco no Slack da nossa Comunidade ou através do support@nexmo.com
Compartilhar:
Victor é gerente de produto da Voice API da Vonage, com sete anos de experiência no setor de telecomunicações, e desenvolvedor de software desde a infância. Ele se dedica a tornar conceitos tecnicamente complexos fáceis de entender e usar, mantendo APIs poderosas de forma autoexplicativa e consistente. Quando não está criando e programando, ele constrói modelos em escala e toca instrumentos musicais folclóricos.