Скачать
Штаб-квартира корпорации
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706
USA
http://www.cisco.com
Тел.: +1 408 526-4000
+1 800 553-NETS (6387)
Факс: +1 408 526-4100
IP-телефон Cisco 7961G/7961G-GE
и 7941G/7941G-GE для
Cisco CallManager 4.1(3)
СОДЕРЖИТ ЛИЦЕНЗИЮ И ГАРАНТИЮ
Руководство по
эксплуатации телефона
Руководство по эксплуатации телефона
Содержание
- Настройка телефона Cisco серии 79XX для работы с Asterisk
- Используется:
- Настройка
- Что не вошло в статью
- Subnets.ru blog
- Перепрошивка и настройка VoIP телефона Cisco 7931G
Настройка телефона Cisco серии 79XX для работы с Asterisk
В статье будут описаны нюансы настройки IP-телефона Cisco на примере цискофона 7942G.
Итак, если вы присматриваетесь к VoIP-устройствам Cisco серии 79XX, то добро пожаловать под кат.
Используется:
Cisco VoIP Phone 7942G
Asterisk 1.4.39
TFTP-server-0.49
Внимание! Инструкция подходит не для всех телефонов Cisco 79XX. См. здесь
Настройка
Комбинации клавиш в Cisco
**#** — перезагрузка телефона (через меню)
**# — разблокировка настроек (также через меню). Разблокировка нужна, например, для того чтобы поставить настройки DHCP-клиента
Смена прошивки
Итак, сначала нужно разыскать нужную прошивку для работы по SIP, т.к. по умолчанию используется версия с SCCP. Для этого есть гугл или торренты.
Далее заходим на известный всем сайт voip-info.org. По ссылке выложена информация о прошивке. Т.к. у меня версия астериска 1.4 (которая не умеет работать по tcp), то советуют брать версию 8.5.4. По этой ссылке есть много и другой полезной информации.
Таким образом, нам нужен файл cmterm-7942_7962-sip.8-5-4.zip. Все файлы которые там есть нужно вывалить в корень тфтп-сервера.
Русская локаль
Еще бы нам не помешала русская локаль. Ну т.е. чтобы все надписи на экране были на русском языке.
Я её брал из файла po-locale-ru_RU-8.4.3.1000-1.exe (тоже можно найти в интернете). Тут есть одна хитрость — при запуске программы она вываливает ошибку и потом закрывается. Но нам ведь всего лишь нужны файлы локали, установить мы их можем и сами.
Поэтому после запуска идем в папку %TEMP% (советую предварительно её очистить) и смотрим что там программа вывалит.
Там в числе прочего будет папка Russian_Russian_Federation. Вот её нам и нужно будет поместить в корень tftp-сервера.
Версия локали будет как раз 8.4.3.1000-1.
Файл кофигурации цискофона
Теперь перейдем непосредственно к файлу конфигурации. Цискофон загружает его исключительно с tftp-сервера. Сначала кажется неудобно, с другой стороны, нужно настроить всего один раз, а затем можно эти телефоны хоть штабелями закупать — настройка их будет аналогичной и займет минимум времени. Кроме того, этим Cisco обезопасил телефон от «шаловливых ручек» пользователей. Через меню сделать практически ничего нельзя.
Файл должен называться SEP .cnf.xml.
Мак-адрес записан на тыльной стороне устройства.
Определим некоторые значения:
$ASTERISK — ай-пи нашего астериска
$SERVICESURL — полный путь до скрипта, который генерирует адресную книгу (например, 192.168.0.22/asterisk/directory.php)
$ACCOUNT — пользователь/номер нашего аккаунта на астериске. Если у вас нет соответствия номер пользователь, то конфиг нужно будет соответствующим образом поменять.
$ACCOUNT_PASS — пароль от SIP-аккаунта
Теперь будем комментировать.
Все часовые пояса можно найти, например, здесь.
Следующие настройки нужны для настройки локали:
Конфигурация sip.conf астериска
Самое интересное здесь — call-limit=2. Суть в том, что можно будет получать 1 или 2 звонка (3 звонок уже на циску не пойдет — зачем её напрягать?), их можно обрабатывать на телефоне, переключаясь между ними. Больше чем 2 звонка в этом аппарате не поддерживается (возможно будет поддерживаться в новых прошивках), хотя обрабатывать 3 звонка уже достаточно накладно.
Настройка диалплана цискофона
Циско настолько умная, что может использовать свой собственный диалплан. Но тут есть обратная сторона медали. Если этот диалплан не указать, то исходящие звонки вообще ходить не будут. Точней будут, но только на номера от 0 до 9 =).
В этом конфиге мы по сути передаем всю ответственность на астериск — т.е. просто после 3-х секунд передаем номер. Более изящные номерные планы можно найти на voip-info.org.
Адресная книга абонентов
У нас есть LDAP (в связке с samba), в нем есть информация о телефонах пользователей. Так почему бы этим не воспользоваться?
Сервер LDAP, filter поиска нужно будет поменять на свои настройки.
directory.php:
Обновление. Заметьте, что на странице только 32 контакта. Почему так? Не знаю, чем это объяснить, но так реализовано в прошивке — больше чем 32 контакта не поддерживается. Впрочем, это не беда, т.к. можно реализовать при помощи софткеев механизм отображения пред. и след. страниц.
Делаем настройки для логотипа
Для начала по логам tftp смотрим куда cisco обращается за картинкой. Происходит это в момент выбора фонового изображения
через меню телефона (как разблокировать меню написано выше).
изображения из меню
/tftpboot/Desktops/320x196x4/List.xml:
Нам нужно создать одну картинку 320×196 и одну картинку в 4 раза меньше (80×49).
Logo-TN.png — эскиз.
Logo.png — полноценная картинка.
Изменять логотип нужно через меню телефона.
Что не вошло в статью
— Настройка сигналов вызовов. Да, это тоже можно делать. Другое дело — зачем? Если для вас оно имеет смысл — то дерзайте.
— Настройка directories. Есть возможность, например, читать RSS с телефона и вообще добавлять различные контент-каталоги.
Источник
Subnets.ru blog
Сети, настройка оборудования, сетевые сервисы.
|
||||||
Subnets.ru Регистрация IP и Автономных систем mega-net.ru |
Перепрошивка и настройка VoIP телефона Cisco 7931G
Возникла необходимость настроить телефон Cisco Unified IP Phone 7931G для работы по протоколу SIP и подключению его к серверу с Asterisk.
Ранее я не имела опыта по настройке данных аппаратов и пришлось разбираться с нуля.
Итак у нас имеется аппарат, который штатно работает по протоколу SCCP (Skinny Client Control Protocol, проприетарный протокол Cisco).
Первостепенная задача — перепрошить телефон SIP прошивкой, взятой с официального сайта.
На сайте есть прошивка версии 9+ и я сначала поставила ее, но возникли проблемы с конфигом. Примеров конфигурационного файла для 9ой версии в Инете не нашлось и телефон отказывался работать (даже с сокращенным до минимума конфигом для прошивок версии я решила откатиться до версии 8.5(3)SR1 как самой популярной по мануалам из разных источников.
Для настройки телефона нам понадобится:
В моем случае — все делалось на рабочей станции под OS FreeBSD.
IP-адрес машины для внутренней сети — 10.20.1.1/24
Если вдруг Ваш телефон не настроен на DHCP, то это можно изменить через меню телефона. Надо разблокировать возможность менять настройки комбинацией клавиш **#, и, покопавшись в не сильно просторном меню, выставить искомый параметр.
Для запуска tftp требуется расскоментировать (или добавить) строчку в /etc/inetd.conf
tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot
Создать директорию в корне (если она отсутствует):
#mkdir /tftpboot
Установить права доступа на эту директорию:
#chown -R nobody:nogroup /tftpboot
Далее запустить
#/etc/rc.d/inetd onestart
Для автозапуска, после перезагрузки системы, добавить в /etc/rc.conf:
inetd_enable=”YES”
Проверяем, запустился ли демон inetd:
#sockstat | grep :69
root inetd 1094 5 udp4 *:69 *:*
Настраиваем DHCP. Установила из портов сервер isc-dhcp42-server:
#cd /usr/ports/net/isc-dhcp42-server/
#make install clean
Далее правим конфиг DHCP и добавляем DHCP Option 66 и Option 150:
#ee /usr/local/etc/dhcpd.conf
Cisco Systems использует нестандартную опцию в DHCP – option 150 (проприетарная опция) для настройки своих аппаратов. Опция 66 — ее аналог.
Тоже самое можно сделать и на микротике, для этого в настройки DHCP сервера нужно добавить:
/ip dhcp-server option
add code=66 name=tftp66 value=»‘IP tftp‘»
add code=150 name=tftp150 value=»‘IP tftp’”
Где IP tftp это IP-адрес нашего TFTP сервера. Пишем его в одинарных кавычках, если добавлять через винбокс, а если через консоль, то в одинарных, а потом в двойных.
/ip dhcp-server network
add address=Network/mask dhcp-option=tftp66,tftp150 dns-server=DNS1,DNS2 gateway=IP-router netmask=24
В папку /tftpboot выкладываем файлы из скаченного архива с прошивкой.
Список файлов:
- SIP31.8-5-3SR1S.loads
- apps31.8-5-3ES4.sbn
- cnu31.8-5-3ES4.sbn
- cvm31sip.8-5-3ES4.sbn
- dsp31.8-5-3ES4.sbn
- jar31sip.8-5-3ES4.sbn
- term31.default.loads
На этом приготовления окончены и мы приступаем к самому процессу.
Необходимо удалить с телефона старую прошивку. Для этого:
- отключаем телефон от питания
- включаем держа клавишу # до тех пор пока программируемые кнопки не начнут мигать по очереди оранжевым светом
- отпускаем кнопку и вводим на телефоне код: 3491672850*#
Телефон должен начать мигать кнопками, красным цветом. Это значит процесс стирания старой прошивки пошел. Затем телефон выключается и визуально не видно, делает ли он что-либо. Следует спокойно подождать 3-5 минут.
А пока я смотрела в tcpdump трафика на интерфейсе в сторону телефона и логи tftp-сервера, чтобы убедиться что есть обращения от телефона к DHCP и получения файлов по TFTP.
Итак телефон прошился новой прошивкой и загружается. Для его дальнейшей работы в /tftpboot нам требуется создать конфигурационный файл телефона в формате XML, который должен иметь название вида: SEP000000000000.cnf.xml
Где 000000000000 – МАС-адрес телефона, который написан на нем на наклейке сзади.
Содержимое конфигурационного файла (наиболее интересные строки, на которые стоит обратить внимание, выделены синим):
Следует отметить, что если телефон не принимает конфигурационный файл, например из-за наличия ошибок в нем, то он будет отображать на экране состояние «Unprovisioned» и каждые 30 секунд обращаться к tftp-серверу, пытаясь вновь скачать конфигурационный файл (вдруг, на этот раз он не будет содержать ошибок). Эти попытки прекрасно видны по tcpdump`у и в логах TFTP.
Для проверки корректности XML синтаксиса конфигурационного файла мне дали хороший совет: просто открыть файл конфига браузером. Лично мне это помогло, помогло осознать почему конфиг не принимается, а так же браузер точно указал в каком именно месте ошибка синтаксиса.
Пробежимся по настройкам:
dateTemplate — формат День — Месяц — Год.
timeZone — Временные зоны, например, перечислены тут
loadInformation — Версия прошивки, которую брать. Должно совпадать с названием файла .loads
phoneLabel — в правом верхнем углу будет висеть этот лейбл. Не длинее 12 символов.
preferredCodec — голосовой кодек, который будет использовать телефон
webAccess — Включение WEB-сервера на телефона. Обратите внимание, что для включение веб-интерфейса необходимо установить значение параметра в ноль.
sshAccess — Тоже самое касается ssh доступа на устройство.
Причем основная часть инструкций считает достаточным ввести 2 строки с UserID и Password для работы сервиса ssh, некоторые источники указывают еще верхние 2, и поясняют их актуальность только для версий прошивки старше 8.5.1. У меня не получилось подключиться по ssh ни в одном из найденных мной версий написания этих параметров.
Настройки сети:
registerWithProxy — для регистрации SIP линий
natEnable — ставим «true» если телефон находится за NAT
Если natEnable в «true», то телефону необходимо знать внешний IP-адрес NAT`а. Для этого есть две опции:
- natReceivedProcessing — внешний IP-адрес будет автоматически браться из поля VIA (received=XXX.XXX.XXX.XXX) SIP-пакета 200 ОК полученный от сервера в ответ на пакет REGISTER от телефона, вместо поля Contact
- natAddress — явное указание внешнего IP адрес NAT`a
При работе за NAT`ом выбрала установку natReceivedProcessing, а natAddress оставила пустым:
Указание диапазона RTP портов:
voipControlPort — если значение пустое, то по умолчанию порт 5060. Обратите внимание, что в зависимости от значения параметра natEnabled поведение разное.
Если natEnabled «false», то этот порт используется в кач-ве SRC порта для отправки SIP пакетов. Если natEnabled «true», то телефон будет отправлять пакеты с непривилегированных портов, а на этом порту будет ожидать ОТВЕТЫ от SIP-сервера.
Таким образом, при установке телефона за NAT и без дополнительной настройки шлюза (проброс порта) он работать не будет.
Изыскания на эту тему написаны в топике «Cisco 7931g SIP» на forum.asterisk.ru:
После чего телефон утверждает udp port 49287 unreachable:
Снова попробовал через NAT и наконец разобрался.
Могу сказать, что в предыдущий раз, это я ОЛЕНЬ (правда не пойму как так получилось), но судя по дампу, и наличию «rport» в конце строки VIA на которую я не обратил внимания, в пире в этот момент точно стояло nat=yes, а не nat=no.
Установил nat=no на стороне Asterisk, в конфиге телефона:
И… и это не взлетело, но на этот раз причина ясна:
- 1.1.68.16 — Asterisk
- 1.1.68.72 — IPшник NAT`а
- 10.10.1.153 — IPшник телефона
Прохождение пакета REGISTER от телефона: 10.10.1.153.49845 > 1.1.68.72.49845 > 1.1.68.16.5060 (поле Contact: )
Прохождение ответного пакета 401 Unauthorized: 1.1.68.16.5060 > 1.1.68.72.5061
Пакет доезжает до 1.1.68.72, но не проходит к 10.10.1.153 т.к. в таблице NAT трансляций отсутствует запись о 10.10.1.153:5061, т.к. изначальный пакет 10.10.1.153.49845, посему пакет просто отбрасывается.
Соответственно становится логично, что если сделать проброс порта 5061 с внешнего 1.1.68.72 на 10.10.1.153, то все конечно же заработает.
Делаем проброс 5061 и ч.т.д.
Дамп на стороне Asterisk`а:
7896/7896 1.1.68.72 D 5061 Unmonitored
Reg. Contact : sip:7896@1.1.68.72:5061;transport=udp
Дамп на стороне NAT`а (после процесса NAT):
SIP линии:
featureID — про этот параметр ниже
proxy- IP-адрес нашего сервера c Asterisk
port — SIP порт
name — Имя или номер SIP аккаунта
displayName — Отображаемое имя, соответственно указываем или имя или номер.
authName — имя вашего аккаунта для авторизации на сервере, обычно это ваш номер
authPassword — пароль вашего SIP аккаунта
contact — номер SIP аккаунта
Линия с Speed Dial
SD (Speed Dial — набор номера по нажатии кнопки) на программируемых кнопках (коих 24 штуки).
Хотелось настроить еще и BLF, но это оказалось все непросто с этим на этом телефоне. Идея была отодвинута (отлично гуглятся решения, вроде работы телефона с Cisco Call Manager), т.к. необходимо пропатчить Астериск, а именно chan_sip.
Кнопки линий пронумерованы от 24 до 1 сверху вниз, чередуясь слева вправо. Соответвенно, 1 линия находится в правом нижнем углу.
featureLabel- выводимое описание
speedDialNumber — номер для набора
featureID — код фичи, то что будет делаться по нажатию кнопки:
- feature id 1 last number redial
- feature id 2 speed dial
- feature id 3 hold
- feature id 5 fwd all
- feature id 9 line — Для SIP регистрации
- feature id 19 private
- feature id 20 service uri
- featureid 21 speed dial — Для набора сохраненного номера
- feature id 22 paging
- feature id 27 Malicious call ID
Источник
Скачать файл PDF «Cisco Systems 7931G Инструкция по эксплуатации» (4.83 Mb)
Популярность:
1447 просмотры
Подсчет страниц:
20 страницы
Тип файла:
Размер файла:
4.83 Mb
Возникла необходимость настроить телефон Cisco Unified IP Phone 7931G для работы по протоколу SIP и подключению его к серверу с Asterisk.
Ранее я не имела опыта по настройке данных аппаратов и пришлось разбираться с нуля.
Итак у нас имеется аппарат, который штатно работает по протоколу SCCP (Skinny Client Control Protocol, проприетарный протокол Cisco).
Первостепенная задача — перепрошить телефон SIP прошивкой, взятой с официального сайта.
На сайте есть прошивка версии 9+ и я сначала поставила ее, но возникли проблемы с конфигом. Примеров конфигурационного файла для 9ой версии в Инете не нашлось и телефон отказывался работать (даже с сокращенным до минимума конфигом для прошивок версии я решила откатиться до версии 8.5(3)SR1 как самой популярной по мануалам из разных источников.
Для настройки телефона нам понадобится:
- DHCP сервер
- tftp сервер
В моем случае — все делалось на рабочей станции под OS FreeBSD.
IP-адрес машины для внутренней сети — 10.20.1.1/24
Если вдруг Ваш телефон не настроен на DHCP, то это можно изменить через меню телефона. Надо разблокировать возможность менять настройки комбинацией клавиш **#, и, покопавшись в не сильно просторном меню, выставить искомый параметр.
Для запуска tftp требуется расскоментировать (или добавить) строчку в /etc/inetd.conf
tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot
Создать директорию в корне (если она отсутствует):
#mkdir /tftpboot
Установить права доступа на эту директорию:
#chown -R nobody:nogroup /tftpboot
Далее запустить
#/etc/rc.d/inetd onestart
Для автозапуска, после перезагрузки системы, добавить в /etc/rc.conf:
inetd_enable=”YES”
Проверяем, запустился ли демон inetd:
#sockstat | grep :69
root inetd 1094 5 udp4 *:69 *:*
Настраиваем DHCP. Установила из портов сервер isc-dhcp42-server:
#cd /usr/ports/net/isc-dhcp42-server/
#make install clean
Далее правим конфиг DHCP и добавляем DHCP Option 66 и Option 150:
#ee /usr/local/etc/dhcpd.conf
option voip-tftp-server code 150 = { ip-address }; subnet 10.20.1.0 netmask 255.255.255.0 { ...skiped... option tftp-server-name "10.20.1.1"; option voip-tftp-server "10.20.1.1"; ...skiped... }
Cisco Systems использует нестандартную опцию в DHCP – option 150 (проприетарная опция) для настройки своих аппаратов. Опция 66 — ее аналог.
Тоже самое можно сделать и на микротике, для этого в настройки DHCP сервера нужно добавить:
/ip dhcp-server option
add code=66 name=tftp66 value=»‘IP tftp‘»
add code=150 name=tftp150 value=»‘IP tftp’”
Где IP tftp это IP-адрес нашего TFTP сервера. Пишем его в одинарных кавычках, если добавлять через винбокс, а если через консоль, то в одинарных, а потом в двойных.
/ip dhcp-server network
add address=Network/mask dhcp-option=tftp66,tftp150 dns-server=DNS1,DNS2 gateway=IP-router netmask=24
В папку /tftpboot выкладываем файлы из скаченного архива с прошивкой.
Список файлов:
- SIP31.8-5-3SR1S.loads
- apps31.8-5-3ES4.sbn
- cnu31.8-5-3ES4.sbn
- cvm31sip.8-5-3ES4.sbn
- dsp31.8-5-3ES4.sbn
- jar31sip.8-5-3ES4.sbn
- term31.default.loads
На этом приготовления окончены и мы приступаем к самому процессу.
Необходимо удалить с телефона старую прошивку. Для этого:
- отключаем телефон от питания
- включаем держа клавишу # до тех пор пока программируемые кнопки не начнут мигать по очереди оранжевым светом
- отпускаем кнопку и вводим на телефоне код: 3491672850*#
Телефон должен начать мигать кнопками, красным цветом. Это значит процесс стирания старой прошивки пошел. Затем телефон выключается и визуально не видно, делает ли он что-либо. Следует спокойно подождать 3-5 минут.
А пока я смотрела в tcpdump трафика на интерфейсе в сторону телефона и логи tftp-сервера, чтобы убедиться что есть обращения от телефона к DHCP и получения файлов по TFTP.
Итак телефон прошился новой прошивкой и загружается. Для его дальнейшей работы в /tftpboot нам требуется создать конфигурационный файл телефона в формате XML, который должен иметь название вида: SEP000000000000.cnf.xml
Где 000000000000 – МАС-адрес телефона, который написан на нем на наклейке сзади.
Содержимое конфигурационного файла (наиболее интересные строки, на которые стоит обратить внимание, выделены синим):
<device> <fullConfig>true</fullConfig> <deviceProtocol>SIP</deviceProtocol> <sshAccess>0</sshAccess> <sshPort>22</sshPort> <sshUserId>cisco</sshUserId> <sshPassword>cisco</sshPassword> <devicePool> <dateTimeSetting> <dateTemplate>D.M.Y</dateTemplate> <timeZone>Russian Standard/Daylight Time</timeZone> <ntps> <ntp> <name>IP-address-ntp</name> <ntpMode>Unicast</ntpMode> </ntp> </ntps> </dateTimeSetting> <callManagerGroup> <tftpDefault>true</tftpDefault> <members> <member priority="0"> <callManager> <name></name> <description></description> <ports> <ethernetPhonePort>2000</ethernetPhonePort> <sipPort>5060</sipPort> <securedSipPort>5061</securedSipPort> </ports> <processNodeName>DNS-name-or-IP-address-Asterisk-server</processNodeName> </callManager> </member> </members> </callManagerGroup> </devicePool> <commonProfile> <phonePassword></phonePassword> <backgroundImageAccess>true</backgroundImageAccess> <callLogBlfEnabled>0</callLogBlfEnabled> </commonProfile> <loadInformation>SIP31.8-5-3SR1S</loadInformation> <loadInformation434 model="Cisco 7931">SIP31.8-5-3SR1S</loadInformation434> <vendorConfig> <disableSpeaker>false</disableSpeaker> <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset> <pcPort>0</pcPort> <settingsAccess>1</settingsAccess> <garp>0</garp> <voiceVlanAccess>0</voiceVlanAccess> <videoCapability>0</videoCapability> <autoSelectLineEnable>0</autoSelectLineEnable> <daysDisplayNotActive>1,7</daysDisplayNotActive> <displayOnTime>10:30</displayOnTime> <displayOnDuration>06:05</displayOnDuration> <displayIdleTimeout>00:05</displayIdleTimeout> <webAccess>0</webAccess> <spanToPCPort>1</spanToPCPort> <loggingDisplay>1</loggingDisplay> <loadServer></loadServer> </vendorConfig> <userLocale> <name>Russian_Federation</name> <uid></uid> <langCode>en_En</langCode> <version>SIP31.8-5-3SR1S</version> <winCharSet>utf-8</winCharSet> </userLocale> <networkLocale>Russian_Federation</networkLocale> <networkLocaleInfo> <name>Russian_Federation</name> <uid></uid> <version>SIP31.8-5-3SR41S</version> </networkLocaleInfo> <deviceSecurityMode>1</deviceSecurityMode> <idleTimeout>0</idleTimeout> <directoryURL></directoryURL> <servicesURL></servicesURL> <idleURL></idleURL> <messagesURL></messagesURL> <proxyServerURL></proxyServerURL> <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig> <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices> <dscpForCm2Dvce>96</dscpForCm2Dvce> <transportLayerProtocol>2</transportLayerProtocol> <capfAuthMode>0</capfAuthMode> <capfList> <capf> <phonePort>3804</phonePort> </capf> </capfList> <certHash></certHash> <encrConfig>false</encrConfig> <sipProfile> <sipProxies> <backupProxy></backupProxy> <backupProxyPort></backupProxyPort> <emergencyProxy></emergencyProxy> <emergencyProxyPort></emergencyProxyPort> <outboundProxy></outboundProxy> <outboundProxyPort></outboundProxyPort> <registerWithProxy>true</registerWithProxy> </sipProxies> <sipCallFeatures> <cnfJoinEnabled>true</cnfJoinEnabled> <callForwardURI>x--serviceuri-cfwdall</callForwardURI> <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI> <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI> <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI> <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI> <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI> <rfc2543Hold>false</rfc2543Hold> <callHoldRingback>2</callHoldRingback> <localCfwdEnable>false</localCfwdEnable> <semiAttendedTransfer>false</semiAttendedTransfer> <anonymousCallBlock>2</anonymousCallBlock> <callerIdBlocking>2</callerIdBlocking> <dndControl>0</dndControl> <remoteCcEnable>true</remoteCcEnable> </sipCallFeatures> <sipStack> <sipInviteRetx>6</sipInviteRetx> <sipRetx>10</sipRetx> <timerInviteExpires>180</timerInviteExpires> <timerRegisterExpires>300</timerRegisterExpires> <timerRegisterDelta>5</timerRegisterDelta> <timerKeepAliveExpires>120</timerKeepAliveExpires> <timerSubscribeExpires>120</timerSubscribeExpires> <timerSubscribeDelta>5</timerSubscribeDelta> <timerT1>500</timerT1> <timerT2>4000</timerT2> <maxRedirects>70</maxRedirects> <remotePartyID>false</remotePartyID> <userInfo>None</userInfo> </sipStack> <autoAnswerTimer>1</autoAnswerTimer> <autoAnswerAltBehavior>false</autoAnswerAltBehavior> <autoAnswerOverride>true</autoAnswerOverride> <transferOnhookEnabled>false</transferOnhookEnabled> <enableVad>false</enableVad> <preferredCodec>g711alaw</preferredCodec> <dtmfAvtPayload>101</dtmfAvtPayload> <dtmfDbLevel>3</dtmfDbLevel> <dtmfOutofBand>avt</dtmfOutofBand> <alwaysUsePrimeLine>false</alwaysUsePrimeLine> <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail> <kpml>3</kpml> <stutterMsgWaiting>1</stutterMsgWaiting> <callStats>true</callStats> <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts> <disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig> <startMediaPort>16100</startMediaPort> <stopMediaPort>19300</stopMediaPort> <voipControlPort>5061</voipControlPort> <dscpForAudio>184</dscpForAudio> <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy> <dialTemplate></dialTemplate> <phoneLabel>301</phoneLabel> <natReceivedProcessing>false</natReceivedProcessing> <natEnabled>false</natEnabled> <natAddress></natAddress> <sipLines> <line button="1"> <featureID>9</featureID> <featureLabel>Number</featureLabel> <proxy>DNS-name-or-IP-address-Asterisk-server</proxy> <port>5060</port> <name>SIP-account-number</name> <displayName>SIP-account-number-or-Name</displayName> <autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer> <callWaiting>3</callWaiting> <authName>SIP-account-auth-name</authName> <authPassword>SIP-password</authPassword> <sharedLine>false</sharedLine> <messageWaitingLampPolicy>3</messageWaitingLampPolicy> <messagesNumber></messagesNumber> <ringSettingIdle>4</ringSettingIdle> <ringSettingActive>5</ringSettingActive> <contact>SIP-account-number</contact> <forwardCallInfoDisplay> <callerName>true</callerName> <callerNumber>false</callerNumber> <redirectedNumber>false</redirectedNumber> <dialedNumber>true</dialedNumber> </forwardCallInfoDisplay> </line> <line button="2"> <featureID>21</featureID> <featureLabel>Name</featureLabel> <speedDialNumber>Number</speedDialNumber> </line> </sipLines> </sipProfile> </device>
Следует отметить, что если телефон не принимает конфигурационный файл, например из-за наличия ошибок в нем, то он будет отображать на экране состояние «Unprovisioned» и каждые 30 секунд обращаться к tftp-серверу, пытаясь вновь скачать конфигурационный файл (вдруг, на этот раз он не будет содержать ошибок). Эти попытки прекрасно видны по tcpdump`у и в логах TFTP.
Для проверки корректности XML синтаксиса конфигурационного файла мне дали хороший совет: просто открыть файл конфига браузером. Лично мне это помогло, помогло осознать почему конфиг не принимается, а так же браузер точно указал в каком именно месте ошибка синтаксиса.
Пробежимся по настройкам:
dateTemplate — формат День — Месяц — Год.
timeZone — Временные зоны, например, перечислены тут
loadInformation — Версия прошивки, которую брать. Должно совпадать с названием файла .loads
phoneLabel — в правом верхнем углу будет висеть этот лейбл. Не длинее 12 символов.
preferredCodec — голосовой кодек, который будет использовать телефон
webAccess — Включение WEB-сервера на телефона. Обратите внимание, что для включение веб-интерфейса необходимо установить значение параметра в ноль.
sshAccess — Тоже самое касается ssh доступа на устройство.
Причем основная часть инструкций считает достаточным ввести 2 строки с UserID и Password для работы сервиса ssh, некоторые источники указывают еще верхние 2, и поясняют их актуальность только для версий прошивки старше 8.5.1. У меня не получилось подключиться по ssh ни в одном из найденных мной версий написания этих параметров.
Настройки сети:
registerWithProxy — для регистрации SIP линий
natEnable — ставим «true» если телефон находится за NAT
Если natEnable в «true», то телефону необходимо знать внешний IP-адрес NAT`а. Для этого есть две опции:
- natReceivedProcessing — внешний IP-адрес будет автоматически браться из поля VIA (received=XXX.XXX.XXX.XXX) SIP-пакета 200 ОК полученный от сервера в ответ на пакет REGISTER от телефона, вместо поля Contact
- natAddress — явное указание внешнего IP адрес NAT`a
При работе за NAT`ом выбрала установку natReceivedProcessing, а natAddress оставила пустым:
<natReceivedProcessing>true</natReceivedProcessing> <natEnabled>true</natEnabled> <natAddress></natAddress>
Указание диапазона RTP портов:
- startMediaPort
- stopMediaPort
voipControlPort — если значение пустое, то по умолчанию порт 5060. Обратите внимание, что в зависимости от значения параметра natEnabled поведение разное.
Если natEnabled «false», то этот порт используется в кач-ве SRC порта для отправки SIP пакетов. Если natEnabled «true», то телефон будет отправлять пакеты с непривилегированных портов, а на этом порту будет ожидать ОТВЕТЫ от SIP-сервера.
Таким образом, при установке телефона за NAT и без дополнительной настройки шлюза (проброс порта) он работать не будет.
Изыскания на эту тему написаны в топике «Cisco 7931g SIP» на forum.asterisk.ru:
1.1.1.16 — сервер
10.10.1.153 — Cisco 7931G11:12:05.794376 IP (tos 0x60, ttl 64, id 249, offset 0, flags [none], proto UDP (17), length 609) 10.10.1.153.49287 > 1.1.1.16.5060: SIP, length: 581 REGISTER sip:1.1.1.16 SIP/2.0 Via: SIP/2.0/UDP 10.10.1.153:5060;branch=z9hG4bKb92b2996 From: <sip:7896@1.1.1.16>;tag=5cfc665d4f9a00100ee171b2-9eb423e6 To: <sip:7896@1.1.1.16> Call-ID: 5cfc665d-4f9a0002-b7a3ced0-c1c67a5a@10.10.1.153 Max-Forwards: 70 Date: Tue, 01 Jun 2010 06:05:18 GMT CSeq: 110 REGISTER User-Agent: Cisco-CP7931G/8.5.3 Contact: <sip:7896@10.10.1.153:5060;transport=udp>;+sip.instance="";+u.sip!model.ccm.cisco.com="348" Supported: (null),X-cisco-xsi-7.0.1 Content-Length: 0 Expires: 300 11:12:05.831242 IP (tos 0x0, ttl 60, id 57479, offset 0, flags [none], proto UDP (17), length 588, bad cksum 0 (->8afc)!) 1.1.1.16.5060 > 10.10.1.153.49287: SIP, length: 560 SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 10.10.1.153:5060;branch=z9hG4bKb92b2996;received=1.1.1.16;rport=49287 From: <sip:7896@1.1.1.16>;tag=5cfc665d4f9a00100ee171b2-9eb423e6 To: <sip:7896@1.1.1.16>;tag=as35525338 Call-ID: 5cfc665d-4f9a0002-b7a3ced0-c1c67a5a@10.10.1.153 CSeq: 110 REGISTER Server: sip8.domain.com Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE Supported: replaces, timer WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="070714aa" Content-Length: 0
После чего телефон утверждает udp port 49287 unreachable:
11:12:05.832048 IP (tos 0x0, ttl 64, id 250, offset 0, flags [none], proto ICMP (1), length 56) 10.10.1.153 > 1.1.1.16: ICMP 10.10.1.153 udp port 49287 unreachable, length 36 IP (tos 0x0, ttl 60, id 57479, offset 0, flags [none], proto UDP (17), length 588) 1.1.1.16.5060 > 10.10.1.153.49287: SIP, length: 560 [|sip]
….SKIPED….
Снова попробовал через NAT и наконец разобрался.
Могу сказать, что в предыдущий раз, это я ОЛЕНЬ (правда не пойму как так получилось), но судя по дампу, и наличию «rport» в конце строки VIA на которую я не обратил внимания, в пире в этот момент точно стояло nat=yes, а не nat=no.Установил nat=no на стороне Asterisk, в конфиге телефона:
<voipControlPort>5061</voipControlPort> <natReceivedProcessing>true</natReceivedProcessing> <natEnabled>true</natEnabled> <natAddress></natAddress>
И… и это не взлетело, но на этот раз причина ясна:
- 1.1.68.16 — Asterisk
- 1.1.68.72 — IPшник NAT`а
- 10.10.1.153 — IPшник телефона
Прохождение пакета REGISTER от телефона: 10.10.1.153.49845 > 1.1.68.72.49845 > 1.1.68.16.5060 (поле Contact: <sip:7896@1.1.68.72:5061;transport=udp>)
Прохождение ответного пакета 401 Unauthorized: 1.1.68.16.5060 > 1.1.68.72.5061
Пакет доезжает до 1.1.68.72, но не проходит к 10.10.1.153 т.к. в таблице NAT трансляций отсутствует запись о 10.10.1.153:5061, т.к. изначальный пакет 10.10.1.153.49845, посему пакет просто отбрасывается.Соответственно становится логично, что если сделать проброс порта 5061 с внешнего 1.1.68.72 на 10.10.1.153, то все конечно же заработает.
Делаем проброс 5061 и ч.т.д.Дамп на стороне Asterisk`а:
11:04:44.251049 IP (tos 0x0, ttl 60, id 767, offset 0, flags [none], proto UDP (17), length 768) 1.1.68.72.49845 > 1.1.68.16.5060: SIP, length: 740 REGISTER sip:1.1.68.16 SIP/2.0 Via: SIP/2.0/UDP 1.1.68.72:5061;branch=z9hG4bKff66d16c From: <sip:7896@1.1.68.16>;tag=5cfc665d4f9a003e6c2253cc-3c681c9c To: <sip:7896@1.1.68.16> Call-ID: 5cfc665d-4f9a0002-30c35668-66fda434@10.10.1.153 Max-Forwards: 70 Date: Wed, 28 Oct 2015 08:04:43 GMT CSeq: 165 REGISTER User-Agent: Cisco-CP7931G/8.5.3 Contact: <sip:7896@1.1.68.72:5061;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-0000-0000-5cfc665d4f9a>";+u.sip!model.ccm.cisco.com="348" Authorization: Digest username="7896",realm="asterisk",uri="sip:1.1.68.16",response="6a2ea6fed25e34d552573634601fb9d1",nonce="19016509",algorithm=MD5 Supported: (null),X-cisco-xsi-7.0.1 Content-Length: 0 Expires: 300 11:04:44.251109 IP (tos 0x0, ttl 64, id 63304, offset 0, flags [none], proto UDP (17), length 590) 1.1.68.16.5060 > 1.1.68.72.5061: SIP, length: 562 SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 1.1.68.72:5061;branch=z9hG4bKff66d16c;received=1.1.68.72 From: <sip:7896@1.1.68.16>;tag=5cfc665d4f9a003e6c2253cc-3c681c9c To: <sip:7896@1.1.68.16>;tag=as2a67ddfa Call-ID: 5cfc665d-4f9a0002-30c35668-66fda434@10.10.1.153 CSeq: 165 REGISTER Server: sip8.domain.com Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE Supported: replaces, timer WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="4a6dbb1e", stale=true Content-Length: 0 11:04:44.258586 IP (tos 0x0, ttl 60, id 768, offset 0, flags [none], proto UDP (17), length 768) 1.1.68.72.49846 > 1.1.68.16.5060: SIP, length: 740 REGISTER sip:1.1.68.16 SIP/2.0 Via: SIP/2.0/UDP 1.1.68.72:5061;branch=z9hG4bK398ff65c From: <sip:7896@1.1.68.16>;tag=5cfc665d4f9a003e6c2253cc-3c681c9c To: <sip:7896@1.1.68.16> Call-ID: 5cfc665d-4f9a0002-30c35668-66fda434@10.10.1.153 Max-Forwards: 70 Date: Wed, 28 Oct 2015 08:04:43 GMT CSeq: 166 REGISTER User-Agent: Cisco-CP7931G/8.5.3 Contact: <sip:7896@1.1.68.72:5061;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-0000-0000-5cfc665d4f9a>";+u.sip!model.ccm.cisco.com="348" Authorization: Digest username="7896",realm="asterisk",uri="sip:1.1.68.16",response="4a56a3e3f5e1b272274fa7cc3ce48d19",nonce="4a6dbb1e",algorithm=MD5 Supported: (null),X-cisco-xsi-7.0.1 Content-Length: 0 Expires: 300 11:04:44.258686 IP (tos 0x0, ttl 64, id 63321, offset 0, flags [none], proto UDP (17), length 609) 1.1.68.16.5060 > 1.1.68.72.5061: SIP, length: 581 SIP/2.0 200 OK Via: SIP/2.0/UDP 1.1.68.72:5061;branch=z9hG4bK398ff65c;received=1.1.68.72 From: <sip:7896@1.1.68.16>;tag=5cfc665d4f9a003e6c2253cc-3c681c9c To: <sip:7896@1.1.68.16>;tag=as2a67ddfa Call-ID: 5cfc665d-4f9a0002-30c35668-66fda434@10.10.1.153 CSeq: 166 REGISTER Server: sip8.domain.com Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE Supported: replaces, timer Expires: 300 Contact: <sip:7896@1.1.68.72:5061;transport=udp>;expires=300 Date: Wed, 28 Oct 2015 08:04:44 GMT Content-Length: 0
Состояние регистрации на сервере:
7896/7896 1.1.68.72 D 5061 Unmonitored
Addr->IP : 1.1.68.72:5061
Useragent : Cisco-CP7931G/8.5.3
Reg. Contact : sip:7896@1.1.68.72:5061;transport=udp
Дамп на стороне NAT`а (после процесса NAT):
11:45:08.033612 IP (tos 0x60, ttl 64, id 25, offset 0, flags [none], proto UDP (17), length 762) 10.10.1.153.49182 > 1.1.68.16.5060: SIP, length: 734 REGISTER sip:1.1.68.16 SIP/2.0 Via: SIP/2.0/UDP 10.10.1.153:5061;branch=z9hG4bK79f75193 From: <sip:7896@1.1.68.16>;tag=5cfc665d4f9a0002a072f674-1c4da357 To: <sip:7896@1.1.68.16> Call-ID: 5cfc665d-4f9a0002-f3129326-816fc831@10.10.1.153 Max-Forwards: 70 Date: Wed, 28 Oct 2015 08:45:05 GMT CSeq: 103 REGISTER User-Agent: Cisco-CP7931G/8.5.3 Contact: <sip:7896@10.10.1.153:5061;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-0000-0000-5cfc665d4f9a>";+u.sip!model.ccm.cisco.com="348" Authorization: Digest username="7896",realm="asterisk",uri="sip:1.1.68.16",response="7f6cf3decde843e30c6475cef15d7bc4",nonce="40839bef",algorithm=MD5 Supported: (null),X-cisco-xsi-7.0.1 Content-Length: 0 Expires: 0 11:45:08.035579 IP (tos 0x0, ttl 60, id 9145, offset 0, flags [none], proto UDP (17), length 588, bad cksum 0 (->47cb)!) 1.1.68.16.5060 > 10.10.1.153.5061: SIP, length: 560 SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 10.10.1.153:5061;branch=z9hG4bK79f75193;received=1.1.68.72 From: <sip:7896@1.1.68.16>;tag=5cfc665d4f9a0002a072f674-1c4da357 To: <sip:7896@1.1.68.16>;tag=as31ab4c73 Call-ID: 5cfc665d-4f9a0002-f3129326-816fc831@10.10.1.153 CSeq: 103 REGISTER Server: sip8.domain.com Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE Supported: replaces, timer WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="10809208", stale=true Content-Length: 0 11:45:08.041848 IP (tos 0x60, ttl 64, id 26, offset 0, flags [none], proto UDP (17), length 762) 10.10.1.153.49183 > 1.1.68.16.5060: SIP, length: 734 REGISTER sip:1.1.68.16 SIP/2.0 Via: SIP/2.0/UDP 10.10.1.153:5061;branch=z9hG4bK32b5e3e0 From: <sip:7896@1.1.68.16>;tag=5cfc665d4f9a0002a072f674-1c4da357 To: <sip:7896@1.1.68.16> Call-ID: 5cfc665d-4f9a0002-f3129326-816fc831@10.10.1.153 Max-Forwards: 70 Date: Wed, 28 Oct 2015 08:45:05 GMT CSeq: 104 REGISTER User-Agent: Cisco-CP7931G/8.5.3 Contact: <sip:7896@10.10.1.153:5061;transport=udp>;+sip.instance="<urn:uuid:00000000-0000-0000-0000-5cfc665d4f9a>";+u.sip!model.ccm.cisco.com="348" Authorization: Digest username="7896",realm="asterisk",uri="sip:1.1.68.16",response="7951fc7add50cbbceb0608a3a8b4379a",nonce="10809208",algorithm=MD5 Supported: (null),X-cisco-xsi-7.0.1 Content-Length: 0 Expires: 0 11:45:08.043572 IP (tos 0x0, ttl 60, id 9161, offset 0, flags [none], proto UDP (17), length 539, bad cksum 0 (->47ec)!) 1.1.68.16.5060 > 10.10.1.153.5061: SIP, length: 511 SIP/2.0 200 OK Via: SIP/2.0/UDP 10.10.1.153:5061;branch=z9hG4bK32b5e3e0;received=1.1.68.72 From: <sip:7896@1.1.68.16>;tag=5cfc665d4f9a0002a072f674-1c4da357 To: <sip:7896@1.1.68.16>;tag=as31ab4c73 Call-ID: 5cfc665d-4f9a0002-f3129326-816fc831@10.10.1.153 CSeq: 104 REGISTER Server: sip8.domain.com Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE Supported: replaces, timer Expires: 0 Date: Wed, 28 Oct 2015 08:45:08 GMT Content-Length: 0
SIP линии:
featureID — про этот параметр ниже
proxy- IP-адрес нашего сервера c Asterisk
port — SIP порт
name — Имя или номер SIP аккаунта
displayName — Отображаемое имя, соответственно указываем или имя или номер.
authName — имя вашего аккаунта для авторизации на сервере, обычно это ваш номер
authPassword — пароль вашего SIP аккаунта
contact — номер SIP аккаунта
Линия с Speed Dial
SD (Speed Dial — набор номера по нажатии кнопки) на программируемых кнопках (коих 24 штуки).
Хотелось настроить еще и BLF, но это оказалось все непросто с этим на этом телефоне. Идея была отодвинута (отлично гуглятся решения, вроде работы телефона с Cisco Call Manager), т.к. необходимо пропатчить Астериск, а именно chan_sip.
Кнопки линий пронумерованы от 24 до 1 сверху вниз, чередуясь слева вправо. Соответвенно, 1 линия находится в правом нижнем углу.
featureLabel- выводимое описание
speedDialNumber — номер для набора
featureID — код фичи, то что будет делаться по нажатию кнопки:
- feature id 1 last number redial
- feature id 2 speed dial
- feature id 3 hold
- feature id 5 fwd all
- feature id 9 line — Для SIP регистрации
- feature id 19 private
- feature id 20 service uri
- featureid 21 speed dial — Для набора сохраненного номера
- feature id 22 paging
- feature id 27 Malicious call ID
Полезные ссылки:
- http://www.voip-info.org/wiki/index.php?page_id=3624
- http://www.voip-info.org/wiki/view/Asterisk+phone+cisco+79×1+xml+configuration+files+for+SIP
- http://docs.acsdata.co.nz/asterisk-cisco/document-overview.shtml
- http://forum.asterisk.ru/viewtopic.php?f=6&t=4956
P.S. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Уважайте чужой труд.
Автор: Гриднева Мария
Похожие статьи:
Загрузка…
Эта статья размещена Viva 29.10.2015 в 11:59 в рубриках FreeBSD, VoIP, Железо VoIP.
Вы можете оставить отзыв или trackback с вашего собственного сайта. Отслеживайте все отзывы и комментарии к этой статье при помощи новостной ленты RSS.
Basic Phone Use:
Lift Handset, or press Line Button, or press
soft key, or press the speaker button,
or headset button and dial.
▪
▪
▪
soft key or line button, or speaker button or headset button.
▪
Hang up handset, or press
soft key, or headset key or speaker key, etc.
Phone Features:
1 Find the displaying PickUp softkey label & then press softkey button associated with it.
2
▪
GPickUp
Answering a call that is ringing on another extension outside of your workgroup
Check with your
do one of the following:
IS Department to find
1
If the Group PickUP button or GPickUp softkey is available, press it.
out if you have the
2
If the Group PickUp button or GPickUp softkey is NOT available, go «off -hook» (obtain
capability to pick up
a dial tone) to display the GPickUP softkey, then press it.
calls from another
3 Enter the group pickup code.
group
▪
Tip: If your phone supports auto-pickup, you are now connected to the call.
4
If the call rings, press Answer to connect the the call.
Mute a Call During the call press the Mute button Then press Mute again to resume speaking.
Quick Guide
Dial an extension to reach internal staff. Can you find your extension #_________?
Dial 9 plus 7 or 10 digits for local calls (local dialing rules apply).
Dial 9 plus 1 and the phone number for long distance call.
The call will be presented to your extension, press the Answer soft key to take the call.
Cisco Unified IP Phone: Model 7931
To pickup a call from a phone ringing in your workgroup do the following:
Note: You can only pickup calls that are ringing on an extension of your pickup workgroup, once the call
has moved on to a coverage path (gone to voice mail or someone else answers the call), you cannot
pickup the call.
Tip: If you receive a second call, you will hear a beep.
Then press the Answer soft key to answer it, and the first call will be put on hold.
©2007 INX, all rights reserved
1
Quick Guide 1/2008
Время на прочтение
13 мин
Количество просмотров 206K
В статье будут описаны нюансы настройки IP-телефона Cisco на примере цискофона 7942G.
Итак, если вы присматриваетесь к VoIP-устройствам Cisco серии 79XX, то добро пожаловать под кат.
Используется:
Cisco VoIP Phone 7942G
Asterisk 1.4.39
TFTP-server-0.49
Внимание! Инструкция подходит не для всех телефонов Cisco 79XX. См. здесь
Настройка
Комбинации клавиш в Cisco
**#** — перезагрузка телефона (через меню)
**# — разблокировка настроек (также через меню). Разблокировка нужна, например, для того чтобы поставить настройки DHCP-клиента
TFTP
Первое что нам понадобиться сделать — это настроить tftpserver. Я использовал стандартный линуксовый. Рекомендую сразу настроить, чтобы tftp-запросы записывались в лог-файл (по умолчанию /var/log/messages).
cat /etc/xinetd.d/tftp:
...
server_args = -s /tftpboot -v
...
Смена прошивки
Итак, сначала нужно разыскать нужную прошивку для работы по SIP, т.к. по умолчанию используется версия с SCCP. Для этого есть гугл или торренты.
Далее заходим на известный всем сайт voip-info.org. По ссылке выложена информация о прошивке. Т.к. у меня версия астериска 1.4 (которая не умеет работать по tcp), то советуют брать версию 8.5.4. По этой ссылке есть много и другой полезной информации.
Таким образом, нам нужен файл cmterm-7942_7962-sip.8-5-4.zip. Все файлы которые там есть нужно вывалить в корень тфтп-сервера.
Русская локаль
Еще бы нам не помешала русская локаль. Ну т.е. чтобы все надписи на экране были на русском языке.
Я её брал из файла po-locale-ru_RU-8.4.3.1000-1.exe (тоже можно найти в интернете). Тут есть одна хитрость — при запуске программы она вываливает ошибку и потом закрывается. Но нам ведь всего лишь нужны файлы локали, установить мы их можем и сами.
Поэтому после запуска идем в папку %TEMP% (советую предварительно её очистить) и смотрим что там программа вывалит.
Там в числе прочего будет папка Russian_Russian_Federation. Вот её нам и нужно будет поместить в корень tftp-сервера.
Версия локали будет как раз 8.4.3.1000-1.
Файл кофигурации цискофона
Теперь перейдем непосредственно к файлу конфигурации. Цискофон загружает его исключительно с tftp-сервера. Сначала кажется неудобно, с другой стороны, нужно настроить всего один раз, а затем можно эти телефоны хоть штабелями закупать — настройка их будет аналогичной и займет минимум времени. Кроме того, этим Cisco обезопасил телефон от «шаловливых ручек» пользователей. Через меню сделать практически ничего нельзя.
Файл должен называться SEP<MAC-адрес Cisco-телефона>.cnf.xml.
Мак-адрес записан на тыльной стороне устройства.
Определим некоторые значения:
$ASTERISK — ай-пи нашего астериска
$SERVICESURL — полный путь до скрипта, который генерирует адресную книгу (например, 192.168.0.22/asterisk/directory.php)
$ACCOUNT — пользователь/номер нашего аккаунта на астериске. Если у вас нет соответствия номер<=>пользователь, то конфиг нужно будет соответствующим образом поменять.
$ACCOUNT_PASS — пароль от SIP-аккаунта
<device>
<fullConfig>true</fullConfig>
<deviceProtocol>SIP</deviceProtocol>
<devicePool>
<dateTimeSetting>
<dateTemplate>D.M.Y</dateTemplate>
<timeZone>Ekaterinburg Standard Time</timeZone>
<ntps>
<ntp>
<name>$ASTERISK</name>
<ntpMode>Unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<tftpDefault>true</tftpDefault>
<members>
<member priority="0">
<callManager>
<name>$ASTERISK</name>
<description>CallManager 5.0</description>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
</ports>
<processNodeName>$ASTERISK</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>
<commonProfile>
<phonePassword></phonePassword>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>0</callLogBlfEnabled>
</commonProfile>
<loadInformation>SIP42.8-5-4S</loadInformation>
<loadInformation434 model="Cisco 7942">SIP42.8-5-4S</loadInformation434>
<vendorConfig>
<disableSpeaker>false</disableSpeaker>
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
<pcPort>0</pcPort>
<settingsAccess>1</settingsAccess>
<garp>0</garp>
<voiceVlanAccess>0</voiceVlanAccess>
<videoCapability>0</videoCapability>
<autoSelectLineEnable>0</autoSelectLineEnable>
<daysDisplayNotActive>1,7</daysDisplayNotActive>
<displayOnTime>10:30</displayOnTime>
<displayOnDuration>06:05</displayOnDuration>
<displayIdleTimeout>00:05</displayIdleTimeout>
<webAccess>1</webAccess>
<spanToPCPort>1</spanToPCPort>
<loggingDisplay>1</loggingDisplay>
<loadServer></loadServer>
</vendorConfig>
<userLocale>
<name>Russian_Russian_Federation</name>
<uid></uid>
<langCode>ru_RU</langCode>
<version>8.4.3.1000-1</version>
<winCharSet>utf-8</winCharSet>
</userLocale>
<networkLocale>Russian_Federation</networkLocale>
<networkLocaleInfo>
<name>Russian_Federation</name>
<uid></uid>
<version>8.4.3.1000-1</version>
</networkLocaleInfo>
<deviceSecurityMode>1</deviceSecurityMode>
<idleTimeout>0</idleTimeout>
<directoryURL></directoryURL>
<servicesURL>$SERVICESURL</servicesURL>
<idleURL></idleURL>
<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>2</transportLayerProtocol>
<capfAuthMode>0</capfAuthMode>
<capfList>
<capf>
<phonePort>3804</phonePort>
</capf>
</capfList>
<certHash></certHash>
<encrConfig>false</encrConfig>
<sipProfile>
<sipProxies>
<backupProxy>$ASTERISK</backupProxy>
<backupProxyPort>5060</backupProxyPort>
<emergencyProxy>$ASTERISK</emergencyProxy>
<emergencyProxyPort>5060</emergencyProxyPort>
<outboundProxy>$ASTERISK</outboundProxy>
<outboundProxyPort>5060</outboundProxyPort>
<registerWithProxy>true</registerWithProxy>
</sipProxies>
<sipCallFeatures>
<cnfJoinEnabled>true</cnfJoinEnabled>
<callForwardURI>x--serviceuri-cfwdall</callForwardURI>
<callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
<callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
<callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
<meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
<abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
<rfc2543Hold>false</rfc2543Hold>
<callHoldRingback>2</callHoldRingback>
<localCfwdEnable>true</localCfwdEnable>
<semiAttendedTransfer>true</semiAttendedTransfer>
<anonymousCallBlock>2</anonymousCallBlock>
<callerIdBlocking>2</callerIdBlocking>
<dndControl>0</dndControl>
<remoteCcEnable>true</remoteCcEnable>
</sipCallFeatures>
<sipStack>
<sipInviteRetx>6</sipInviteRetx>
<sipRetx>10</sipRetx>
<timerInviteExpires>180</timerInviteExpires>
<timerRegisterExpires>3600</timerRegisterExpires>
<timerRegisterDelta>5</timerRegisterDelta>
<timerKeepAliveExpires>120</timerKeepAliveExpires>
<timerSubscribeExpires>120</timerSubscribeExpires>
<timerSubscribeDelta>5</timerSubscribeDelta>
<timerT1>500</timerT1>
<timerT2>4000</timerT2>
<maxRedirects>70</maxRedirects>
<remotePartyID>false</remotePartyID>
<userInfo>None</userInfo>
</sipStack>
<autoAnswerTimer>1</autoAnswerTimer>
<autoAnswerAltBehavior>false</autoAnswerAltBehavior>
<autoAnswerOverride>true</autoAnswerOverride>
<transferOnhookEnabled>false</transferOnhookEnabled>
<enableVad>false</enableVad>
<preferredCodec>g711alaw</preferredCodec>
<dtmfAvtPayload>101</dtmfAvtPayload>
<dtmfDbLevel>3</dtmfDbLevel>
<dtmfOutofBand>avt</dtmfOutofBand>
<alwaysUsePrimeLine>false</alwaysUsePrimeLine>
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
<kpml>3</kpml>
<stutterMsgWaiting>1</stutterMsgWaiting>
<callStats>true</callStats>
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
<disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig>
<startMediaPort>10100</startMediaPort>
<stopMediaPort>10300</stopMediaPort>
<voipControlPort>5060</voipControlPort>
<dscpForAudio>184</dscpForAudio>
<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
<dialTemplate>dialplan.xml</dialTemplate>
<phoneLabel>Cisco</phoneLabel>
<natReceivedProcessing>false</natReceivedProcessing>
<natEnabled>false</natEnabled>
<natAddress></natAddress>
<sipLines>
<line button="1">
<featureID>9</featureID>
<featureLabel>$ACCOUNT</featureLabel>
<proxy>$ASTERISK</proxy>
<port>5060</port>
<name>$ACCOUNT</name>
<displayName>$ACCOUNT</displayName>
<autoAnswer>
<autoAnswerEnabled>2</autoAnswerEnabled>
</autoAnswer>
<callWaiting>3</callWaiting>
<authName>$ACCOUNT</authName>
<authPassword>$ACCOUNT_PASS</authPassword>
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>3</messageWaitingLampPolicy>
<messagesNumber></messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>
<contact>$ACCOUNT</contact>
<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>false</callerNumber>
<redirectedNumber>false</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
</line>
<line button="2">
<featureID></featureID>
<featureLabel></featureLabel>
<speedDialNumber></speedDialNumber>
</line>
</sipLines>
</sipProfile>
</device>
Теперь будем комментировать.
<timeZone>Ekaterinburg Standard Time</timeZone> - настройки часового пояса, которые будут использовать при получении информации от NTP-сервере (в конфиге это наш астериск).
Все часовые пояса можно найти, например, здесь.
<loadInformation>SIP42.8-5-4S</loadInformation> - имя прошивки, которая будет загружена
Следующие настройки нужны для настройки локали:
<userLocale>
<name>Russian_Russian_Federation</name>
<uid></uid>
<langCode>ru_RU</langCode>
<version>8.4.3.1000-1</version>
<winCharSet>utf-8</winCharSet>
</userLocale>
<networkLocale>Russian_Federation</networkLocale>
<networkLocaleInfo>
<name>Russian_Federation</name>
<uid></uid>
<version>8.4.3.1000-1</version>
</networkLocaleInfo>
<servicesURL>$SERVICESURL</servicesURL> - указываем откуда загружать XML для сервисов (в нашем случае там будет передаваться список абонентов).
<dialTemplate>dialplan.xml</dialTemplate> - это очень важная строчка, о ней будет ниже.
<line button="2"> - у нас пустой, т.к. используем один SIP-аккаунт.
<preferredCodec>g711alaw</preferredCodec> - кодек G711 alaw у нас будет предпочтительным.
Конфигурация sip.conf астериска
...
[$ACCOUNT]
deny=0.0.0.0/0.0.0.0
permit=192.168.0.0/255.255.255.0
type=friend
host=dynamic
context=НАШ_КОНТЕКСТ
dtmfmode=rfc2833
disallow=all
allow=alaw
allow=ulaw
allow=gsm
username=$ACCOUNT
secret=$ACCOUNT_PASS
call-limit=2
...
Самое интересное здесь — call-limit=2. Суть в том, что можно будет получать 1 или 2 звонка (3 звонок уже на циску не пойдет — зачем её напрягать?), их можно обрабатывать на телефоне, переключаясь между ними. Больше чем 2 звонка в этом аппарате не поддерживается (возможно будет поддерживаться в новых прошивках), хотя обрабатывать 3 звонка уже достаточно накладно.
Настройка диалплана цискофона
Циско настолько умная, что может использовать свой собственный диалплан. Но тут есть обратная сторона медали. Если этот диалплан не указать, то исходящие звонки вообще ходить не будут. Точней будут, но только на номера от 0 до 9 =).
<DIALTEMPLATE>
<TEMPLATE MATCH="*" Timeout="3"/> <!-- Anything else -->
</DIALTEMPLATE>
В этом конфиге мы по сути передаем всю ответственность на астериск — т.е. просто после 3-х секунд передаем номер. Более изящные номерные планы можно найти на voip-info.org.
Адресная книга абонентов
У нас есть LDAP (в связке с samba), в нем есть информация о телефонах пользователей. Так почему бы этим не воспользоваться?
Сервер LDAP, filter поиска нужно будет поменять на свои настройки.
directory.php:
<?
header("Content-type: text/xml");
header("Connection: close");
header("Expires: -1");
$page=1;
if(isset($_GET['page']))
{
$page = $_GET['page'];
if(settype($page,"integer") == false)
die("<b>BAD REQUEST (invalid type)</b>");
}
echo '<?xml version="1.0" encoding="UTF-8"?>'."n";
$ldapconfig['host'] = '192.168.0.8';
$ldapconfig['port'] = NULL;
$ldapconfig['basedn'] = 'ou=users,dc=MyCompany,dc=ru';
$ldapconfig['filter'] = "(&(uid=*)(objectClass=sambaSamAccount)(objectClass=inetOrgPerson))";
print("<CiscoIPPhoneDirectory>n");
print("t<Title> </Title>n");
print("t<Prompt> </Prompt>n");
$DS = @ldap_connect($ldapconfig['host'], $ldapconfig['port']);
if ( $DS === false )
exit("ldap_connect problem: ".ldap_error($DS));
$SRes = @ldap_search($DS, $ldapconfig['basedn'], $ldapconfig['filter']);
if ( $SRes === false )
exit("ldap_search problem: ".ldap_error($DS));
$res = @ldap_get_entries($DS, $SRes);
if ( $res === false )
exit("ldap_get_entries problem: ".ldap_error($DS));
$results = array();
for ($i = 0; $i < $res["count"]; $i++)
{
if (!isset($res[$i]["telephonenumber"]))
continue;
if (!isset($res[$i]["displayname"]))
continue;
$r_ar = array();
$r_ar['displayname']=$res[$i]["displayname"][0];
$r_ar['telephonenumber']=$res[$i]["telephonenumber"][0];
array_push($results, $r_ar);
}
for ($i = 0; $i < (count($results)-1); $i++)
for ($k = $i+1; $k < count($results); $k++)
{
if (strcmp($results[$i]['displayname'],$results[$k]['displayname']) > 0)
{
$r_tmp = array();
$r_tmp = $results[$i];
$results[$i] = $results[$k];
$results[$k] = $r_tmp;
}
}
for ($i = (32*($page-1)); $i < (32*$page); $i++)
{
if ($i == count($results))
break;
print("t<DirectoryEntry>n");
print("tt<Name>");
print($results[$i]['displayname']);
print("</Name>n");
print("tt<Telephone>");
print($results[$i]['telephonenumber']);
print("</Telephone>n");
print("t</DirectoryEntry>n");
}
print("<SoftKeyItem>");
print("<Name>Dial</Name>");
print("<URL>SoftKey:Dial</URL>");
print("<Position>1</Position>");
print("</SoftKeyItem>");
if ($page > 1)
{
print("<SoftKeyItem>");
print("<Name>Prev</Name>");
print("<URL>http://".$_SERVER['SERVER_NAME']."/asterisk/directory.php?page=".($page-1)."</URL>");
print("<Position>2</Position>");
print("</SoftKeyItem>");
}
$count_pages = (int) (count($results) / 32);
if ((count($results) % 32) !=0)
$count_pages++;
if ($page < $count_pages)
{
print("<SoftKeyItem>");
print("<Name>Next</Name>");
print("<URL>http://".$_SERVER['SERVER_NAME']."/asterisk/directory.php?page=".($page+1)."</URL>");
print("<Position>3</Position>");
print("</SoftKeyItem>");
}
print("<SoftKeyItem>");
print("<Name>Exit</Name>");
print("<URL>SoftKey:Exit</URL>");
print("<Position>4</Position>");
print("</SoftKeyItem>");
print("</CiscoIPPhoneDirectory>n");
?>
Обновление. Заметьте, что на странице только 32 контакта. Почему так? Не знаю, чем это объяснить, но так реализовано в прошивке — больше чем 32 контакта не поддерживается. Впрочем, это не беда, т.к. можно реализовать при помощи софткеев механизм отображения пред. и след. страниц.
Делаем настройки для логотипа
Для начала по логам tftp смотрим куда cisco обращается за картинкой. Происходит это в момент выбора фонового изображения
через меню телефона (как разблокировать меню написано выше).
изображения из меню
/tftpboot/Desktops/320x196x4/List.xml:
<CiscoIPPhoneImageList>
<ImageItem Image="TFTP:Desktops/320x196x4/Logo-TN.png" URL="TFTP:Desktops/320x196x4/Logo.png"/>
</CiscoIPPhoneImageList>
Нам нужно создать одну картинку 320×196 и одну картинку в 4 раза меньше (80×49).
Logo-TN.png — эскиз.
Logo.png — полноценная картинка.
Изменять логотип нужно через меню телефона.
Что не вошло в статью
— Настройка сигналов вызовов. Да, это тоже можно делать. Другое дело — зачем? Если для вас оно имеет смысл — то дерзайте.
— Настройка directories. Есть возможность, например, читать RSS с телефона и вообще добавлять различные контент-каталоги.
Проблемы, возникшие в процессе настройки
1. Нужна была прошивка для SIP (по умолч. SCCP)
2. Не регистрировался телефон (поставил прошивку 9.0.3, которая работает только по TCP)
3. Не шли исходящие звонки (см. dialplan.xml)
4. Отображаются только 32 контакта в адресной книге (ограничение прошивки)
Ссылки
www.voip-info.org/wiki/view/Asterisk+phone+cisco+79×1+xml+configuration+files+for+SIP
www.voip-info.org/wiki/view/Asterisk+phone+cisco+7970+SIP
www.asteriskguru.com/tutorials/cisco_7960_ip_phone_configuration.html
Опыт настройки:
3090607.ru/note/27-cisco-ip-phone-locale
forum.sysadmins.su/index.php?showtopic=20489
www.voipstore.com/configuring-cisco-7975-ip-phones-for-sip
asteriskpbx.ru/display/Asterisk/CISCO+7911
www.gho.no/2009/05/cisco-ip-phone-configuration-with-asterisk
Офиц. руководство:
www.cisco.com/en/US/docs/voice_ip_comm/cuipph/7960g_7940g/sip/2_0/english/administration/guide/admin2.pdf
www.cisco.com/en/US/docs/voice_ip_comm/cuipph/7962g_7942g/6_0/english/administration/guide/7962G-Admin-Book-Wrapper.html
XML objects:
www.cisco.com/univercd/cc/td/doc/product/voice/vpdd/cdd/5_0/5_0_1/ipphsv/ip503ch2.htm#wp1033491
www.ibm.com/developerworks/wireless/library/wi-voip
webmaxtor.blogspot.com/2009/04/cisco-ipphonedirectory-exit-softkey.html
www.cisco.com/univercd/cc/td/doc/product/voice/vpdd/cdd/5_0/5_0_1/ipphsv/ip503ch2.htm
docstore.mik.ua/univercd/cc/td/doc/product/voice/vpdd/cdd/5_0/ipphsv/ip502apa.htm#wp1007090
my.safaribooksonline.com/book/telephony/1587050609/using-cisco-ip-phone-xml-objects-and-tags/ch04#X2ludGVybmFsX0ZsYXNoUmVhZGVyP3htbGlkPTEtNTg3MDUtMDYwLTkvNjE=