Что-то давненько я не рассказывал о моем знакомстве с Asterisk*ом. А за это время сделано было очень много.
Первое, это конечно не принципиально, но я сменил ОС, теперь все это вертится на Debian.
Стандартный набор фраз для меню не подходил, потому для записи своих создаем екстеншн
Code
exten => 205,1,Answer
exten => 205,n,Set(VOLUME(RX)=0)
exten => 205,n,Set(VOLUME(TX)=0)

exten => 205,n,Wait(2)
exten => 205,n,Record(/home/script/meet%d:alaw)
exten => 205,n,Wait(2)
exten => 205,n,Playback(${RECORDED_FILE})
exten => 205,n,Wait(2)
exten => 205,n,Hangup

Теперь пользователь, позвонив на номер 205, через 2 сек после соединения услышит звуковой сигнал (начало записи), проговорит свою фразу, остановить запись можно нажав "#"
после этого через опять же 2 сек, система проиграет пользователю записанную фразу.

Часть 1. Регистрация на сервере провайдера.
Отдельно хочу остановиться на подключении канала провайдера, я на это убил чуть больше месяца, что обидно, не потому что это очень сложно, а потому что провайдер ... не добросовестный.
Провайдер "Датагруп" прислал настройки сети 172.15.15.15 для моего сервера
логин - 04421231231
пароль - jdyfhbrb49fjeu44t5
сервер на котором нужно регистрироваться 10.0.0.1
и еще один сервер 10.0.0.4 (с ним просто должна быть связь)

вот здесь они немного забыли сказать, что виден должен быть не только 0.4, но еще и 0.2, и 0.3
я же добросовестно прописал маршруты только к двум серверам, из-за чего некоторые звонки звук проходил только в одном направлении, и я почему-то решил что это моя ошибка, очень долго пытался найти причину,техподдержка молчала. Помог случай, знакомство в баре с одним человеком из представительства провайдера, ну и его помощь через пару дней после знакомства.
Так что имейте в виду, если работает через раз, это еще не значит, что вы что-то сделали не так!


О самом страшном предупредил - идем дальше.
Мы купили у провайдера 1 номерную линию и 7 безномерных.
Зарегистрируем у провайдера номерную линию. Для этого в файле
/etc/asterisk/sip.conf
добавим строку в разделе OUTBOUND SIP REGISTRATIONS
Code
register => 04421231231:[email protected]/555


Как подключать остальные линии я найти не смог, потому поступил как "блондинка", а не "айтишник"
Code
register => 04421231231:[email protected]/555
register => 04421231231:[email protected]/555
register => 04421231231:[email protected]/555
register => 04421231231:[email protected]/555
register => 04421231231:[email protected]/555
register => 04421231231:[email protected]/555
register => 04421231231:[email protected]/555
register => 04421231231:[email protected]/555


И как ни странно, это работает. Если кто знает другой или правильный вариант реализации буду рад узнать о нем.

Часть 2. О чем же они говорят?..

Все же понимают, что операторы колцентров, если не лицо, то как минимум голос компании, и нужно контролировать что и как этот голос говорит нашим клиентам. Кроме того, не плохо было бы вести учет звонков в автоматическом режиме, чтобы видеть загруженность операторов, пиковые нагрузки на колцентр. Как это делать правильно, можете разобраться самостоятельно, а я расскажу как это сделал я.

На этом же сервере я установил СУБД MySQL, создал там БД, а в ней таблицу с такими полями
id,date,callid,type,varf1

создал скрипт /home/script/mysqlincoming.sh
Code
#!/bin/bash
#
POS1="$1"
POS2="$2"
POS3="$3"
echo "insert into asterisk1.incomingcalls (date,callid,type,varf1) values (now(),'$1','incomingcall','$2');" | mysql -u asterisk -p*SeCrEt* asterisk1


Далее в екстеншене с голосовым меню вызываем этот скрипт с параметрами, и каждому звонку будет соответсвовать 1 запись в таблице БД

Code
[menu]
exten => s,1,Answer()

exten => s,2,Set(fname=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-${CALLERID(number)}-${EXTEN})    ; задаем уникальное имя для звонка из даты,времени и номера звонящего
exten => s,3,System(/home/script/mysqlincoming.sh ${fname} ${CALLERID(number)})  ; вызываем скрипт передав ему имя звонка и номер абонента
exten => s,4,Set(home="/home/script")
exten => s,5,Set(VOLUME(RX)=1)
exten => s,6,Set(VOLUME(TX)=-1)
exten => s,7,SetMusicOnHold(default)
exten => s,8,WaitMusicOnHold(3)
exten => s,9,Set(VOLUME(TX)=-2)
exten => s,10,Playback(${home}/new-asterisk-recording13);приветсвие
exten => s,11,SetMusicOnHold(default)
exten => s,12,Set(VOLUME(TX)=2)
exten => s,13,MixMonitor(${home}/tel/${fname}.wav,v(3)V(3))      ; Включаем запись разговора, записанный файл будет назван именем заданным во втором шаге
exten => s,14,Dial(SIP/503&SIP/501&SIP/502,30,mTt)    ; Вызываем операторов

в папке /home/script/tel/ теперь хранятся записи наших разговоров, а в БД данные о звонке.
в принципе имя файла содержит всю информацию о звонке, но это не удобно для обычного пользователя. Как совмещать эти данные друг с другом дело ваше, я взял программку отсюда

нашел вот такой плеер

и с помощью вот такого запроса к моей БД
Code
SELECT
id,
callid,
`date`,
`type`,
callid AS `file`,
CONCAT('

<script type=', char(39), 'text/javascript', char(39), ' src=', char(39), 'jwplayer.js', char(39), '></script>

<div id=', char(39), 'mediaspace', char(39), '>This text will be replaced</div>

<script type=', char(39), 'text/javascript', char(39), '>
 jwplayer(', char(39), 'mediaspace', char(39), ').setup({
   ', char(39), 'flashplayer', char(39), ': ', char(39), 'player.swf', char(39), ',
 
   ', char(39), 'file', char(39), ': ', char(39), 'http://192.168....1/tel/', callid, '.wav', char(39), ',
   ', char(39), 'controlbar', char(39), ': ', char(39), 'top', char(39), ',
   ', char(39), 'dock', char(39), ': ', char(39), 'false', char(39), ',
   ', char(39), 'quality', char(39), ': ', char(39), 'false', char(39), ',
   ', char(39), 'stretching', char(39), ': ', char(39), 'none', char(39), ',
   ', char(39), 'width', char(39), ': ', char(39), '300', char(39), ',
   ', char(39), 'height', char(39), ': ', char(39), '24', char(39), '
 });
</script>


') AS filename,
concat('http://192.168.......1/tel/', callid, '.wav') AS Download,
varf1,
LEFT(varf1, 3) AS RegionCode
FROM incomingcalls
WHERE (`type` ='incomingcall')
ORDER BY id DESC

получил вот такой удобный интерфейс
Твой софтовый форум

PHPRunner
весьма удобная программа, я в вебинтерфейс добавил еще пару отчетов по звонкам, и авторизацию и разграничение прав пользователей.

Пожалуй, на сегодня все, но я скоро вернусь, и мы поговорим о телефонии без SIP-провайдеров, ну и о том насколько это выгодно.
- оставайтесь с нами smile.gif