Взаимодействие клиентов SIP. Часть 1 / Хабрахабр

Взаимодействие клиентов SIP. Часть 1 / Хабрахабр.

Интеграция Asterisk и SugarCRM

Интеграция Asterisk и SugarCRM

Настройка платы Е1 Digium TE407P с нестандартными D-каналами

Час Ч настал, и 1 потока Е1 нам хватать перестало. Благо, на АТС раскроссировано сразу 4, так что дело осталось за малым — установить и настроить новую плату на 4 потока.

В качестве устройства была выбрана Digium TE407P — решение с 4 портами PRI E1\T1 и модулем аппаратного эхоподавления. Она заменила стоявшую там Digium TE122P — младшую 1портовую модель.

Итак, приступим:

Показать »

Подготовка:

Для начала, подготовим патч-корды, которыми наш девайс будет соединяться с АТС. Для этого используется обычный кабель UTP 5CAT в стандартной распиновке, где используются оранжевая и синяя пара (1-2 и 4-5 контакты).

Обратный конец, при необходимости, обжать на кроссовер, то бишь если 1 конец у нас бо-о, с-бс, то второй будет с-бс, бо-о).  У меня второй конец вставлялся прямо в плинт от АТС, поэтому я его даже не обжимал, а пользовался ключом для плинтов (очень удобная вещь)

instrument_lpt-92_dlj_zadelki_plintov_tipa_krone

Но об этом позже.

Итак, физика у нас теоретически готова. Приступим к подготовке ПО.

Для начала, необходимо подкорректировать настройки модуля DAHDI:

Открываем файл /etc/dahdi/modules.conf и раскомментируем строку, отвечающую за поддержку карт данной модели и комментируем ненужный более модуль поддержки те122:

Исправим некоторые настройки в /etc/dahdi/system.conf

Небольшая ремарка. Потока у нас будет 4, однако на 1м из них (старом) D-канал настроен на 16й канал, а на остальных — на 1й, что в дальнейшем привнесло небольшой разлад и притормозило работу.

Итак, с модулем DAHDI закончили.

Выключаем сервер, заменяем ТЕ122Р на ТЕ407Р, включаем…

Коммутация и тестирование

После включения сервера проверяем вывод dmesg:

Взлетело. Отлично.

Проверяем правильность кроссировки с обеих сторон. Для этого используем извечный метод всех телефонистов — loopback, он же замыкание на себя.

Для платы — достаточно закоротить оранжевую и синюю пары, если индикатор на передней панели карты загорелся зеленым-мы все сделали правильно.

Для АТС — аналогично. Я для этих целей использовал специальный девайс, шедший в комплекте с платой:

Clipboard01 Clipboard02

Представляет собой кусок текстолита с RJ-45 разъемом и замкнутыми контактами на нужных парах, с логотипом дигиума. Повесил на брелок =)

Коммутируем с обеих сторон — вставляем RJ-45 в плату, с помощью описанного выше ключа коммутируем в плинт. Если все ОК — индикатор на АТС и плате должны загореться зеленым, если не загорелись — нужно поменять местами синюю и оранжевую пару (Rх платы должен идти к Tх ATC, и наоборот).

Железо проверили, переходим к логике:

Проверяем состояние потоков утилитой dahdi_scan

Плата и АТС весело перемигиваются зелеными огоньками, DAHDI потоки подхватил, значи можно переходить к следующему этапу

Конфигурирование Asterisk-а

Подправим модуль chan_dahdi.conf

После этого делаем рестарт Астериска и в стандартной конфигурации все должно заработать.

В стандартной. Но не у нас.

У нас Астериск упорно не желает загружать 2-4 потоки, при этом не давая работать и первому.

Если оставить так:

работает.

Думал, где-то что-то не так настроил или скроссировал. Потом дошло.

Как писалось выше, D-channel (канал с сигнализацией) на 1 потоке у нас настроен на 16 канал, а на остальных — на первый. Астериск почему-то по умолчанию считает D-каналом именно16й (видимо, поэтому ранее на него и был настроен со стороны АТС), и о том, что модуль DAHDI видит D-каналы 2-4 потоков на 1 канале — ничего знать не хочет. Что ж, мы ему об этом расскажем:

Допишем в начале chan_dahdi.conf:

Описание из семпл-файла:

Опция trunkgroup создает транковые группы, в которых можно указать номер D-канала, опция spanmap привызывает конкретный span к конкретной группе.

Рестарт Астериска…

Работает.

На все действо потрачено 40 минут времени, из них время недоступности сервиса — менее 5 минут (время на перезагрузку сервера).

Да, чуть не забыл.

Digium TE407P (на самом деле она ТЕ405Р с установленным модулем аппаратного эхоподавления), как и ряд других, умеет быть как Е1, так и Т1. Режим устанавливается с помощью перемычек непосредственно на плате (они подписаны). По умолчанию перемычки стоят в положении Т1, так что не забудьте переключить их в режим Е1.

Баланс сим-карты на почту

В прошлой статье мы подключили наш E1550 к asterisk.

Продолжая тюнинг и «обвес» системы. Сегодня мы будем отправлять входящие на симку сообщения и USSD-запросы на почту.

Показать »

Нам потребуются:

  • asterisk + chan_dongle
  • почтовый клиент
  • php

Установим php:

Установим почтовый клиент:

Можно любой другой, но настроить mini-sendmail у меня например не хватило терпения =)

Настроим SMTP-клиент:

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

Проверим результат:

Если все правильно, вы получите письмо с текстом test.

Добавим в контекст донгла экстеншены для обработки sms и ussd-сообщений:

Создадим скрипт для обработки входящих сообщений:

Корректировки:

По умолчанию наш астериск стартует от имени пользователя nobody, поэтому скрипт не запускается — прав не хватает. Я исправил в файле /etc/asterisk/asterisk.conf имя пользователя, от имени которого запускается астер, на root.

Делаем релоад, пробуем:

получаем на почту письмо:

Установка Asterisk+chan_dongle на роутер dir-320 с прошивкой OpenWRT

В предыдущем посте описан процесс установки asterisk+chan_dongle на роутер dir-320 с прошивкой от Олега. Попробовал, настроил — не понравилось. Да, большим плюсом является возможность собрать модуль донгла прямо на роутере, но лично мне не понравилась сама прошивка — неудобный веб-интерфейс, странности при настройке, внешний носитель монтируется «на соплях» и периодически отваливается модем. Поэтому было решено попробовать собрать все тот же паровоз, но на прошивке OpenWRT (даже несмотря на крики умных людей «акстись, отрок! не соберешь ты донгл на опенврт»).

Но мы упорные »

Итак, первым делом для сбора кастомной прошивки нам потребуется Linux. Сразу оговорюсь, Ubuntu 12.04 не подходит (во всяком случае при компиляции на ней модуль донгла у меня так и не собрался), поэтому я использовал Debian Squeeze, довольно-таки старую сборку, стоящую на одном из удаленных серверов (а чего мощностям простаивать, лучше нагрузить компиляцией Core Quad, чем домашний Celeron Dual Core)

Сборка

Итак, первым делом убеждаемся, что у нас есть 5 гиг свободного места (да-да, нужно не менее 4.5 гиг, сам офигел). Я собирал в папке /tmp, т.к. в /home у меня свободного места не нашлось =)

Итак, сперва установим все необходимые пакеты:

Далее, скачиваем Buildroot OpenWrt:

Скачиваем и устанавливаем дополнительные пакеты и патчи:

Собираем tools и toolchain необходимой архитектуры:

На этом этапе заодно проверится все ли нужные пакеты у нас установлены, если нет-доустанавливаем.

Добавляем к конфигу модуль донгла:

В скачанном мейкфайле меняем версию астериска на устанавливаемую (глянуть какая будет ставиться можно в feeds/net/asterisk1.8.x/Makefile)

Тут есть еще 1 момент: на момент написания статьи на сайте OpenWRT последняя версия астера 1.8.8.0, но собранные пакеты — только для 1.8.7.1. Поэтому я поменял в Makefile версию с 1.8.8.0 на 1.8.7.1 и переписал MD5SUM на a732a608ce60fd523646be618e9da616

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

Конфигурируем прошивку:

В процессе конфигурирования, нужно выбрать систему, пакеты, и настроить будущую прошивку.

Выбираем систему:

Выбирать пакеты можно как для установки в прошивку, так и просто для сборки. Пакеты, собранные без установки образуют наш мини-репозиторий, из которого их можно будет устанавливать уже после заливки прошивки в роутер. Памяти в DIR-320 всего 4 МБ, причём обязательно должно остаться немного свободного места для использования JFFS2. Так что будем устанавливать минимально необходимый набор пакетов, а остальное соберём для последующей установки на внешний носитель. Чтобы выбрать пакет для установки в прошивку, нужно нажать Y. Я добавил в прошивку пакеты, требуемые для монтирования флешки:

Остальные пакеты ( в том числе астериск) будем ставить модулями. Кроме того, в главном меню появится пункт Asterisk Telephony dongle driver — это наш модуль донгла, не забываем собрать его.

В данном списке много нужных пакетов, я установил модулем еще mc, nano, LuCI (веб-интерфейс, позже пригодится)

Сохраняем конфиг, выходим, собираем:

Параметр j определяет количество потоков, которые мы сможем использовать для сборки. Эксперты советуют ставить этот параметр равным кол-ву ядер+1.

Этот процесс, пожалуй, самый длительный-у меня он занял пару часов.

После завершения сборки, в папке bin будут находиться созданные образы прошивки в различном формате и собранные пакеты. Нам понадобится образ прошивки в формате squashfs — openwrt-brcm47xx-squashfs.trx.

Прошивка

О там, как прошить кастомную прошивку на дир320, написано миллион тем, останавливаться на этом подробно не буду.

Вкратце:

  1. Устанавливаем на нашем компьютере с windows ip 192.168.0.2
  2. Подключаем сетевым кабелем к компьютеру наш DIR-320. Кабель подключаем не в WAN-порт,а в 1-й.
  3. Создаем на диске c: папку bin
  4. Копируем туда нашу прошивку openwrt-brcm47xx-squashfs.trx
  5. Переименовывем ее в firmware.bin
  6. Скачиваем по ссылке в папку c:bin пакетный файл для прошивки
  7. Отключаем DIR-320 от питания
  8. Запускаем пакетный файл flashing.cmd
  9. Скрипт попросит нажать любую клавишу. Нажимаем пробел или ENTER
  10. Включаем питание роутера

Должен начаться процес прошивки и в итоге мы должны получить сообщение

*** Start Flashing ****
Успешная передача: 3092480 байт за 11 сs, 281134 байт/с

После того, как загорится индикатор статуса (~2-3 мин.), можно менять сетевые настройки на получение IP по DHCP и подключаться к маршрутизатору по адресу 192.168.1.1

Перенос системы на внешний носитель

Делал все по этой статье, взлетело с первого раза

Тюнинг

Если предыдущий пункт выполнен по инструкции — у нас есть доступ на роутер по SSH. Заходим любым SSH-клиентом (я использовал верный Putty) и делаем

У нас имеется установленный FTP-клиент и веб-интерфейс. Подключаемся к FTP и заливаем папку Packages, в которую у нас собрались доп. модули.

Переходим в нее и выполняем

Остальные пакеты устанавливаем по необходимости.

Я доставил codec_alaw,codec_ulaw,chan_local.

Также, благодаря нашему шаманству с мейкфайлами, мы теперь можем устанавливать модули для астерискане из локального репозитария, а с net-repository openwrt (очень удобно кстати из свежеустановенного веб-интерфейса LuCI, там есть вкладка где это можно сделать 1 щелчком мыши)

Дальше все как всегда при работе с донглом — проверяем чтобы в системе появились /dev/ttyUSBx, если нету-проверяем взлетел ли модуль kmod-usb-serial, kmod-usb-serial-option, если не взлетел-делаем:

Проверяем VID & PID модема (для настроенного Huawei e1550 это 12d1 & 1001)

делаем:

Устройство появляется в /dev как /dev/ttyUSB0-2

Настраиваем модуль dongle:

если не взлетает — подобрать /dev/ttyUSB для data-порта.

Как только определится-можно привязывать модем не портом, а IMEI-модема


Источники, откуда я черпал вдохновение:
Раз
Два
Три
Четыре

Бюджетный вариант виртуальной АТС с не бюджетными возможностями / Хабрахабр

Бюджетный вариант виртуальной АТС с не бюджетными возможностями / Хабрахабр.

Установка Asterisk на роутер dir320

Установка Asterisk на роутер dir320

Настройка безопасности НЕ через fail2ban. Небанально.

Безопасность Asterisk.

Настройка GSM-шлюза Dinstar DWG2000-16GSM

Итак, Dinstar DWG2000-16GSM:

Солидная такая 1U-железка

В комплект поставки входит:

  • Железко — 1 шт
  • Шнур питания — 1 шт
  • Патч-корд — 1 шт
  • Антеннки 6дБ — 16 шт

На морде устройства располагаются:

  • 2 отсека под блоки SIM-карт (SIM-banks) — у меня в каждом отсеке стоит симбанк на 8 карточек.
  • Отсек под панель с интерфейсными портами (у меня это LAN и CONSOLE-порты, есть варианты с Е1 портом)
  • Антеннки — небольшие 6дБ с магнитиком на ножке для облегчения крепления на металлическом корпусе девайса.

Приступим к настройке »

Вставляем сим-карты. Для этого откручиваем 2 винтика и достаем сим-банк. Я поставил в 1й банк 8 карт МТС, во второй-8 карт Киевстара. На всех симках предварительно отключена вторая линия и установлена переадресация по «занято» на следующую карту стека.Вставляем банки на место, фиксируем винтами, подключаем питание и патч-корд к порту LAN, и заходим по адресу 192.168.11.1

Dinstar 1

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

Сходу меняем пароли админа и настройки сети.

Dinstar 2Dinstar 3

Создаем группы портов для облегчения последующей маршрутизации

Dinstar 4

Разделяем на 2 группы соответственно вставленным симкам.

Dinstar 5

Настроим основные параметры SIP (System Configuration => Service Parameter)

 Dinstar 6 Dinstar 7

Я ратую за безопасность, поэтому неавторизованные звонки не разрешаю.

Далее, настроим соединение с SIp-сервером(System Configuration => SIP Parameter): Dinstar 8 Dinstar 9

Настроим параметры авторизации портов. Можно настраивать, чтобы каждый порт авторизовался на сервере как отдельный пир, я сделал 1 пиром (маршрутизация на сервере будет). Используем вкладку System Configuration => Port Parameter

Dinstar 10

Обязательно указываем To VOIP hotline — это экстеншен на сервере, в который попадет звонок.

В sip.conf сервера указываю следующее:

ну и экстеншен:


применяем — пир зарегистрировался на сервере без проблем.

Теперь приступим к настройке маршрутизации. Тут все значительно проще и нагляднее, чем в GoIP-е:

Настроим входящие:

Routing Configuration => Tel->IP routing

Dinstar 11С группы портов №1 с любым префиксом отпуливать на сип-сервер.

Аналогично — для второй группы портов.

Dinstar 12Настроим исходящие:

Routing Configuration => IP->Tel routing

Dinstar 13Все звонки с сип-сервера с префиксом 066 выпускаем через портгруппу МТС

Аналогично для остальных направлений МТС. Можно было вообще сделать 1 хитрое правило вида (066|050|095|099)xxxxxxx, но я решил сделать отдельно — чуть больше действий, зато нагляднее и проще в последующем управлении.

То же самое делаем с Киевстар, только указываем его портгруппу.

Я дополнительно прописал номера сервисных служб, чтобы иметь возможность дозвониться на них при необходимости.

Dinstar 14Также создал дефолтное направление, через все порты — на всякий случай, почему это нормально-увидите чуть ниже.

Теперь добавим разрешения для вызовов внутрьнаружу

Внутрь: Operation => Tel->IP operation

Dinstar 15Разрешаем любые звонки с портгруппы МТС. С Киевстар аналогично.

Dinstar 16

Наружу: Operation =>IP-> Tel operation

Dinstar 17Указываем префикс и разрешающее действие

Dinstar 18Я создал разрешающие правила для МТС и Киевстар, а также запрещающие-для всех остальных.

Работает, как оказалось, по принципу Iptables, единственное замечание — порядок действий (Index) имеет значение (что в общем-то достаточно логично).

Все, в принципе после этого шлюз готов к работе.

Впечатление от железки-сугубо положительное — все достаточно просто, интерфейс интуитивно понятен. Есть множество полезных штучек, как-то:

CDR:

Clipboard10BCCH (показывает данные о БС, с которыми работают симки):

Clipboard13

Отправкапросмотрудаление SMS

Работает отправка и прием USSD (не все, увы, переадресации и вторую линию отключал все равно через телефон, но счет проверитьномер узнать можно)

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

Аппарат, при стоимости в 15 000 грн (для сравнения, GoIP стоит 12 000) однозначно оправдывает себя как по надежности, так и по функционалу.

 

З.Ы. На написание этой инструкции я потратил больше времени, чем на настройку самого аппарата.

Авторизация