26.02.2025
Zadarma API MULTI IVR

O menu de voz é uma das ferramentas mais importantes para chamadas recebidas. O Resposta Interativa de Voz (IVR) pode apresentar informações úteis aos clientes e encaminhá-los para determinados funcionários e departamentos. Atualmente, um único nível de menu de voz pode não ser suficiente, por isso, vamos aprender a criar um IVR multinível com a API da Zadarma.

Para que precisa de um menu de voz multinível?

O IVR (resposta interativa de voz) processa sinais DTMF — pressionar teclas do telefone. Com vários níveis de menu, pode encaminhar clientes e oferecer-lhes mais opções: inserir dados, ouvir informações, voltar ao passo anterior, etc.

O menu multinível será útil para o seu negócio se tiver:

  • Muitos departamentos. Por exemplo, se trabalha com empresas e particulares, pode começar por separar esses dois grupos no primeiro nível do menu e encaminhá-los diretamente para os departamentos mais adequados.

  • Várias lojas ou escritórios. Todos estes escritórios podem ser “colocados” numa única central telefónica virtual. No primeiro nível do menu, pode escolher uma cidade e, no segundo, um determinado escritório.

  • Vários idiomas. Empresas de grande dimensão atendem frequentemente clientes de várias partes do mundo, pelo que faz sentido segmentá-los por idioma logo no primeiro nível do IVR. Para inglês, prima 1; para espanhol, prima 2. No entanto, recomendamos que essa seleção seja feita antecipadamente, com base no número do chamador ou no destino da chamada.

Como criar um menu multinível?

Um IVR simples pode ser criado na página correspondente da central telefónica virtual da Zadarma. E não apenas um menu, mas vários, por exemplo, para chamadas recebidas em números diferentes. Carregue (ou sintetize automaticamente) a mensagem de saudação e defina os cenários de processamento de chamadas.

O menu multinível da central telefónica pode ser gerido com uma biblioteca PHP predefinida. Aqui estão as condições necessárias para que funcione:

  1. A central telefónica está criada e ativa
  2. Na página A Minha Central – Chamadas recebidas e IVR, os ficheiros de áudio estão carregados e os cenários de chamadas recebidas estão definidos
  3. Na página A Minha Central – Números de extensão, todos os números de extensão necessários estão criados e têm um sistema operativo ou equipamento configurado para chamadas recebidas ou reencaminhamento ativado
  4. Um número virtual está ligado para receber chamadas de clientes
  5. Na página Definições – Integrações e API, a Chave e o Segredo são gerados para a API

As funcionalidades detalhadas e as regras para a criação do menu estão descritas no Github. Aqui, iremos apresentar um exemplo prático e mostrar o código para a criação do menu.

A resposta de voz multinível é criada através de Webhooks. É necessário ter experiência com PHP e Git, bem como um servidor próprio ou um servidor de terceiros para alojar o código com um URL fixo para onde os webhooks serão enviados. Aqui estão outros requisitos importantes para a configuração do servidor:


PHP >= 7.2.0
cURL
TLS v1.2
php-mbstring

Exemplo de criação de IVR

Para receber notificações de chamadas, é necessário criar um link acessível que receba pedidos POST com informações da Zadarma. Este link deve ser inserido na conta pessoal, na secção "Notificações de chamadas da central telefónica".

Transfira uma biblioteca no Github e coloque o seguinte código PHP no link:


<?php

use MultiIvr\MultiIvr;

if (isset($_GET['zd_echo'])) {
    exit($_GET['zd_echo']);
}

require_once 'vendor/autoload.php';
$key = 'A sua chave de API';
$secret = 'O seu segredo de API';
$ivrMenuConfig = 'a sua configuração';
MultiIvr::default()->handle($key, $secret, $ivrMenuConfig);

$key e $secret são chaves de autorização para a interface da API e devem ser obtidas na conta pessoal. $ivrMenuConfig é um ficheiro de texto com as configurações da resposta interativa de voz, que serão discutidas abaixo.

Para facilitar a configuração do menu de voz para cada cliente, todas as configurações do seu IVR estão num ficheiro separado. Para adaptar o menu às suas necessidades, não é necessário alterar o código, apenas as definições.

Aqui está o nosso exemplo. Vamos criar um IVR de dois níveis:

Primeiro nível: Ligou para a empresa Babylon. Se tem uma conta empresarial, prima 1. Se é um cliente particular, prima 2.

Tecla 1. Para contactar o departamento financeiro, prima 1. Para contactar o departamento de vendas jurídicas, prima 2. Se tiver outra questão, aguarde pela resposta.

Tecla 2. Se é um novo cliente, prima 1. Se já tem uma conta, prima 2 ou aguarde pela resposta.

Multilevel IVR example:


start default action=goto action-target=main
menu name=main playfile=43d8a740ec032766
menu name=main button=1 action=goto action-target=main.1
menu name=main button=2 action=goto action-target=main.2
menu name=main default action=redirect action-target=100

menu name=main.1 playfile=a279dd3a1da19e57
menu name=main.1 button=1 action=redirect action-target=102
menu name=main.1 button=2 action=redirect action-target=1-5
menu name=main.1 default action=redirect action-target=100

menu name=main.2 playfile=a6842305f1996e34
menu name=main.2 button=1 action=redirect action-target=105
menu name=main.2 button=2 action=redirect action-target=6-7
menu name=main.2 default action=redirect action-target=100

Action – tipo de ação. Existem dois valores possíveis para a ação:

  • redirect – redirecionamento para um cenário ou número de extensão da central telefónica;
  • goto – redirecionamento para o menu de voz pelo seu nome.

No nosso exemplo:

  • número de extensão 102 – funcionário do departamento financeiro para contas empresariais
  • número de extensão 100 – operador da primeira linha de suporte
  • cenário de menu 1-5 – departamento de vendas
  • número de extensão 105 – gestor para novos clientes
  • cenário de menu 6-7 – departamentos para contas individuais
  • playfile=a6842305f1996e34 – ficheiro de áudio com a saudação, para obter o ID do ficheiro aceda às definições do IVR ("Escolher ou gravar outro ficheiro")

Pode adicionar ainda horários de funcionamento e agendamentos. Pode encontrar um exemplo disso no Github.