На сегодняшний день это чудо инженерной мысли, к тому же, недешевое (я имею ввиду телефон Cisco 9971), так вот это чудо не умеет корректно работать с IP-PBX Asterisk. Это проявляется в неработающих софт-кнопках, например, создания конференции. Если быть точным, то кнопки работают, но при попытке создать конференцию видим на экране что-то вроде "Unable to create conference". Телефон работает по SIP протоколу. Такие дела.
Выход, как всегда, есть: необходимо патчить Asterisk. Патчи накладываются на исходные тексты программы, после чего необходимо скомпилировать пропатченные исходники в бинарные файлы.
Таким образом, этот процесс включает в себя целый ряд действий. Дальше описан краткий процесс применения патчей, компиляции и установки.
Все описанное проходило на OC Debian 6.0.7. Используется установка с нуля. В случае, если Asterisk уже установлен, действия будут несколько отличаться. В основном, тем, что нам необходимо будет удалить установленную программу и сохранить конфиги. Бэкапы тоже не помешают.
Итак, приступим. В первую очередь нам надо установить пакеты, необходимые для компиляции Asterisk.
root@debian:~# apt-get install build-essential linux-headers-`uname -r` g++ subversion libmysqlclient-dev libxml2-dev libncurses5-dev libsqlite3-dev libssl-dev libsrtp0-dev unixodbc-devДальше надо загрузить архивы с исходниками. Загружать будем с официального сайта. Мной использовалась версия 1.8.14 по той причине, что для нее есть патч. Патчи есть не для всех версий.
Кроме исходников Астериска неплохо бы загрузить еще и исходники DAHDI-модуля.
root@debian:~# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.14.0.tar.gz
root@debian:~# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.6.1+2.6.1.tar.gzВозможно, вам будут необходимы и другие программы. Основной темы статьи это не касается, поэтому оставим дополнительные фичи и переходим к разархивированию исходных текстов. Начнем с DAHDI-модуля, тут ничего патчить не надо.
root@debian:~# tar zxvf dahdi-linux-complete-*.tar.gzКомпилируем модуль и устанавливаем
root@debian:~# cd dahdi-linux-complete-2.6*
root@debian:~# make all && make install && make configТеперь переходим к Астериску.
root@debian:~# tar zxvf asterisk-1.8.14.0.tar.gzНа этом этапе нам надо пропатчить исходники. Загружаем патч по ссылке
root@debian:~# wget https://issues.asterisk.org/jira/secure/attachment/44090/gareth-1.8.14.0.patchПо этой ссылке https://issues.asterisk.org/jira/browse/ASTERISK-13145 можно найти патчи для разных версий Астериска, но далеко не для всех. Возможно, они там как-то совместимы с другими версиями с минимальными правками, но это лучше уточнять у разработчика. К слову, обсуждение патчей и диалог с разработчиком идет на странице по той же ссылке. Также там можно найти примеры конфигов.
Вернемся к нашей недокомпилированной IP-PBX. Патчим астериск.
root@debian:~# patch -p0 < gareth-1.8.14.0.patchЕсли у вас возникают ошибки такого рода:
Hunk #141 FAILED at 27998.то вам следует проверить правильность каталога, где находитесь вы и папка с исходниками. В идеале (но не обязательно), все должно выглядеть вот так:
Hunk #142 FAILED at 28824.
Hunk #143 FAILED at 30109.
Hunk #144 FAILED at 30390.
144 out of 144 hunks FAILED -- saving rejects to file asterisk-1.8.14.0/channels/chan_sip.c.rej
root@debian:~# lsДальше процедура стандартная. Компилируем и устанавливаем пропатченный Asterisk
asterisk-1.8.14.0 gareth-1.8.14.0.patch
root@debian:~#./configureдля корректной работы изменяем свойства каталогов
root@debian:~# make menuconfig
root@debian:~# make && make install && make samples && make config
chown -R asterisk:asterisk /var/lib/asterisk
chown -R asterisk:asterisk /var/log/asterisk
chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /var/spool/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk
chown -R asterisk:asterisk /dev/dahdi
chmod -R u=rwX,g=rX,o= /var/lib/asterisk
chmod -R u=rwX,g=rX,o= /var/log/asterisk
chmod -R u=rwX,g=rX,o= /var/run/asterisk
chmod -R u=rwX,g=rX,o= /var/spool/asterisk
chmod -R u=rwX,g=rX,o= /usr/lib/asterisk
chmod -R u=rwX,g=rX,o= /dev/dahdi
chown -R asterisk:asterisk /etc/asterisk
chmod -R u=rwX,g=rX,o= /etc/asterisk
Если после ввода комманды chown -R asterisk:asterisk /dev/dahdi вы получаете ошибку chown: cannot access `/dev/dahdi': No such file or directory, перезагрузите сервер.
Перейдем к файлам настроек, там тоже есть свои особенности.
sip.conf
В этом файле, в разделе для данного телефона указываем значения
[601]Ключевой параметр, это cisco_usecallmanager=yes. Именно он активирует правильную обработку сигнального протокола в пропатченном Asterisk.
…
ciscounified=yes
dndbusy=yes
cisco_usecallmanager=yes
extesions.conf
Для того, чтобы активировать перевод звонка через софт-клавишу CallForward необходимо добавить в файл extesions.conf следующие директивы
; Strip the x-cisco-serviceuri- prefixSEP***.cnf.xml
exten => _[x]-cisco-serviceuri-.,1,Goto(${EXTEN:19},1)
; Enable forwarding
exten => _cfwdall-.,1,Answer
same => next,Set(SIPPEER(${CHANNEL(peername)},callforward)=${EXTEN:8})
same => next,Hangup(normal_clearing)
; Disable forwarding
exten => cfwdall,1,Answer
same => next,Set(SIPPEER(${CHANNEL(peername)},callforward)=)
same => next,Hangup(normal_clearing)
Пример этого файла для данного телефона можно найти радом в патчем по ссылке, приведенной выше. В этом файле указаны специфические секции для работы софт-кнопок. Кроме того, указано название файла, где описаны действия для обработки их нажатий, или что-то вроде того. Название файла находится в секции <softKeyFile>softkey.xml</softKeyFile>
Пример его тоже можно найти по приведенной выше ссылке
Заключение.
Данный рецепт не претендует на однозначную правильность и безошибочность. Возможно, где-то что-то можно упустить, может что-то сделать проще или иначе. Но, как бы там ни было, это действующий рецепт, после которого телефон работает так, как нужно. Результат нескольких часов гугления, чтения форумов и компилирования.
Just Another Network Blog: Учим Asterisk Работать С Телефоном Cisco 9971 >>>>> Download Now
ReplyDelete>>>>> Download Full
Just Another Network Blog: Учим Asterisk Работать С Телефоном Cisco 9971 >>>>> Download LINK
>>>>> Download Now
Just Another Network Blog: Учим Asterisk Работать С Телефоном Cisco 9971 >>>>> Download Full
>>>>> Download LINK MS