Перейти к основному содержимому

Настройка собственного Asterisk для работы с DEX

Для настройки необходимо предоставить названия используемых для DEX транков c провайдерами телефонии. Количество линий и значение CPS.

Доступ к астериску по AMI

Необходим адрес и порт, а также логин и пароль, для подключения по AMI к Asterisk. IP с которого будет совершаться подключение сообщим при настройке, для примера dex.dialerex.ru 31.184.220.171.

Примерные настройки:

/etc/asterisk.newcati/manager.conf:

[general]
enabled=yes
port=<port>
bindaddr=<ip address>

[dex]
secret=<password>
read=all
write=all
deny=0.0.0.0/0.0.0.0
permit=31.184.220.171/255.255.255.255
eventfilter=Event: *
eventfilter=!Event: VarSet
eventfilter=!Event: RTCP*

Настройка SIP

Примерные настройки, для компании firm.

в sip.conf:

[firm](!)
type=friend
qualify=30000
host=dynamic
directmedia=no
nat=force_rport,comedia
context=local
disallow=all
allow=alaw

[firm001](firm)
secret=<some password>

extensions.conf:

 [local]
exten = _XXX,1,Dial(SIP/firm${EXTEN},30,t)
same = n,Hangup()
exten = _firmXXX,1,Dial(SIP/${EXTEN},30,t)
same = n,Hangup()
exten = _*firmXXX,1,ChanSpy(SIP/firm${EXTEN:-3},qb)
same = n,Hangup()
exten = _**firmXXX,1,ChanSpy(SIP/firm${EXTEN:-3},qbw)
same = n,Hangup()

[dex]
exten => s,1,NoOp()
same = n,ExecIf($["${recfile}" = ""]?Set(recfile=${STRFTIME(${EPOCH},,%Y/%m/%d)}/FAILED-${EPOCH}.alaw))
same = n,GotoIf($["${recfile}" = "disabled"]?select_operator)
same = n,MixMonitor(${recfile},,/home/robot/encode2mp3-ffmpeg.sh /var/spool/asterisk/monitor/${recfile})
same = n(select_operator),Set(OPERATOR=${CURL(http://dex.dialerex.ru:4580/dex_firm/?ac=${CDR(accountcode)})})
same = n,ExecIf($["${OPERATOR}" = ""]?HangUp())
same = n,Dial(SIP/${OPERATOR},5)
same = n,HangUp()

Скрипт конвертации записей, запускаемый астериском

/home/robot/encode2mp3-ffmpeg.sh:

#!/bin/bash
#
# WAV|ALAW to MP3 converter, v2017071101
#
# Requires ffmpeg:
# apt install ffmpeg
#
# Usage: encode2mp3-ffmpeg.sh <source_sile_name>

if [[ -s $1 ]]; then
if [[ "$1" =~ \.wav$ ]]; then
nice -n 19 ffmpeg -loglevel panic -f wav -i $1 -q:a 10 ${1%.*}.mp3 </dev/null
elif [[ "$1" =~ \.alaw$ ]]; then
nice -n 19 ffmpeg -loglevel panic -ar 8k -f alaw -i $1 -q:a 10 ${1%.*}.mp3 </dev/null
fi
fi

Так же необходим доступ по http/https к папке с записями с сервера DEX на сервер телефонии. Нам нужна ссылка по которой система DEX будет искать записи.