Suporte
- Particularidades de Clientes
- Sesa (10.243.39.50)
- Comunica - URA CETURB que envia whats
- Renovar Token Camilo do Santos
- khomp e goip contil
- Permissão de enviar mensagem thema veículos
- VPN da odonto company
- Paluma não está recebendo ligações (continuar)
- Configurações e detalhes do sistema
- Verificações
- (servidores antigos) Verificar se os nodes estão rodando tanto no forever quanto no pm2
- Verificação de logs
- Consultar coisas
- Fail2ban
- Restarts funcionais
- Chats não aparecem para as pessoas
- Bloqueio e start de servidores
- *****Reiniciar Node (wiki antiga)
- Reiniciar Servidor
- Reiniciar os serviços
- Reiniciar asterisk
- Reiniciar Postgres
- Wiki antiga
- Problemas recorrentes
- Erro de web rtc
- Alerta de undefined / Problemas de microfone
- Campanha não discando
- Licenças excedidas
- Chats não aparecem
- Alerta de Chat desconectado
- Não aparece nada na página inicial
- R2: 403 Forbidden
- VPN da odonto company
- Supervisor não consegue ver ligações de outros usuários
- Erro NodeJS
- Problemas para realizar escuta/sussurro
- Telefonia
- Asterisk
- Configs do sistema
Particularidades de Clientes
Relatando algumas coisas que funcionam somente em um cliente específico
Sesa (10.243.39.50)
Entroncamento novo do servidor físico:
Tronco troncosipsesa4
- Foi feito um novo entroncamento da sesa, substituindo o anterior para ser entroncado diretamente na telefonia, sem passar por nenhum outro mediador.
- Este tronco se chama "troncosipsesa4"
- Por conta de um impedimento de typagem no campo de tech prefix, a tech foi configurada diretamente no código então poderá se perder caso haja algum reload de tronco em tela.
TECH PREFIX móvel: 50005*031
TECH PREFIX local: 50005*
- use o comando "nano /etc/asterisk/extensions_out.conf" para entrar no arquivo
- modifique os dois primeiros exten do contexto "[sip-sesa4]" com a tech móvel e os dois últimos com a tech local
O contexto deve ficar assim:
[snt-sesa4]
exten => _XXXXXXXX,1,Noop(S - Contexto: 9 - Organização: 1 - Desc: Sainte sesa 4)
same => n,Set(__EXTENPRC=${EXTEN})
same => n,Set(__ID_LINK=${CHANNEL(LINKEDID)})
same => n,Set(__ID_ORGANIZACAO=1)
same => n,Set(__TIPOCALL=S)
same => n,Set(CHANNEL(accountcode)=S::${EXTEN}::${CHANNEL(LINKEDID)}::1)
same => n,AGI(script.php,insCallSainte,${EXTEN},${CHANNEL(LINKEDID)},${CDR(uniqueid)},${CDR(src)},${CDR(dst)},1,${v_id_pc},${v_id_pe},${v_id_pessoa},${v_numero})
same => n(protocolo),Agi(script.php,insProtocolo,${EXTENPRC},${ID_LINK},${CDR(uniqueid)},S,${id_call},${ID_ORGANIZACAO},${ID_PC},${ID_TRONCO},${ID_WORKFLOW})
same => n,Set(__PROTOCOLO=${ret_protocolo})
same => n(blacklist),Agi(script.php,actBlacklistSainte,${EXTEN},${ID_LINK},${EXTEN},,,,,vblacklist,)
same => n,Gotoif($["${vblacklist}" = "1"]?encerrar)
same => n(discar),Noop(Sem conf de Bina: 62)
same => n,Set(__ID_PC=2)
same => n,Set(__ID_TRONCO=62)
same => n,Set(__TELEFONE=50005*${EXTEN})
same => n,Dial(SIP/50005*${EXTEN}@troncosipsesa4,45,tTkKU(gravacao))
same => n(encerrar),HangUp()
exten => _9XXXXXXXX,1,Noop(S - 9 - 1 - Sainte sesa 4)
same => n,Set(__EXTENPRC=${EXTEN})
same => n,Set(__ID_LINK=${CHANNEL(LINKEDID)})
same => n,Set(__ID_ORGANIZACAO=1)
same => n,Set(__TIPOCALL=S)
same => n,Set(CHANNEL(accountcode)=S::${EXTEN}::${CHANNEL(LINKEDID)}::1)
same => n,AGI(script.php,insCallSainte,${EXTEN},${CHANNEL(LINKEDID)},${CDR(uniqueid)},${CDR(src)},${CDR(dst)},1,${v_id_pc},${v_id_pe},${v_id_pessoa},${v_numero})
same => n(protocolo),Agi(script.php,insProtocolo,${EXTENPRC},${ID_LINK},${CDR(uniqueid)},S,${id_call},${ID_ORGANIZACAO},${ID_PC},${ID_TRONCO},${ID_WORKFLOW})
same => n,Set(__PROTOCOLO=${ret_protocolo})
same => n(blacklist),Agi(script.php,actBlacklistSainte,${EXTEN},${ID_LINK},${EXTEN},,,,,vblacklist,)
same => n,Gotoif($["${vblacklist}" = "1"]?encerrar)
same => n(discar),Noop(Sem conf de Bina: 62)
same => n,Set(__ID_PC=2)
same => n,Set(__ID_TRONCO=62)
same => n,Set(__TELEFONE=50005*${EXTEN})
same => n,Dial(SIP/50005*${EXTEN}@troncosipsesa4,45,tTkKU(gravacao))
same => n(encerrar),HangUp()
exten => _0ZZXXXXXXXX,1,Noop(S - 9 - 1 - Sainte sesa 4)
same => n,Set(__EXTENPRC=${EXTEN})
same => n,Set(__ID_LINK=${CHANNEL(LINKEDID)})
same => n,Set(__ID_ORGANIZACAO=1)
same => n,Set(__TIPOCALL=S)
same => n,Set(CHANNEL(accountcode)=S::${EXTEN:1}::${CHANNEL(LINKEDID)}::1)
same => n,AGI(script.php,insCallSainte,${EXTEN},${CHANNEL(LINKEDID)},${CDR(uniqueid)},${CDR(src)},${CDR(dst)},1,${v_id_pc},${v_id_pe},${v_id_pessoa},${v_numero})
same => n(protocolo),Agi(script.php,insProtocolo,${EXTENPRC},${ID_LINK},${CDR(uniqueid)},S,${id_call},${ID_ORGANIZACAO},${ID_PC},${ID_TRONCO},${ID_WORKFLOW})
same => n,Set(__PROTOCOLO=${ret_protocolo})
same => n(blacklist),Agi(script.php,actBlacklistSainte,${EXTEN},${ID_LINK},${EXTEN:1},,,,,vblacklist,)
same => n,Gotoif($["${vblacklist}" = "1"]?encerrar)
same => n(discar),Noop(Sem conf de Bina: 62)
same => n,Set(__ID_PC=2)
same => n,Set(__ID_TRONCO=62)
same => n,Set(__TELEFONE=50005*031${EXTEN:1})
same => n,Dial(SIP/50005*031${EXTEN:1}@troncosipsesa4,45,tTkKU(gravacao))
same => n(encerrar),HangUp()
exten => _0ZZ9XXXXXXXX,1,Noop(S - 9 - 1 - Sainte sesa 4)
same => n,Set(__EXTENPRC=${EXTEN})
same => n,Set(__ID_LINK=${CHANNEL(LINKEDID)})
same => n,Set(__ID_ORGANIZACAO=1)
same => n,Set(__TIPOCALL=S)
same => n,Set(CHANNEL(accountcode)=S::${EXTEN:1}::${CHANNEL(LINKEDID)}::1)
same => n,AGI(script.php,insCallSainte,${EXTEN},${CHANNEL(LINKEDID)},${CDR(uniqueid)},${CDR(src)},${CDR(dst)},1,${v_id_pc},${v_id_pe},${v_id_pessoa},${v_numero})
same =>n(protocolo),Agi(script.php,insProtocolo,${EXTENPRC},${ID_LINK},${CDR(uniqueid)},S,${id_call},${ID_ORGANIZACAO},${ID_PC},${ID_TRONCO},${ID_WORKFLOW})
same => n,Set(__PROTOCOLO=${ret_protocolo})
same => n(blacklist),Agi(script.php,actBlacklistSainte,${EXTEN},${ID_LINK},${EXTEN:1},,,,,vblacklist,)
same => n,Gotoif($["${vblacklist}" = "1"]?encerrar)
same => n(discar),Noop(Sem conf de Bina: 62)
same => n,Set(__ID_PC=2)
same => n,Set(__ID_TRONCO=62)
same => n,Set(__TELEFONE=50005*031${EXTEN:1})
same => n,Dial(SIP/50005*031${EXTEN:1}@troncosipsesa4,45,tTkKU(gravacao))
same => n(encerrar),HangUp()
Comunica - URA CETURB que envia whats
O cliente Comunica possui uma ura chamada "Ceturb envia whats" na empresa Ceturb que está configurada para enviar uma mensagem de whatsapp para a pessoa que ligar para a entrante, quando a pessoa digitar a opção 1.
Da última vez houve uma intercorrência com essa ura, onde não estava sendo disparada a mensagem.
O script "/var/lib/asterisk/agi-bin/send_whats.php" recebe as informações que o asterisk guardou sobre a ligação e consome a api "https://comunica.callon.com.br/api/mvtobe/26?numero={$number_to_send}&texto={$texto_enc}&mensagem_ativa=1" que envia de fato as mensagens.
Podemos ver os logs e a resposta que a api manda indo no seguinte arquivo de log:
use o comando:cat /var/www/html/siscrm/tmp/ura_ceturb.log
Renovar Token Camilo do Santos
Renovar Token Camilo do Santos
Para renovar o token você acessa ssh da Camilo dos Santos e roda os seguintes comandos:
1° cd /var/www/html/siscrm/scripts/microsoft/
2° php index.php cotacao
3° copie o código que informa na linha que irá aparecer e clique no link que está na mesma linha
4° cole o código
5° Selecione a opção de cotação
6° rode o comando
7° Aperte Ctrl e C para começar novamente a inserir os códigos
8° Rode novamente
9° php index.php sac ( e faça como fez no mesmo antes)
10° Aperte novamente o CRTL C, coloca cd /var/www/html/siscrm/scripts/microsoft/
e depois “./readmail.sh”
Dados para acessar os e-mails da Camilo:
sac@camilodossantos.com.br Senha: rod22Cam1402@
cotacao@camilodossantos.com.br Senha: rod22Cam1402@
(Se for diferente, verificar com quem sabe e atualizar aqui)
Configuração do certificado SSL servidor físico recurso técnico não homologado
utilizar o comando: ./pluri_vhssllocal.sh + IP servidor depois seguir o print abaixo
khomp e goip contil
Quando não estiver funcionando o número móvel na Contil, você deve validar a configuração do goip no servidor
Para isso, você deve seguir os seguintes passos
1° passo: entrar no Tabby e criar um novo perfil de ssh
2° passo: selecionar "SSH connection"
3° passo: fazer a conexão ssh para o servidor 10.25.5.45 na porta 1077
Você deve adicionar a key do suporte suporte.ppk para fazer a autenticação. Não esqueça de usar a vpn para fazer o túnel com o servidor.
4° passo: Fazer o redirecionamento de portas do goip e da khomp. Dessa forma, irá redirecionar para rodar localmente na sua máquina.
Obs: No linux, não fazer o redirecionamento para as portas 1000, de preferência escolha as de porta 3000
5° passo: entre no goip usando o seguinte caminho: 127.0.0.1:3002
O serviço está rodando no servidor externo redirecionado no servidor local da máquina, usando no caso, a porta 3002.
Você terá que usar um login e senha para desbloquear a página do goip. É padrão:
login: admin
senha: admin
6° passo: na página do goip, entre em "Configurations"
7° passo: Depois em "Basic VoIP"
8° passo: validar os parâmetros da conta
Permissão de enviar mensagem thema veículos
As informações abaixo tem a ver com configuração do sistema, porém levando em conta as particularidades da thema, achei melhor documentar essa situação.
A thema veiculos têm diversos papéis de cliente ligados à um supervisor de equipe, e também canais de chat ligados a esses supervisores.
Quando acontece essa situação, quer dizer que o usuário está em uma equipe vinculado a um papel de cliente que não está vinculado a nenhum bot em um canal de chat.
Por exemplo, neste caso os operadores das equipes do Ramon Franco não conseguiam fazer ativos de chat pois o Bot do Ramon Franco não estava vinculado ao canal de chat dele.
VPN da odonto company
***Foi feita uma configuração no servidor da odonto company em que foi fixado o ip na rede, porém se por algum motivo houver alguma inconsistência e o ip trocar, deve ser seguido o passos ao ir na empresa:
1° passo: iniciar o servidor se ele não estiver rodando
2° passo: fazer o login
login: root
senha: 102030
3° passo: verificar o ip que está
ip a
4° passo: verificar o acesso local da máquina
5° passo: tentar subir a vpn com o comando a seguir
/usr/sbin/openvpn --config /etc/openvpn/config/odontocompany_lw.ovpn --daemon
6° passo: se não subir, verificar os serviços de vpn que estão com o nome "openvpn" com o comando a seguir
ps aux | grep -e "openvpn"
7° passo: matar os serviços duplicados e tentar subir novamente
kill -9 (código da vpn)
/usr/sbin/openvpn --config /etc/openvpn/config/odontocompany_lw.ovpn --daemon
Verifique se subiu:
ip a
8° passo: Se não subiu ainda, verifique a data
date
Se estiver muito diferente da data atual, modificar com esse comando
timedatectl set-time "2026-03-02 10:36:00"
(modifique de acordo com a data e hora atual)
9° passo: dê um restart na vpn com o seguinte comando na pasta root
./scr_start.sh
ip a
Verifique se subiu
obs: provavelmente só verificando essas questões, já irá voltar
Paluma não está recebendo ligações (continuar)
Verifique se o tronco está OK usando os seguintes comandosrasterisk
Depois na CLI:
sip show peers
Se não estiver Ok e estiver unreachable, realize os seguintes procedimentos:
core reload
e
core restart now
E verifique novamente.
Se não voltar, verifique se o servidor foi reiniciado recentemente com o comando:
uptime
Se foi reiniciado recentemente:
- utilize os comandos:
Para subir a rota:
route add -net 172.28.12.0/24 gw 10.82.77.118 dev eno2
Para reiniciar o serviço de rede:
systemctl restart networking.service
Para verificar se a rota subiu:
ip route list
Configurações e detalhes do sistema
Configuração de horário padrão das campanhas
Ao entrar em uma campanha e depois em "Horários", verificamos que as campanhas são definidas num horário padrão: de segunda a sexta, das 08:00 às 18:00.
Pode ser feita a alteração dos horários daquela campanha, clicando na lupa de cada dia. Porém, só será alterado o horário daquela campanha, não de outras já criadas ou que ainda serão criadas.
Para fazer isso, podemos fazer da seguinte forma:
- Configurações -> Módulos -> Campanhas -> Script Pós Insert (PHP) -> Editar os horários e os dias padrões no final do código
ATENÇÃO!!! ISSO DEVE SER ALTERADO COM O MAIOR CUIDADO POSSÍVEL POIS É UMA ALTERAÇÃO SENSÍVEL DE CÓDIGO. SÓ ALTERAR OS VALORES E NADA ALÉM!!!
Obs: favor anotar esse tipo de alteração pois no momento em que ele está funcionando ao fazer esse tipo de alteração, quando o sistema for atualizado a alteração irá se perder!
Informação no description
O sistema adiciona informações dos usuários no description do ramal específico deles quando é configurado ramal no sistema. Informações como nome, papel de equipe, supervisor, nível, fila e etc. E ele valida essas informações no monitoramento da telefonia para o aparecimento de informações personalizadas como as pessoas na equipe e quem está adicionado na fila.
Entrando no arquivo que aparece essas configurações, que é: /etc/asterisk/sip.conf , podemos tirar um exemplo:
[503]
type=friend
host=dynamic
secret=pL@7rml34#sYs
dtmfmode=rfc2833
insecure=invite,port
nat=force_rport,comedia
context=santhmg
disallow=all
allow=alaw,ulaw,g729,opus,gsm
qualify=yes
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
canreinvite=no
trustrpid=no
sendrpid=no
username=503
call-limit=1
callgroup=1
pickupgroup=1
callerid="Matheus Lima" <503>
defaultusername=503
description=O:1:6:Matheus Lima:29:1:1:22:1:13:teste
Onde ele valida:
description=O:1:6:Matheus Lima:29:1:1:22:1:13:teste
description=[tipo(R ou 0)]:[id da organização]:[id papel de cliente do ramal]:[nome do usuário]:[id usuário]:[nível usuário]:[id papel de cliente da equipe]:[id equipe]:[id supervisor equipe]:[id fila]:[nome fila]
*** [tipo] -> Quando o sistema define no ramal R ou 0, ele define se a flag "Operadores" está marcada no papel de equipe
- Se não estiver marcada, o ramal será definido como R e não adicionará os ramais na fila.
- Se estiver marcada, o ramal será definido com 0 e adicionará os ramais na fila.
obs: No tronco define de forma diferente no description
description=T:[id da organização]:[id papel de cliente do tronco]:::::::[id do tronco]:[quantidade de canais]
***[tipo] -> T de tronco
Se ao alterar, por exemplo, equipe do usuário, o usuário deverá ter o id da equipe no seu description. Se por alguma razão não tiver alterado, deverá ser dado o reload no ramal e verificar no sip.conf. Se mesmo assim não for, deve ser verificado se os reloads estão travados.
Configuração KND na Pluri
1º - Conferir se a rota no site do classificador de chamadas do Henrique está com a variável “CDC-INFO1” inserida no campo SIPHeaderAdd. Caso não esteja, inserir da mesma forma que está no print, ou na linha acima em aspas.
2º - Conferir no menu de Configurações - Config se os 3 campos relacionados ao AMD estão preenchidos. O campo de horário de validação deve estar preenchido da forma de HH:MM, ou seja, horas e minutos. EX: 00:30.
A identificação do AMD é uma variável que é possível informar dependendo de qual AMD o cliente utiliza. Atualmente, temos apenas o do Henrique, que para funcionar informamos a tag “KND”
A key(chave) de utilização da API é uma variável que depende de cada conta que é utilizada no Henrique. Nos clientes que utilizam o AMD contratado através da Pluri a chave é sempre a mesma da imagem, mas deixarei aqui também para colocarem em algum cliente de forma mais fácil. Chave “05a580eb-30f5-4f9b-b56a-e1559023ae53”
(Verificar se ainda é válido a informação abaixo)
Por fim, por enquanto, estamos precisando dar permissões gerais para que o arquivo possa funcionar da forma correta. Para dar essa permissão, é possível realizar ela através do seguinte comando no terminal do servidor:
chmod 0777 /var/www/html/siscrm/scripts/amd.php
E para rodar o script manualmente para validar o funcionamento do mesmo, você pode executar ele através do php -f /var/www/html/siscrm/scripts/amd.php
Verificações
(servidores antigos) Verificar se os nodes estão rodando tanto no forever quanto no pm2
Caso estejam, encerre todos os processos do forever, e reinicie os processos que rodam através do PM2.
Verificação de logs
Logs de importação:cd /var/www/html/siscrm/tmp
Remover arquivos log
cd /var/log/asterisk/
ls -ilh
rm -vf messages
rm -vf full
cd /var/log/postgresql/
ls -ilh
rm -vf postgresql-14-main.log.*
df -h
service postgresql restart
service apache2 restart
-> elimina todos os processos referentes ao php
killall php
systemctl restart postgresql.service
ps aux | egrep -i "php"
service apache2 stop
service apache2 start
killall php
systemctl status php7.4-fpm.service
Excluir todos os arquivos mp3 de uma pasta
cd /var/lib/asterisk/sounds
ls
rm -vf *.mp3
Consultar coisas
Consultar arquivos e diretórios
ls
ls -allh
Consultar load e serviços rodando no servidor:
htop
Consultar no CLI do asterisk
- Para ir pro CLI do asterisk, dê o comando
rasterisk
-> Consultar ramais e troncos no SIP:
sip show peers
-> Consultar troncos registrados:
sip show registry
-> Consultar todas as filas:
queue show
-> Consultar fila específica
queue show [fila]
-> adicionar ramal na fila
queue add member SIP/numerodoramal to nomedafila
-> remover ramal na fila
queue remove member SIP/numerodoramal from nomedafila
Consultar chamadas SIP:
-> sngrep
- teclando f3 você consegue filtrar pelo número que aparece na requisição:
- Ex de ligação no sngrep:
- INVITE: Indica que o usuário está sendo convidado a participar de uma sessão multimídia.
- Trying: Indica que a requisição está sendo processada.
- 200 OK(Answer): Indica a confirmação de atendimento.
- ACK: Confirmação de mensagem recebida como resposta final a um INVITE.
-
OPTIONS: Faz uma pergunta sobre quais métodos e extensões são suportados pelo servidor e pelo usuário descrito no campo de cabeçalho.
-
BYE: Usado para liberar os recursos associados a uma ligação e forçar a desconexão/desligamento da mesma.
-
CANCEL: Cancela uma requisição que ainda esteja pendente, ou seja, em andamento.
Consultar o node:
Nas novas versões já temos o pm2:
pm2 list-> irá exibir os serviços de node que estão em andamentopm2 monit-> uma mistura do list com o htop, irá te mostrar em tempo real quanto está consumindo de memória o node
- app-chat: Node responsável pelo serviço de chat (exibição de atendimentos, por exemplo)
- app-crm: Node responsável pelas ações do CRM (reload, deslogar, e outras funções)
- app-telecom: Ainda não está sendo utilizado, necessário atualizar aqui quando o Alan informar
Nas versões anteriores, o node roda através do comando forever:
forever list
Mostrar canais ativos de chamadas
core show channels verbose
Derrubar chamada presa
channel request hangup + Ramal
Transferir ligação > *2 (aguardar a mensagem de transferência) + ramal
abrir arquivo de ramais e troncos:
vim /etc/asterisk/sip.conf
recarrega todas as configurações realizadas no arquivo sip.conf
sip reload
Arquivo Zipado:
lsgzip -d messages.1.gztail -1000 messages.1 (exemplo)
Fail2ban
ver status do fail2ban
service fail2ban status
-
Possui fail2ban cadastrado
Cadastro
1 - apt update
2 - apt install fail2ban
3 - cd /etc/fail2ban
4 - ls - - color
5 - cp jail.conf jail.local
6 - vim jail.local
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
logpath = /var/log/auth.log
maxretry = 3
[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
logpath = /var/log/asterisk/messages
maxretry = 3
findtime = 1d
bantime = 86400
ignoreip = 127.0.0.1/32 200.155.77.119/32 191.252.210.219/32
load
Restarts funcionais
Chats não aparecem para as pessoas
Vá no servidor referido que está acontecendo isso e dê os seguintes comandos:
systemctl stop search_chats.service
systemctl disable search_chats.service
depois
systemctl enable search_chats.service
systemctl start search_chats.service
Bloqueio e start de servidores
systemctl stop postgresql@16-main.service asterisk.service apache2.service
systemctl start postgresql@16-main.service asterisk.service apache2.service
*****Reiniciar Node (wiki antiga)
node
-
index.js-> sistema novo
/var/www/app_chat/ ou /var/www/app_server/ (Node do Chat ou da Telefonia, respectivamente)
forever stop index.js
forever start index.js
-
app.js-> sistema antigo
cd /var/www/app_server;
forever stop app.js; cat key.js > app.js ; cat code.js >> app.js; forever start -o out.log -e err.log app.js
Reiniciar Servidor
Verifique se há espaço em disco com o comando:
df -h
Se tiver 100% você não deve reiniciá-lo antes limpar espaço em disco.
Quando for limpo, você pode reiniciar com o seguinte comando:reboot now
Verifique se subiu os serviços adequadamente.
Reiniciar os serviços
Para reiniciar o serviços, você deve usar os seguintes comandos:
- irá iniciar postgres, asterisk, janus e apache nessa ordem
systemctl restart postgresql@16-main.service asterisk.service janus.service apache2.service
Depois você deve reiniciar o pm2
pm2 restart all
Reiniciar asterisk
Parar o banco de dados primeiro
service postgresql stop
Reiniciar o asterisk
core restart now
Depois iniciar o banco novamente
service postgresql start
Reiniciar Postgres
Reiniciar o serviço do PostgreSQL (Banco de dados)
systemctl restart postgresql.service
OU
service stop postgresql
service start postgresql
Wiki antiga
wiki antiga
Verificar quem fez o hangup
cd /var/log/asterisk
tail -100000 messages | egrep “número”
tail -100000 messages | egrep “número do canal (C-alguma coisa)”
Verificar qual foi o primeiro evento a dar o left_bridge, será o ramal ou o nome do tronco. Se for o ramal, indica que o operador foi o primeiro a sair da ligação, caso seja o tronco, foi o cliente.
Configurar ip fixo
cd /etc/network
vim interfaces
i = editar
esc = sair da inserção
:wq = sair da edição (w = salva | q = sai da edição)
Testar velocidade internet
sudo rm /etc/apt/sources.list.d/speedtest.list
sudo apt-get update
sudo apt-get remove speedtest
sudo apt-get install curl
curl -s https://install.speedtest.net/app/cli/install.deb.sh | sudo bash
sudo apt-get install speedtest
speedtest-cli
VPN
ps aux | egrep “openvpn”
kill -9 (código da vpn)
/usr/sbin/openvpn --config /etc/openvpn/config/+nome vpn
–
cd /etc/openvpn/config/
Não é possível acessar esse site
Ir no atalho Google Chrome no campo destino No campo Destino, adicione a seguinte indicação após as aspas -ignore-certificate-errors
chrome://flags/ -> “Allow invalid certificates for resources loaded from localhost” -> selecione Enabled (Habilitado).
Realizar teste internet CMD
Endereço IPva = ip dispositivo
Gateway padrão = ip roteador da internet conectada no dispositivo
ping /? = ver a lista completa de complementos disponíveis
ms = quantidade de milissegundos que o dispositivo demora para responder, quanto menor o tempo menos é a latência
OBS: Quando o dispositivo pingado estiver offline, os pacotes enviados serão todos perdidos. Neste caso, a mensagem "esgotado o tempo limite do pedido" será exibida na tela e haverá 100% de perda. Por padrão, o comando enviará quatro pacotes de 32 bytes e calculará o tempo de resposta. Ao final, será exibido a estatística com o número de pacotes enviados, recebidos, perdidos, tempo máximo, mínimo e média.
sudo du /var/* -hs = verifica qual das pastas dentro do var está ocupando mais espaço
Atualizar hora terminal
date +%T -s "HH:MM:SS"
date +%T%p -s "HH:MM:SSPM"
Manualmente
Para atualizar deve ser executado os comandos "date"(atualiza a data), e "hwclock" (sincronizá-la com a data do hardware)
Exemplo:
mm (mês 00-12)
dd (dia 00-31)
HH (hora 00-23)
MM (min 00-59)
YYYY (0000-9999)
date mmddHHMMYYYY
Exemplo 1:
date 091418302008 | hwclock -w
Alterando apenas o relógio:
date +%T -s "15:53:13"
date +%T%p -s "03:53:13PM"
RM
rm [opções] arquivo/diretório
Descrição
Este comando remove arquivos.
Algumas opções do comando
-
-f : apaga sem pedir confirmação.
-
-i : apaga após pedir confirmação.
-
-r : apaga arquivos e subdiretórios.
-
-v : lista arquivos deletados.
Exemplos
-
Para apagar o arquivo teste.txt, basta digitar
rm teste.txt
-
Para apagar o diretório teste e todo o seu conteúdo, digite
rm -fr teste
-
Pode-se usar os caracteres ?, *, [ ] e { } como curingas. O primeiro substitui apenas um único caractere, o segundo substitui um número qualquer de caracteres, o terceiro substitui um único caractere dentro de um certo limite de valor e o último substitui vários caracteres. Por exemplo, suponha que o diretório atual tenha os seguintes arquivos: teste1.txt, teste2.txt, teste3.txt e teste10.txt. O comando
rm teste*.txt ou rm teste*
apaga os quatro arquivos, enquanto o comando
rm teste?.txt
apaga apenas os arquivos teste1.txt, teste2.txt e teste3.txt. Para apagar apenas os dois primeiros arquivos, basta digitar
rm teste[1-2].txt
e para apagar os dois primeiros e o último use o comando
rm teste{[1-2],10}.txt
Observações
-
É preciso ter permissão de gravação para remover um arquivo.
O comando rmdir remove diretórios vazios.
Matar Webphone
kill + número do processoweb
cat scr_start.sh
/opt/janus/bin/janus -d 5 -6 > /opt/janus/lib/janus/loggers/log 2>&1 &
OU
service janus stop
service janus status
service janus start
OU
service janus restart
Node Ivox
screen
cd /var/www/app_server
nodemon index.js
ctrl + ad
---
screen
cd /var/www/app_server
nodemon app.js
ctrl + ad
Config URA TTS
same => n,Agi(script.php,actGetDadosMailingCampanha,${EXTEN},${ARG2},${ARG3})
same => n,Noop(${ttsnome})
same => n,Set(msg=${ttsnome}?)
same => n,Agi(googletts.agi,Olá ${msg},pt-BR,,1)
Pesquisar no servidor arquivo específico
grep -Rnw '/var/www/html' -e 'nomearquivo
grep -Rnw '/opt/pluri' -e 'nomearquivo
Apagar arquivos duplicados no crm da startintermediacao
dentro da pasta root
cd root
bash apaga_arquivonovo.sh
obs: Deixa rodar pq vai demorar kkkkk
Erro Credicenm
[2024-04-22 17:41:44] WARNING[3728423][C-00000003]: channel.c:6246 request_channel: No channel type registered for ''
[2024-04-22 17:41:44] WARNING[3728423][C-00000003]: app_dial.c:2576 dial_exec_full: Unable to create channel of type '' (cause 66 - Channel not implemented)
Solução:
vim /etc/asterisk/extensions_ramal.conf
Adicionar SIP apos o dial
same => n(discar),Dial(***/${EXTEN},30,tTkKU(gravacao))
Problemas recorrentes
Erro de web rtc
Ver o tempo de uso do servidor com o comando:
htop
Você pode antes de tudo reiniciar os serviços do servidor através do seguinte módulo:
Se o alerta persistir e o Uptime tiver superior a 32 dias, considere reiniciar.
Para isso, siga as instruções no módulo abaixo:
Alerta de undefined / Problemas de microfone
O alerta de undefined se deve ao bloqueio da permissão do microfone ao navegador. Para checar se está bloqueado ou liberado, basta clicar no cadeado ao lado da URL de acesso ao servidor do cliente:
Ao clicar, deverá aparecer dessa forma:
A imagem acima indica um problema de áudio, que não conseguiu acessar ele. Provavelmente algum problema do Windows não estar reconhecendo o microfone que está conectado ao computador;
Este cenário acontece por conta de algum bloqueio de microfone pelo sistema operacional, normalmente nas configurações de privacidade do computador. Segue abaixo como podem verificar:
Campanha não discando
Parte de CRM:
---------------------------------------------------------------------------------------------------------------------
1 - Checar o mailing se não está com amostragem em branco ou se for um mailing de teste, checar se o número está na blacklist
2 - Checar se o intervalo de data início e data fim está dentro do período
3 - Verificar se há pessoas online
4 - Conferir a fila se possuem operadores disponíveis (principalmente nos casos de terem criado uma nova fila com os operadores ainda online). Caso não tenha alguém na fila ou no menu de telefonia em Membros de Fila ou no queue show no asterisk, execute um reload e peça para as pessoas daquela fila para deslogarem e logarem novamente.
5 - Conferir fator e projeção para ver se os dois não estão zerados
6- Verificar se o horário atual está dentro dos horários configurados na campanha
---------------------------------------------------------------------------------------------------------------------
Parte de telefonia:
1 - Verificar se o tronco está ok (sip show peers)
- Vá no servidor e entre no CLI do asterisk com o seguinte comando:
rasterisk
- Depois verifique os troncos com um dos comandos:
Para sip: sip show peers
Para pjsip: pjsip show endpoints
2 - Verificar no sngrep o que está vindo de sinalização SIP (às vezes podemos ter os retornos de Payment Required ou Not enough credit, que são sinalizações da rota está sem saldo). Em alguns cenários, as chamadas podem estar sendo geradas, mas não completando por conta de algum problema com a telefonia.
—--------------------------------------------------------------------------------------------------------------------
Caso seja muito antigo o servidor(verificar se ainda é válido):
Parte do node:
Como o node é o responsável por gerar as chamadas de campanha da plataforma, caso ele esteja com algum problemas você terá dificuldades em realizar as ligações via discador automático.Para isso confira os passos abaixo:
1 - Tente executar ações que também dependem do node, como deslogar da página, executar um reload e conferir no arquivo do asterisk se as informações estão sendo enviadas.
2 - Caso esteja tudo ok, reveja os passos acima para ver se não ficou nenhuma informação pendente de configuração. Caso não esteja conseguindo realizar as ações do node, você deve reiniciar o mesmo através dos seguintes passos:
Forever:
Acesse a pasta /var/www/app_server/ ou /var/www/app_chat/
forever list —----> vai listar os processos rodando no forever
forever stop index.js —-> vai parar o processo do index.js que é o node principal
“forever start index.js” —-> vai iniciar o processo novamente
ATENÇÃO: CASO O NODE SUBA COMO STOPPED, SIGA OS PASSOS ABAIXO:
Prezados,
Bom dia!
Espero que estejam bem.
Gostaria de informar que, atualmente, é possível adiantar o tempo do áudio diretamente na plataforma. No entanto, ao baixar o áudio, o navegador pode converter o arquivo para outro formato. Para contornar essa situação, o áudio baixado pode ser convertido para o formato WAV ou outro formato de sua escolha, permitindo assim a manipulação desejada.
Estamos avaliando a possibilidade de implementar um script de conversão para que o arquivo mantenha o mesmo formato original da plataforma no momento do download.
1 - Execute o comando ps aux | egrep “node”
2 - Mate os processos um a um com o comando kill -9 numerodopid
Seguindo o exemplo da imagem abaixo, seria um kill -9 9725.
Lembre-se de que não adianta matar o PID do grep, pois ele só aparece por conta do comando executado.
PM2:
pm2 list —-------> Para listar os processos que estão rodando através do PM2
pm2 monit —-----> Para listar em tempo real o consumo de recursos dos processos rodando através do PM2
Para reiniciar os serviços, o processo é semelhante ao forever.
Nos exemplos conforme acima:
pm2 stop app-crm —---> Irá parar o node do app-crm
pm2 start app-crm —---> Irá iniciar novamente o node do app-crm
Licenças excedidas
Verificar o número de licenças disponíveis
Vá em Configurações -> configs
Pesquise pelas configurações de licenças:
Verifique a quantidade de licenças de cada tipo e compare nos relatórios de Online/Licenças
Veja este exemplo:
Neste caso, todos estão consumindo licenças pois na coluna licença, estão com 1. Porém somente 8 estão consumindo licenças de operadores pois estão com 1 na coluna "Call Center" (Operador). Os que estão com 0 geralmente estão consumindo licenças de "CRM" (Adm). Nenhum deles estão consumindo licenças de chat, pois estão com nada na coluna "Chat".
Caso esteja 1 usuário a mais logado que consome determinado tipo de licenças, o login será bloqueado para qualquer usuário que tentar entrar depois. Por isso, deve ser respeitado o limite de cada quantidade.
CASO COMUM:
Se houver um papel de equipe com a flag de chat marcada, todos que estão na equipe consumirão licenças de chats. Se não houver licenças de chat no servidor, o primeiro que logar irá bloquear o login dos demais.
Se o cliente não usar chats, deixe desabilitado a opção acima.
Chats não aparecem
Caso os chats estejam vazios em um servidor, basta usar estes comandos no servidor:
Alerta de Chat desconectado
Caso apareceça essa mensagem, verifique o canal de chat em Flow e Processos -> Canais de Chat
Se tiver um qr code aparecendo, ele está desconectado, se não, está conectado.
Verifique também a quantidade de mensagens na fila antes de conectar, se tiver muitas, clique em "Resetar fila". Este procedimento é necessário para não disparar várias mensagens de uma vez.
Não aparece nada na página inicial
Verifique se este usuário está configurado em mais de 1 ramal como na imagem abaixo. Se tiver, tire de um ramal e deixe só em outro, pois poderá acontecer a situação acima.
R2: 403 Forbidden
Este Alerta aparece quando o janus não consegue comunicar com o asterisk, e consequentemente o ramal aparece em branco na tela. Siga os seguintes passos quando acontecer isso:
(Como é algo sensível, verifique antes com alguém mais experiente)
Primeiro, teste com este comando:
asterisk
Depois teste reiniciar os serviços:
systemctl restart postgresql@16-main.service asterisk.service janus.service
depois dê o seguinte comando:
pm2 restart all
Se não der certo, verifique se tem espaço em disco e reinicie o servidor
df -h
reboot now
Se isso persistir, é possível que tenha travado os reloads no banco que esteja impedindo a comunicação do janus com o asterisk
A solução é executar o truncate na tabela sysdata.actions no banco de dados.
---(Consulte o responsável do momento que tenha acesso ao banco de dados)---
VPN da odonto company
***Foi feita uma configuração no servidor da odonto company em que foi fixado o ip na rede, porém se por algum motivo houver alguma inconsistência e o ip trocar, deve ser seguido o passos ao ir na empresa:
1° passo: iniciar o servidor se ele não estiver rodando
2° passo: fazer o login
login: root
senha: 102030
3° passo: verificar o ip que está
ip a
4° passo: verificar o acesso local da máquina
5° passo: tentar subir a vpn com o comando a seguir
/usr/sbin/openvpn --config /etc/openvpn/config/odontocompany_lw.ovpn --daemon
6° passo: se não subir, verificar os serviços de vpn que estão com o nome "openvpn" com o comando a seguir
ps aux | grep -e "openvpn"
7° passo: matar os serviços duplicados e tentar subir novamente
kill -9 (código da vpn)
/usr/sbin/openvpn --config /etc/openvpn/config/odontocompany_lw.ovpn --daemon
Verifique se subiu:
ip a
8° passo: Se não subiu ainda, verifique a data
date
Se estiver muito diferente da data atual, modificar com esse comando
timedatectl set-time "2026-03-02 10:36:00"
(modifique de acordo com a data e hora atual)
9° passo: dê um restart na vpn com o seguinte comando na pasta root
./scr_start.sh
ip a
Verifique se subiu
obs: provavelmente só verificando essas questões, já irá voltar
Supervisor não consegue ver ligações de outros usuários
No sistema é feito um filtro automático para os relatórios de sainte, entrante e campanha. Ou seja, dependendo do nível, papel de equipe e empresa (papel de cliente) que eles estejam.
COMO FUNCIONA?
- Ligações sainte:
- Os usuários nível 1 poderão ver suas próprias ligações de sainte se eles tiverem em uma equipe da mesma empresa do tronco que está saindo a ligação.
- Os usuários nível 2 poderão ver suas próprias ligações de sainte se eles tiverem em uma equipe da mesma empresa do tronco que está saindo a ligação.
- Os usuários nível 3 poderão ver as ligações feitas a partir de todos os troncos da mesma empresa da equipe que estes usuários estão.
- Os usuários nível 4 poderão ver as ligações feitas a partir de todos os troncos da mesma empresa da equipe que estes usuários estão.
- Ligações entrante
- Os usuários nível 1 poderão ver suas próprias ligações atendidas
- Os usuários nível 2 poderão ver as próprias ligações e das equipes que ele está como supervisor
- Os usuários nível 3 poderão ver as ligações gerais das empresas em que as equipes que ele está, está vinculada.
- Os usuários nível 4 poderão ver as ligações gerais das empresas em que as equipes que ele está, está vinculada.
- Ligações de campanha
- Os usuários nível 1 poderão ver suas próprias ligações de campanha se estiverem na equipe da mesma empresa da campanha que foi feita a chamada
- Os usuários nível 2 poderão ver suas próprias ligações e as ligações dos demais da equipe que eles estiverem como supervisor ou supervisor auxiliar.
- Os usuários nível 3 poderão ver as ligações gerais das campanhas de mesma empresa das equipes que eles estiverem. Poderá ver inclusive ligações que não foram atendidas por ninguém.
- Os usuários nível 4 poderão ver as ligações gerais das campanhas de mesma empresa das equipes que eles estiverem. Poderá ver inclusive ligações que não foram atendidas por ninguém.
Deve ser verificado o nível e a empresa dos papeis de equipes que ele estiver. Se não estiver de acordo, reconfigurar para que esteja de acordo com o esperado pelo cliente.
Erro NodeJS
Error: Check service - NodeJS - Failed to connect to 192.168.0.8 port 3000: Connection refused
- Se ocorrer esse erro, rode o seguinte comando:
pm2 restart all
- Se for um servidor antigo, faça o restart dessa forma:
*****Reiniciar Node (wiki antiga)
Problemas para realizar escuta/sussurro
Verificar o arquivo extensions_fnc.conf na pasta /etc/asterisk/
Conferir se o contexto [monitoramento] está da forma abaixo:
(SIP)
[monitoramento]
;Escuta bqwW
exten => _S20X.,1,Set(TIMEOUT(absolute)=3600)
same => n,ChanSpy(SIP/${EXTEN:3},bq)
same => n,HangUp()
exten => _S21X.,1,ChanSpy(SIP/${EXTEN:3},bqw)
same => n,HangUp()
exten => _S22X.,1,ChanSpy(SIP/${EXTEN:3},bqB)
same => n,HangUp()
exten => _S23X.,1,ChanSpy(SIP/${EXTEN:3},bqW)
same => n,HangUp()
[fncauto]
include => features
include => monitoramento
(PJSIP)
[monitoramento]
;Escuta bqwW
exten => _S20X.,1,Set(TIMEOUT(absolute)=3600)
same => n,ChanSpy(PJSIP/${EXTEN:3},bq)
same => n,HangUp()
exten => _S21X.,1,ChanSpy(PJSIP/${EXTEN:3},bqw)
same => n,HangUp()
exten => _S22X.,1,ChanSpy(PJSIP/${EXTEN:3},bqB)
same => n,HangUp()
exten => _S23X.,1,ChanSpy(PJSIP/${EXTEN:3},bqW)
same => n,HangUp()
[fncauto]
include => features
include => monitoramento
Caso não esteja, substituir o contexto no servidor pelas informações acima.
Telefonia
Nesta sessão, irei detalhar particularidades da telefonia e como analisar.
SNGREP
Using SNGREP
Consultar chamadas SIP:
-> sngrep
- teclando f3 você consegue filtrar pelo número que aparece na requisição:
- Ex de ligação no sngrep:
- INVITE: Indica que o usuário está sendo convidado a participar de uma sessão multimídia.
- Trying: Indica que a requisição está sendo processada.
- 200 OK(Answer): Indica a confirmação de atendimento.
- ACK: Confirmação de mensagem recebida como resposta final a um INVITE.
-
OPTIONS: Faz uma pergunta sobre quais métodos e extensões são suportados pelo servidor e pelo usuário descrito no campo de cabeçalho.
-
BYE: Usado para liberar os recursos associados a uma ligação e forçar a desconexão/desligamento da mesma.
-
CANCEL: Cancela uma requisição que ainda esteja pendente, ou seja, em andamento.
Main Screen
-
-
Idx: Coluna do número da linha.
-
Method: Coluna do tipo de mensagem SIP.
-
SIP From: Coluna do campo "De" (From) da mensagem SIP.
-
SIP To: Coluna do campo "Para" (To) da mensagem SIP.
-
Msgs: Coluna da quantidade numérica de mensagens.
-
Source: Coluna do IP e porta de origem.
-
Destination: Coluna do IP e porta de destino.
-
Call State: Coluna do identificador da chamada.

-
-
SPAM

-
User-Agent: A maioria das tentativas de spam mostra um User-Agent indesejado, como o exibido neste exemplo.
Registration


Registration Expanded


Call Setup


Invite

200 OK

Call completou


F3 Search

F7 Filtro

F8 Configurações
Interface

EEP/HEP HOMER

Call Flow

Capture

log no grep do asterisk
Podemos verificar o tronco e o contexto em que ele está passando em tempo real utilizando o comando a seguir
asterisk -rvvvvvvvvvvvvv | grep -e "9900"
(Pode ser colocado no lugar do 9900 o número que foi ligado ou o ramal)
Exemplo:
1. Informações iniciais da chamada
PJSIP/9923-0000011c answered
Descrição
Indica o estado da chamada do ramal 9923 usando o driver PJSIP.
| Evento | Descrição |
|---|---|
| ringing | O ramal está tocando |
| answered | A chamada foi atendida |
2. Início do Dialplan
Parâmetro
NoOp()
Função usada apenas para log/debug dentro do dialplan.
| Parâmetro | Valor | Significado |
|---|---|---|
| Canal | PJSIP/9923 | Canal que iniciou a chamada |
| Mensagem | S - 20 - 1 - Bina Dinâmica | Identificação do fluxo de chamada |
3. Definição de Variáveis
3.1 EXTERNPRC
Descrição
Número externo que originou ou será usado no processamento da chamada.
| Campo | Valor |
|---|---|
| Variável | EXTERNPRC |
| Valor | 032988611550 |
| Escopo | __ indica variável herdada entre canais |
3.2 ID_LINH
Descrição
Identificador da linha ou da sessão da chamada.
| Campo | Descrição |
|---|---|
| ID_LINH | ID único da chamada |
3.3 ID_ORGANIZACAO
Descrição
Identifica a organização/empresa associada à chamada.
3.4 TIPOCALL
Descrição
Tipo da chamada.
| Valor | Significado |
|---|---|
| S | Saída |
3.5 CHANNEL(accountcode)
Descrição
Define o accountcode do canal para fins de CDR (bilhetagem).
Formato:
4. Execução de Scripts AGI
Os scripts são executados via Asterisk Gateway Interface.
4.1 Script: insCallSainte
Função
Registrar a chamada no banco de dados.
Parâmetros
| Ordem | Parâmetro | Descrição |
|---|---|---|
| 1 | insCallSainte | Nome da função |
| 2 | 032988611550 | Número |
| 3 | 1772545025.284 | ID da chamada |
| 4 | timestamp | Data/hora |
4.2 Script: insProtocolo
Função
Gerar protocolo de atendimento.
Parâmetros
| Parâmetro | Descrição |
|---|---|
| Número | Cliente |
| ID chamada | Identificação da ligação |
| timestamp | Data da ligação |
4.3 Definição do protocolo
Descrição
Número único de protocolo de atendimento.
4.4 Script: actBlacklistSainte
Função
Verifica se o número está na blacklist.
| Possível retorno | Significado |
|---|---|
| OK | Número liberado |
| BLOCK | Número bloqueado |
5. Verificação de Horário
Descrição
Verifica condição de atendimento (exemplo: horário de atendimento).
| Resultado | Ação |
|---|---|
| 1 | continua |
| 0 | vai para encerrar |
6. Log informativo
Descrição
Mensagem de debug indicando configuração de Bina ausente.
7. Definição de dados finais da chamada
7.1 ID_PAC
Identificação do paciente/cliente.
7.2 ID_TRONCO
Identificação do tronco SIP utilizado.
7.3 TELEFONE
Número final utilizado na discagem.
8. Discagem da chamada
Aplicação
Dial()
Responsável por realizar a chamada.
Parâmetros
| Campo | Valor | Descrição |
|---|---|---|
| Tecnologia | PJSIP | Driver SIP |
| Destino | 1541032988611550 | Número discado |
| Tronco | sipsolutionspuri | Servidor SIP |
| Timeout | 45 | Tempo máximo |
| Flags | TtKk | Permissões de transferência |
| U() | gravacao | executa gravação |
9. Encerramento
Finaliza a chamada.
10. Mensagem final
Significado
O fluxo terminou retornando código diferente de zero, geralmente indicando:
-
finalização por lógica
-
retorno de AGI
-
chamada encerrada
Fluxo resumido da chamada
↓
Define variáveis da chamada
↓
Registra chamada (AGI)
↓
Gera protocolo
↓
Verifica blacklist
↓
Valida horário
↓
Define tronco
↓
Discagem via SIP
↓
Gravação
↓
Encerramento
Conceitos básicos de telefonia
Documentação Básica do Asterisk
1. O que é o Asterisk
O Asterisk é um sistema de PBX (Private Branch Exchange) de código aberto que permite criar uma central telefônica baseada em software.
Ele possibilita:
-
Telefonia VoIP
-
Integração com linhas SIP ou operadoras
-
Filas de atendimento
-
URA (menus automáticos)
-
Gravação de chamadas
-
Integração com sistemas externos
Arquivos principais de configuração geralmente incluem:
-
sip.confoupjsip.conf -
extensions.conf -
queues.conf -
voicemail.conf
2. Ramais (Extensions)
Conceito
Ramais representam usuários ou dispositivos telefônicos conectados ao sistema.
Cada ramal pode ser:
-
Telefone IP
-
Softphone
-
Gateway
-
Aplicação
Exemplo de configuração em PJSIP (pjsip.conf):
type=endpoint
context=interno
disallow=all
allow=alaw,ulaw
auth=1001-auth
aors=1001
[1001-auth]
type=auth
auth_type=userpass
username=1001
password=senha123
[1001]
type=aor
max_contacts=1
Funções principais dos ramais
-
Fazer chamadas internas
-
Receber chamadas
-
Participar de filas
-
Transferir chamadas
3. Contextos
Conceito
Contextos organizam regras de discagem dentro do sistema.
Eles definem:
-
Quem pode ligar para quem
-
Para onde uma chamada será direcionada
Configurados no arquivo:
Exemplo:
exten => 1001,1,Dial(PJSIP/1001)
exten => 1002,1,Dial(PJSIP/1002)
exten => 2000,1,Queue(suporte)
Vantagens
-
Controle de permissões
-
Segurança
-
Organização do dialplan
4. Troncos (Trunks)
Conceito
Troncos conectam o Asterisk a outras redes telefônicas.
Podem ser:
-
Operadora VoIP
-
Outro PBX
-
Gateway GSM
-
Linha PSTN
Tipos comuns:
-
SIP trunk
-
IAX trunk
Exemplo de tronco SIP:
type=endpoint
transport=transport-udp
context=entrada
disallow=all
allow=alaw,ulaw
outbound_auth=operadora-auth
aors=operadora
Uso no dialplan:
Isso permite fazer chamadas externas.
5. Filas (Queues)
Conceito
Filas são usadas para distribuir chamadas entre agentes.
Muito utilizadas em:
-
Call centers
-
Suporte técnico
-
Atendimento comercial
Configuradas em:
Exemplo:
strategy=ringall
timeout=15
retry=5
maxlen=10
member => PJSIP/1001
member => PJSIP/1002
Estratégias de atendimento
Algumas estratégias:
-
ringall– toca para todos -
rrmemory– round robin -
leastrecent– quem atende há mais tempo -
fewestcalls– menos chamadas atendidas
Uso no dialplan:
6. URA (IVR)
URA significa Unidade de Resposta Audível, ou menu automático.
Exemplo clássico:
"Digite 1 para vendas, 2 para suporte."
Configurado em extensions.conf.
Exemplo:
exten => s,1,Answer()
same => n,Playback(bem-vindo)
same => n,WaitExten(10)
exten => 1,1,Goto(vendas,s,1)
exten => 2,1,Goto(suporte,s,1)
Funções comuns:
-
Playback()→ toca áudio -
Background()→ toca áudio e espera tecla -
WaitExten()→ aguarda digitação
7. Autenticação
A autenticação garante que apenas dispositivos autorizados possam registrar ramais.
Ela ocorre via:
-
Usuário
-
Senha
-
IP autorizado
Exemplo:
type=auth
auth_type=userpass
username=1001
password=senha123
Boas práticas:
-
Senhas fortes
-
Bloqueio de IP
-
Uso de firewall
-
Limitar tentativas
Ferramentas comuns:
-
Fail2Ban
-
Firewall
8. Problemas Comuns no Asterisk
1. Ramal não registra
Possíveis causas:
-
Usuário ou senha errados
-
Porta SIP bloqueada
-
NAT incorreto
-
IP incorreto
Comando para verificar:
2. Sem áudio (one way audio)
Problema comum em VoIP.
Causas:
-
NAT
-
Firewall
-
RTP bloqueado
Solução:
-
Configurar
rtp.conf -
Liberar portas RTP
3. Chamadas caindo
Possíveis motivos:
-
Timeout SIP
-
Problemas de rede
-
Codec incompatível
4. Filas não chamam agentes
Possíveis causas:
-
Agentes offline
-
Ramal não registrado
-
Estratégia mal configurada
Verificação:
5. URA não reconhece digitação
Pode ocorrer por:
-
Codec incompatível
-
Problema com DTMF
Configuração comum:
9. Comandos úteis no CLI
Acessar console:
Comandos importantes:
Ver ramais:
Ver registros:
Ver filas:
Ver canais ativos:
10. Fluxo típico de chamada
Fluxo comum em sistemas de atendimento:
↓
Tronco SIP
↓
Contexto de entrada
↓
URA
↓
Fila
↓
Ramal (Agente)
Resumo:
No Asterisk:
| Componente | Função |
|---|---|
| Ramais | Usuários/dispositivos |
| Contextos | Regras de discagem |
| Troncos | Conexão com operadoras |
| Filas | Distribuição de chamadas |
| URA | Menu automático |
| Autenticação | Segurança de acesso |
Asterisk
Subir vm no virtual box
Configs do sistema
A proposta desse capítulo é apresentar algumas configs do sistema.
Criação de usuário e ramal
Método tradicional
No módulo de Pessoas, clique em Novo
Pra criar o usuário, adicionar no mínimo Nome, Logina, Senha, Organização, Papel de equipe e Nível
Depois clique em Salvar
Criar ramal e vincular a Pessoa
Para criar o ramal Webphone, adicionar Empresa, Tipo(cadastro), Tipo(tech), Ramal, Descrição, username, contexto e Pessoa
Método mais ágil
Criar ramal, criar Pessoa e vincular a Pessoa
Para criar o ramal Webphone, adicionar Empresa, Tipo(cadastro), Tipo(tech), Ramal, Descrição, username, contexto e criar Pessoa através do + em Pessoa
Abre o módulo auxiliar de Pessoas e clique em Novo
Pra criar o usuário, adicionar no mínimo Nome, Logina, Senha, Organização, Papel de equipe e Nível
Depois clique em Salvar
Volta no ramal e clica no botão de recarregar e seleciona a Pessoa
E salvar o ramal.
Criação de papel de equipe e filas
Papel de equipe
Clique em Novo para criar um novo papel de equipe
Para criar uma nova equipe, deve ser adicionado no mínimo Descrição, Papel de Cliente, Supervisor, Perfil de acesso, Nível, Pessoas.
flags:
- Telefonia: consegue ver a aba de monitoria Telefonia
- Interfaces: consegue ver a aba de monitoria Interfaces
- Operadores: consome licença de Call-center e caso vinculado ao ramal, consegue fazer ligações.
- Chat: consome licença de Chat e consegue visualizar os atendimentos de chat
- Cliente: limita a monitoria da telefonia
- outros: à colocar
Depois clique em Salvar
Filas
Clique em Novo para criar uma nova Fila
Para criar uma nova fila, deve ser adicionado no mínimo Tipo, Descrição, qID, Estratégia, Papel de equipe
Timeout(peer), Retry(peer), Wrap up time, SLA(max), Meta(min), Meta(max) são adicionados por padrão
Depois clique em Salvar
Depois nas filas, clique em Reload