Monday, November 21, 2011

Установка Monast на Elastix 2

Согласно документации (http://monast.sourceforge.net/#documentation) ставим:

Twisted 11+
Ставим необходимые пакеты для сборки
yum install python-devel python-crypto pyOpenSSL zope
Качаем последний Твистед
wget http://pypi.python.org/packages/source/T/Twisted/Twisted-11.1.0.tar.bz2#md5=972f3497e6e19318c741bf2900ffe31c
Распаковываем и заходим в каталог, читаем ридми и инстал доки :)
и запускаем:
python setup.py install

Устанавливаем Starpy SVN-Trunk
wget http://downloads.sourceforge.net/project/starpy/starpy/1.0.0a13/starpy-1.0.0a13.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fstarpy%2F&ts=1321890341&use_mirror=dfn
tar xzf starpy-1.0.0a13.tar.gz
cd starpy-1.0.0a13
python setup.py install


установка PHP PEAR Packages (HTTP_Client)
pear install HTTP_Client

Копируем в monast.conf.sample в /etc/monast.conf и редактируем под себя.

Копируем содержимое архива монаста в /var/www/html/monast

Запускаем ./monast.py --daemon и наслаждаемся функционалом. :)

Tuesday, August 9, 2011

Elastix 1.6 AgentcallBackLogin

Записки о том как реализовать функцию AgentcallBackLogin в callcenter Elastix 1.6.

Шаги установки:
1. ставим еластикс

2. ставим модуль колцентра

3. обновляем фрипбкс до версии 2.6 через фрипбксовую панель

4. Копируем парсер лога для логинов и логаутов, лежит тут, в папку /var/www/html/modules/login_logaut

5. Редактируем кронтаб для запуска скрипта cronupdate.sh каждую минуту
0-59 * * * * /var/www/html/modules/login_logout/cron/cronupdate.sh

6. Редактируем конфиг extensions_override_freepbx.conf

[agentlogin]
exten => *1,1,Answer
exten => *1,n,Read(AGENT_USERID,agent-user)
exten => *1,n,NoOp(Agent ${AGENT_USERID}is ${AGENT(${AGENT_USERID})})
exten => *1,n,GotoIf($[ "${AGENT(${AGENT_USERID})}"= "LOGGEDIN"]?logedin)
exten => *1,n,AgentCallbackLogin(${AGENT_USERID}||${CALLERID(num)}@from-internal)
exten => *1,n,Hangup()
exten => *1,n(logedin),Playback(agent-incorrect)
exten => *1,n,Playback(not-yet-assigned)
exten => *1,n,Hangup()

[weather-wakeup]
exten => *3,1,Answer
exten => *3,n,Read(AGENT_USERID,agent-user)
exten => *3,n,VMauthenticate(${AGENT_USERID}@default)
;exten => *3,n,SayDigits(${AGENT_USERID})
exten => *3,n,System(asterisk -rx "agent logoff Agent/${AGENT_USERID}")
exten => *3,n,Playback(agent-loggedoff)
exten => *3,n,Hangup

7. Меняем /var/www/html/modules/agent_console/libs/paloSantoAgentConsole.class.php
на файлик взятый тут

3. Не забываем включить Dialer в разделе Configuration модуля CallCenter
По умолчанию узер admin пароль elastix456


Но есть один минус, нет статистики по логину и логауту агентов. Все, теперь минусов нет. :)

Friday, July 29, 2011

FreePBX, настройка outbound callerid.

Возникла необходимость, на сервере Asterisk с FreePBX версии 2.9, добавлять к исходящему Cellerid еще две циферки впереди.
Т.е. к примеру у нас екстеншн с номером 456555, при звонке в сеть пстн провайдера необходимо что бы вызов был от номера 33456555. Где 33 - префикс города. Т.е. на всех номерах должен добавляться этот самый 33. Конечно можно в настройках екстеншина указывать вручную callerID. Но это как-то лениво, и иногда можно просто напросто забыть это сделать.
Потому делаем смело следующее
1 редактируем extensions_override_freepbx.conf
nano /etc/asterisk/extensions_override_freepbx.conf

по умолчанию, файл пуст, добавляем туда следующие строки


include => macro-outbound-callerid-custom
exten => s,1,ExecIf($["${CALLINGPRES_SV}" != ""]?Set(CALLERPRES()=${CALLINGPRES_SV}))
exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=33${CALLERID(number)}))
exten => s,n(start),GotoIf($[ $["${REALCALLERIDNUM}" = ""] | $["${KEEPCID}" != "TRUE"] | $["${OUTKEEPCID_${ARG1}}" = "on"] ]?normcid)
exten => s,n,Set(USEROUTCID=${REALCALLERIDNUM})
exten => s,n,GotoIf($["foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}" = "foo"]?bypass)
exten => s,n(normcid),Set(USEROUTCID=${DB(AMPUSER/${AMPUSER}/outboundcid)})
exten => s,n(bypass),Set(EMERGENCYCID=${DB(DEVICE/${REALCALLERIDNUM}/emergency_cid)})
exten => s,n,Set(TRUNKOUTCID=${OUTCID_${ARG1}})
exten => s,n,GotoIf($["${EMERGENCYROUTE:1:2}" = "" | "${EMERGENCYCID:1:2}" = ""]?trunkcid)
exten => s,n,Set(CALLERID(all)=${EMERGENCYCID})
exten => s,n(exit),MacroExit()
exten => s,n(trunkcid),ExecIf($[${LEN(${TRUNKOUTCID})} != 0]?Set(CALLERID(all)=${TRUNKOUTCID}))
exten => s,n(usercid),ExecIf($[${LEN(${USEROUTCID})} != 0]?Set(CALLERID(all)=${USEROUTCID}))
exten => s,n,ExecIf($[${LEN(${TRUNKCIDOVERRIDE})} != 0 | ${LEN(${FORCEDOUTCID_${ARG1}})} != 0]?Set(CALLERID(all)=${IF($[${LEN(${FORCEDOUTCID_${ARG1}})}=0]?${TRUNKCIDOVERRIDE}:${FORCEDOUTCID_${ARG1}})}))
exten => s,n(hidecid),ExecIf($["${CALLERID(name)}"="hidden"]?Set(CALLERPRES()=prohib_passed_screen))


Где вписываем нужный нам префикс для перед CallerID.
Сохраняем и делаем релоад конфига в растериске:

config reload /etc/asterisk/extensions_additional.conf

Делаем тестовый звонок - и уррраааа!!!!  У нас добавляется волшебный номер 33.)))

Теперь задачка усложнится, нужно проверить если чел звонит на международку, то тогда нужно добавлять код страны и горда что-то типо 456 33. Где 456 код страны. :)

Гуглим...

Нагуглил! :)
В этом же файле добавляю строку вида

exten => s,n,ExecIf($["${DIAL_NUMBER:0:2}" = "00"]?Set(REALCALLERIDNUM=45633${CALLERID(number)}))
Т.е. мы проверяем, если номер содержит вначале 00, тогда добавляем 45633 к CallerId.

Добавляем её после строки 

exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=33${CALLERID(number)}))