Запись разговоров на Asterisk

Записывать телефонные разговоры очень удобно как и в офисе для устранения разных непоняток с клиентами так и  дома.

Вот два самых простых способа чтобы настроить её:

1) Запись разговоров на Asterisk с простым управлением через CLI

Краткое описание решения

Каждый выходящий и исходящий звонок направляется в контекст активации записи разговора, в котором на уровне специального диалплана реализован поиск правил. Для хранения правил записи используется внутренняя база данных Asterisk. Данный подход позовляет:

  • использовать встроенные функции DB для поиска значений;
  • использовать консоль Asterisk и команду database для модификации правил.

В базе существуют две ветки:

  • rec_a - в данной ветке содержатся номера абонента А (callerid), для которых нужно включать запись;
  • rec_b - соответственно, в этой ветке правила номера абоента Б (dnid).

Пример:

*CLI> database put rec_a 701 1

Updated database successfully

*CLI> database put rec_b 2323956 1

Updated database successfully

*CLI> database show

/rec_a/701 : 1

/rec_b/2323956 : 1

*CLI>

В вышеприведённом примере было создано два правила. Одно будет писать все звонки от внутреннего пользователя с номером 701, другое будет писать все звонки на номер 2323956. Как можно заметить, используется флаг активности правила - 0 или 1. Это позволяет временно отключать запись без удаления номера из базы.

Формат записи

Записанные файлы пишутся в папку /var/spool/asterisk/monitor в следующем формате:

  • data/yyyy/mm/dd/hh_MM_ss_a_b_callid, где:

    • yyyy - год записи;
    • mm - месяц записи;
    • dd - день записи;
    • hh - час начала разговора;
    • MM - минута начала разговора;
    • ss - секунда начала разговора;
    • a - номер обонента a или unknown, если callerid скрыт;
    • b - номер абонента b;
    • callid - ID звонка.

Таким образом, название файла несет в себе всю необходимую информацию для поиска нужной записи впоследствии.

При использовании приложений, ведущих собственную сквозную запись разговора можно остановить запись. При осуществлении перевода вызова так же требуется остановить запись разговора в TRANSFER_CONTEXT и начать запись снова.

Диалплан Asterisk

Ниже представлен фрагмент диалплана Asterisk, реализующий описанную выше логику.

extensions.conf:

[global]

[outgoing]

exten => _X.,1,Gosub(sub-recording,${EXTEN},1}

exten => _X.,n,Dial(ZAP/g1/${EXTEN},,t)

[office]

exten => _X.,1,Gosub(sub-recording,${EXTEN},1}

exten => _X.,n,Dial(SIP/${EXTEN},,T)

[sub-recording]

exten => s,1,StopMixMonitor()

exten => _X.,1,Set(CALLER=unknown)

exten => _X.,n,GoToIf($[0${CALLERID(num)} = 0]?db)

exten => _X.,n,Set(CALLER=${CALLERID(num)})

exten => _X.,n(db),GotoIf($[0${DB(rec_a/${CALLERID(num)})} = 01]?record:stop)

exten => _X.,n,GotoIf($[0${DB(rec_b/${EXTEN})} = 01]?record:stop)

exten => _X.,n(record),MixMonitor(data/${STRFTIME(,,%G/%m/%H_%M_%S)}_${CALLER}_${CALLED}.gsm)

exten => _X.,n(stop),Return

Недостатки:

1. Время в названии файла - время поступления вызова, но не начала разговора. Для указания времени начала раговра требуется создание симлинка или переименование после окончания разговора

 

2) Запись разговоров на Asterisk через MixMonitor

Записывать телефонные разговоры очень удобно как и в офисе для устранения разных непоняток с клиентами так и  дома. И реализация на астериске очень простая, нужно просто включить в dialplaне  обработку направлений функцией Monitor или же MixMonitor. Эти функции различаются тем, что  Monitor записывает голоса звонящего и того к кому звонят в два отдельных файла, а MixMonitor пишет оба голоса в один файл. Естественно просто Monitor использовать не практично, по этому опишу как пользоваться MixMonitor.

Использование MixMonitor:

MixMonitor(имя файла,опции,команда)

Производит запись разговора в заданный  файл, вместо имя файла можно задать полный путь и имя с расширением .wav, если же мы указали просто имя файла, asterisk создаст запись которая соответствует прописанному пути для папки с разговорами в конфиге asterisk.conf

Важные опции:

a — новая запись дописывается в конец файла ( для избежания перезаписи файла).

b — сохраняется запись только в случае соединения канала.

W(X) — изменение громкости речи и прослушивания меняется в X раз (диапазон от –4

до 4)

; Записываем разговор по каналу

exten => 3333,1,MixMonitor(/var/records/3333.wav)

Для удобства файлы можно называть датой, временем, и телефонным номером звонящего и того к кому звонили.

exten =>  3333,1,Set(filename=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-${CALLERID(number)}-${EXTEN})

exten =>  3333,2,MixMonitor(/var/records/${filename}.wav)

You should also read:

fail2ban + Asterisk 1.8 баним правильно

В связи с открытием нового филиала в маленьком городе Екатеринбурге,потребовалось настроить связь с главным офисом, для этого на платформе Intel Atom были подняты сервисы: Samba4 как PDC,Squid,Asterisk. Так как это небольшая заметка, то остановимся на конкретном вопросе защиты Asterisk'a.

Из исходников был поставлен asterisk 1.8.5, который собрался без проблем. Понравилось то, что в отличии от версии 1.6, в версии 1.8 в исходники входит asterisk-addons, что немного уменьшает количество телодвижений при установке. Особых отличий в настройке для 1.8 не было замечено, конфиги (sip.conf,logger.conf,extensions.conf) из asterisk 1.6 перенеслись без проблем. Но вот на этапе защиты от перебора паролей возникли некоторые сложности!

ASTERISKNOW меняем стандартные пароли

Смена стандартных паролей

После установки сервера, обновляемся и начинаем настраивать нашу программную-АТС.

Нам необходимо сменить стандартный пароль

[admin@asteriamroot]# mysql -u freepbx -p

Вводим стандартный пароль: fpbx

Настройка AsteriskNow после установки (Eng)

Well after much researching I have complied a procedure to help people install AsteiskNow from scratch. Hope this helps.

Install AsteriskNOW 1.5.0 from CD.

After installation first boot will prompt with Setup-Agent to enter IP address, subnet mask, and gateway.

# vi /etc/resolv.conf

(add DNS servers ex. Nameserver 192.168.1.2)

# /etc/init.d/network restart

# yum update

(reply ’y’ when prompted.)

AsteriskNOW-2.0.2 не работает CDR из коробки

Докопал, Сделал, Заработало!

И так РЕЗЮМИРУЕМ:

При установке AsteriskNow не ставиться дополнительный модуль, который пишет статистику звонков.

Проверяем командой:

[root@localhost ~]# asterisk -r

localhost*CLI> module show like mysql

если пишет что-то типа:

Module Description Use Count

0 modules loaded