Archive for Asterisk

Converter .mp3 para .wav e slinear sln para asterisk com sox e ffmpeg – Conversor

Script que converte .mp3 para .wav intepretado pelo asterisk.

Deve possuir instalado SOX e FFMPEG.

Para executar, copie este script para o diretorio que contem os arquivos .mp3.

vim converte.sh

#!/bin/bash
echo "** THIS SCRIPT REQUIRES FFMPEG AND SOX TO WORK!**"
for i in *.mp3; do
val=${i%.mp3}
echo "** Converting mp3 to wav files if they exist"
ffmpeg -i "$i" "$val.wav"
echo "** $i MP3 to WAV is complete"
done
echo "** THIS SCRIPT REQUIRES LAME AND SOX TO WORK!**"
for i in *.wav; do
val=${i%.wav}
echo "** Converting wav to wav files if they exist"
sox "$i" -t raw -r 8000 -c 1 "$val.sln"
echo "** $i MP3 to WAV is complete"
done

* Verifique se ao copiar e colar não ocasionou o problema de subsituição da aspas dupla por duas simples.

Após:
chmod +x converte.sh
./converte.sh

Analise de ECO com cancelador de eco ativo e antes de ativa-lo

Criar um diretório e realizar a gravação do áudio quando a chamada estiver no canal:
mkdir /usr/srv/gravacao
dahdi_monitor 65 -m -r streamrx65.raw -t streamtx65.raw -R streampreechorx65.raw -T streampreechotx65.raw

Onde – 65 eh a porta dahdi fxo

Após converter o áudio para .wav
sox -r 8000 –encoding signed-integer –endian little -b 16 -c 1 streamrx66.raw streamrx66.wav

Baixar o software audiocity e importar os quatro áudios e compara-los.

Veja uma comparação de áudio:
linha 69

linha porta 65

Reparar um banco em sqlite3 asterisk astdb

Ao tentar conectar no asterisk tenho a mensagem:
[root@ ~]# asterisk -r
Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)

Quando tendo acessar com asterisk -vvvvvvvvvvgc tenho a mensagem abaixo.

Erro deparado após um pique de energia:
[Mar 7 11:21:09] WARNING[2320]: db.c:135 init_stmt: Couldn’t prepare statement ‘CREATE TABLE IF NOT EXISTS astdb(key VARCHAR(256), value VARCHAR(256), PRIMARY KEY(key))': disk I/O error
[Mar 7 11:21:09] WARNING[2320]: db.c:210 db_create_astdb: Couldn’t create astdb table: disk I/O error

Solução:
Foi necessário reparar o bando de dados do asterisk utilizando

echo .dump | sqlite3 /var/lib/asterisk/astdb.sqlite3 > /var/lib/asterisk/astdb.sqlite3_DUMP

sqlite3 -init /var/lib/asterisk/astdb.sqlite3_DUMP /var/lib/asterisk/astdb.sqlite3_FIXED;

mv /var/lib/asterisk/astdb.sqlite3 /var/lib/asterisk/astdb.sqlite3_error

mv /var/lib/asterisk/astdb.sqlite3_FIXED /var/lib/asterisk/astdb.sqlite3

Exemplo de uma consulta na base antes do recebimento de uma chamada.

Exemplo de uma consulta na base antes do recebimento de uma chamada.
Aqui eu consulto se vem dos ddds 21,51,31 ou 11. Caso venha eu consulto na base se eh para eu aceitar ou não a chamada no 0800 dependendo da região.

[consulta]
exten => 667,1,NoOp(DDD do numero que estamos recebendo –> ${CALLERID(ANI):0:2})
same => n,noop(Numero que estamos recebendo –> ${CALLERID(ANI)})

same => n,GotoIf($[“${CALLERID(ANI):0:2}” = “11”]?verificabanco) ; SP
same => n,GotoIf($[“${CALLERID(ANI):0:2}” = “21”]?verificabanco) ; RJ
same => n,GotoIf($[“${CALLERID(ANI):0:2}” = “51”]?verificabanco) ; POA
same => n,GotoIf($[“${CALLERID(ANI):0:2}” = “31”]?verificabanco) ; BH
same => n,Noop( DDD ${CALLERID(ANI):0:2} aceito no 0800, nao consta na lista de excecoes)
same => n,Goto(call0800)

same => n(verificabanco),Noop(DDD possivelmente nao pode entrar no 0800, a verificar no banco de dados)
same => n,Noop(Consulta no banco de dados do prefixo –> ${CALLERID(ANI):0:6})
same => n,MYSQL(Connect connid localhost prefixo profit asterisk)
same => n,NoOp(connid = ${connid})
same => n,MYSQL(Query resultid ${connid} SELECT status FROM prefixos WHERE prefixo=”${CALLERID(ANI):0:6}”)
same => n,NoOp(resultid = ${resultid})
same => n,MYSQL(Fetch fetchid ${resultid} realizada)
same => n,NoOp(Variabili = ${fetchid},${realizada})
same => n,MYSQL(Clear ${resultid})
same => n,MYSQL(Disconnect ${connid})
same => n,noop(${realizada})
same => n,GotoIf($[“${realizada}” = “1”]?nocall:call0800)

same => n(nocall),Noop( Telefone ${CALLERID(ANI)} nao eh autorizado ligar no 0800 pois consta em uma das cidades atendidas pelo numero local da ihunter. Vamos verificar agora de qual localidade para tocar o audio em especifico.)
same => n,GotoIf($[“${CALLERID(ANI):0:2}” = “11”]?nocallSP)
same => n,GotoIf($[“${CALLERID(ANI):0:2}” = “21”]?nocallRJ)
same => n,GotoIf($[“${CALLERID(ANI):0:2}” = “51”]?nocallPOA)
same => n,GotoIf($[“${CALLERID(ANI):0:2}” = “31”]?nocallBH)
same => n,Goto(call0800)

same => n(nocallSP),Noop(playback dizendo o numero de Sao Paulo)
same => n,playback(numero_sao_paulo)
same => n,HangUP()
same => n(nocallRJ),Noop(playback dizendo o numero do Rio de Janeiro)
same => n,Playback(numero_rio_de_janeiro)
same => n,HangUP()
same => n(nocallPOA),Noop(playback dizendo o numero de Porto Alegre)
same => n,Playback(numero_porto_alegre)
same => n,HangUP()
same => n(nocallBH),Noop(playback dizendo o numero de Belo Horizonte)
same => n,playback(numero_belo_horizonte)
same => n,HangUP()

same => n(call0800),Noop(Verificando se o horario eh permitido)
same => n,GotoifTime(8:00-18:50|mon-fri|*|*?recebehelpdesk,s,1)
same => n,noop(Fora de horario de atendimento da ihunter!)
same => n,Playback(fora-horario)
same => n,Hangup()

Problemas ao checar mensagens antigas voicemail asterisk odbc

Asterisk 1.11

Problema: No meu de voz ao acessar a caixa postal e verificar mensagens antigas não eram ouvidas. Recebia na cli as mensagens abaixo:

No banco nota que o campo msg_id em voicemail_messages em 90% não continha dados (NULL).

Para solução, aplicação do patch abaixo:

https://reviewboard.asterisk.org/r/2220/diff/4/raw/

Fonte: https://reviewboard.asterisk.org/r/2220/diff/4/

Para aplicar o patch:

1 – Ir até o diretório da instalação do asterisk
[root@ipbx apps]# cd /asterisk/asterisk-11.2.1/apps/

2 – Executar o comando:
[root@ipbx apps]# patch -p0 < rb2220.patch can't find file to patch at input line 5 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |Index: /branches/11/apps/app_voicemail.c |=================================================================== |--- /branches/11/apps/app_voicemail.c (revision 378414) |+++ /branches/11/apps/app_voicemail.c (working copy) -------------------------- File to patch: /asterisk/asterisk-11.2.1/apps/app_voicemail.c patching file /asterisk/asterisk-11.2.1/apps/app_voicemail.c 3 – Se solicitado o caminho coloque completo:
/asterisk/asterisk-11.2.1/apps/app_voicemail.c

4 – Compilar novamente asterisk:
[root@ipbx apps]# cd /asterisk/asterisk-11.2.1/
make
make install

5 – Restart asterisk