voip-всё что связано с телефонией
  • Дата создания
    20 февраля 2015
  • Топиков
    16
  • Ограничение на постинг
    0.000

Очистка смс на модеме через datacard - Asterisk

  • VOIP
ERROR[15627]: at_response.c:1420 at_response_smmemfull: [dongle0] SMS storage is full

Это означает, что память SMS заполнена, и нужно ее освободить. Существует 2 вида памяти SMS: на SIM карте и в самом 3G модеме.
Для очистки памяти SIM применяем в консоли астериска последовательно команды:
datacard cmd AT+CPMS=\«SM\»,\«SM\»,\«SM\»
datacard cmd AT+CMGD=1,4
Для очистки памяти модема применяем в консоли астериска последовательно команды:
datacard cmd AT+CPMS=\«ME\»,\«ME\»,\«ME\»
datacard cmd AT+CMGD=1,4
В консоли asterisk (CLI) должно появиться сообщение вида:
[datacard_name] 'AT+CMGD=1,4'
Command queued for execute
[datacard_name] Got Response for user's command:'OK'
...NOTICE[15627]: at_response.c:1714 at_response: [dongle_name] Got Response for user's command:'OK'

Всё. Память SMS очищена.
===
Читать дальше

Подключение модема Huawei E1550 к FreePBX (elastix ).

  • VOIP
Протестированно на модеме Huawei E1550 с разлоченным звонками и версией прошивки 11.608.14.15.311 СКАЧАТЬ ТУТ
А теперь перейдем к установке и настройке модема. Для нормальной работы модема отключим на нем CardReader и виртуальный CD-ROM. Сделать это можно так:

root@computer:$ sudo -i
root@computer:$ apt-get install minicom
root@computer:$ minicom -s
Выбираем настройку последовательного порта:
Нажимаем А и редактируем порт — /dev/ttyUSB0 после этого жмем два раза Enter и нажимаем Выход.
После подключения к модему введем команду — AT^U2DIAG=0 (Это команда перевода модема в режим только модем)
Выходим нажав Ctrl-A а потом Q

CardReader и виртуальный CD-ROM отключены можно продолжать.
Дальше — если нет svn то доставим

# yum install mod_dav_svn mod_ssl


Ну а дальше непосредственно к установке chan_datacard. По чему то не захотел ставиться на elastix 2.4

# svn co http://www.makhutov.org/svn/chan_datacard/trunk/ chan_datacard
# cd ~/chan_datacard/
# ./configure
# make install
# cp ~/chan_datacard/etc/datacard.conf /etc/asterisk


Второй вариант это chan_dongle

Устанавливаем последнюю стабильную версию Dongle-1.1.r14:

Качаем, распаковываем и переходим в папку с исходниками модуля chan_dongle выполнив команды:

wget http://asterisk-chan-dongle.googlecode.com/files/chan_dongle-1.1.r14.tgz
tar xvfz chan_dongle-1.1.r14.tgz
cd chan_dongle-1.1.r14

Если на официальном сайте отсутствует архив с дистрибутивом модуля Dongle, скачиваем его с этого сайта:

wget http://softnastroy.com/downloads/asterisk/chan_dongle-1.1.r14.tgz
tar xvfz chan_dongle-1.1.r14.tgz
cd chan_dongle-1.1.r14

Запускаем конфигурирование, сборку и установку модуля chan_dongle командами:

./configure
make
cp chan_dongle.so /usr/lib/asterisk/modules/
cp etc/dongle.conf /etc/asterisk/


Устанавливаем самую последнюю разрабатываемую версию Dongle из svn:

aptitude install autoconf
cd /usr/src/asterisk-src/
svn checkout http://asterisk-chan-dongle.googlecode.com/svn/trunk/
cd trunk/
aclocal
autoconf
automake -a
./configure
make
cp chan_dongle.so /usr/lib/asterisk/modules/
cp etc/dongle.conf /etc/asterisk/
chown -R asterisk:asterisk /usr/lib/asterisk/modules/chan_dongle.so
/etc/init.d/asterisk restart


Задание прав и пользователя устройства (Huawei E1550)

Предположим, по умолчанию так:

# ls -al /dev | grep ttyS


crw-rw----   1 root     dialout    4,  64 Сен 23 15:14 ttyUSB0
crw-rw----   1 root     dialout    4,  65 Сен 23 15:14 ttyUSB1
crw-rw----   1 root     dialout    4,  66 Сен 23 15:14 ttyUSB2

А Asterisk запущен из под одноименного пользователя

в консоли увидим:

chan_dongle.c: unable to open /dev/ttyUSB1: Permission denied
создадим правило udev

nano /etc/udev/rules.d/e1550.rules

Вставим в созданный файл.
KERNEL=="ttyUSB[012]", OWNER="asterisk", GROUP="asterisk", MODE="0660"


# /sbin/start_udev  
 # ls =al /dev | grep ttyUSB


crw-rw--   1 asterisk asterisk   4,  64 Сен 23 15:25 ttyUSB0
crw-rw--   1 asterisk asterisk   4,  65 Сен 23 15:25 ttyUSB1
crw-rw--   1 asterisk asterisk   4,  66 Сен 23 15:25 ttyUSB2


Отредактируем файл конфигурации модуля модема:

root@computer:$ nano /etc/asterisk/datacard.conf
Удаляем всё после последней черты в конфиг файле и вставляем:

[ВАШ НОМЕР СИМ КАРТЫ]
context=from-gsm         ; context для входящих звонков
audio=/dev/ttyUSB1        ; tty порт для аудио подключения
data=/dev/ttyUSB2         ; tty порт для управляющих AT комманд модема
group=1              ; Группа вызова
rxgain=10             ; Изменение громкости динамика
txgain=-5             ; Изменение громкости микрофона
resetdatacard=yes         ; Перезагрузка модема при перезапуске модуля
autodeletesms=yes         ; Удаление смс с симкарты при перезапуске
usecallingpres=yes        ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation

Создадим конфигурационный файл для входящих подключений:

Для входящих вызовов, sms и ussd запросов настроим extensions.conf:



[datacard-incoming]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()

exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DATACARD}: ${USSD}' >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()

exten => s,1,Dial(SIP/100,,)
exten => s,n,Hangup()

Подробности

Как вернуть родной web интерфейс на elastix?

  • VOIP
После обновления freepbx на elastix 2.5, первый заменил собой web интерфейс elastix.

после обновления /var/www/html/index.php содержал

<?phpif(file_exists(dirname(__FILE__). '/index_custom.php')) { include_once(dirname(__FILE__). '/index_custom.php'); } else{ header('Location: /admin'); }



заменить файл /var/www/html/index.php

Ниже как должно быть!
Читать дальше

Как вернуть родной web интерфейс на elastix?

  • VOIP
После обновления freepbx на elastix 2.5, первый заменил собой web интерфейс elastix.

после обновления /var/www/html/index.php содержал
<?phpif(file_exists(dirname(__FILE__). '/index_custom.php')) { include_once(dirname(__FILE__). '/index_custom.php'); } else{ header('Location: /admin'); }



заменить файл /var/www/html/index.php

Ниже как должно быть!

Читать дальше

Тестирования VoIP подключения

  • VOIP
Эта небольшая (около 46кб) и бесплатная программа выдает полную информацию о Вашем Интернет-подключении, сетевых интерфейсах, типе NAT'a, открытости портов, качестве канала, ну и самое главное — это рекомендации по настройке VoIP-устройств в зависимости от результатов диагностики сети.


В новой версии 1.1.57 сделаны следующие изменения:
Читать дальше

Mikrotik QoS для SIP телефонии

  • VOIP
Раздача интернет- канала на несколько SIP- телефонов в «серой» сети за NAT.

Вообще-то речь пойдет не про QoS… Данный конфиг был найден где-то на просторах англоязычного Интернета и предлагает доволно спорный, но возможно, рабочий вариант приоретизации трафика по размеру пакета. В первоисточнике утверждается, что конфигарация слита с «боевого» роутера, и более того, используется провайдером при подключении абонентов...
# Включаем connection tracking:
/ip firewall connection tracking
set enabled=no generic-timeout=10m icmp-timeout=10s tcp-close-timeout=10s tcp-close-wait-timeout=10s tcp-established-timeout=1d tcp-fin-wait-timeout=10s tcp-last-ack-timeout=10s tcp-syn-received-timeout=5s tcp-syn-sent-timeout=5s tcp-syncookie=no tcp-time-wait-timeout=10s udp-stream-timeout=3m udp-timeout=10s
# В правилах файрвола блокируем весь трафик, относящийся к SMB:
/ip firewall filter
add action=drop chain=forward comment=»» disabled=no dst-port=445 protocol=tcp
add action=drop chain=forward comment=»» disabled=no dst-port=135-139 protocol=tcp
# Маркируем трафик для последующей передачи планировщику пакетов:
/ip firewall mangle
add action=mark-packet chain=prerouting comment=OSPF disabled=no new-packet-mark=ospf passthrough=no protocol=ospf
add action=mark-packet chain=prerouting comment=ICMP disabled=no new-packet-mark=icmp passthrough=no protocol=icmp
add action=mark-packet chain=prerouting comment= «Small Packets» disabled=no new-packet-mark=small packet-size=0-256 passthrough=no
add action=mark-packet chain=prerouting comment= «Large Packets» disabled=no new-packet-mark=large packet-size=257-1550 passthrough=no
# Здесь собственно, сам NAT для раздачи интернета:
/ip firewall nat
add action=src-nat chain=srcnat comment= «SRCNAT ethernet clients on IC->WS» disabled=no out-interface=ether1 src-address=__NATed_Addresses__/24 to-addresses=___INET_ADDRESS___
# Далее идут Service Ports (по терминологии Mikrotik) — то есть ALG:
/ip firewall service-port
set ftp disabled=no ports=21
set tftp disabled=no ports=69
set irc disabled=no ports=6667
set h323 disabled=no
# Следущее правило (SIP ALG, nat sip helper) далеко не везде стоит включать, так как современные SIP — железки и программы прекрасно умеют работать за NAT, и включение SIP ALG может их «запутать».
set sip disabled=no ports=5060,5061
set pptp disabled=no
Читать дальше

Маршрутизация по наименьшей стоимости в Asterisk

  • VOIP
Тема актуальная. Для меня как для корпоративного телефониста лет пять-десять назад всегда была задача настроить функцию ARS на Panasonic TDA100/200/600 или LCR на LG LDK100/300. В общем, сделать так чтобы подешевле звонить было. Но времена меняются, и сейчас у многих компаний используется Asterisk, а я уже не настраиваю УПАТС Panasonic, LG и прочие.

В Астериске, всем известно, вся маршрутизация делается в диалплане. Но если у оператора много направлений и цена на каждое из них различна, то в диалплане получаются портянки на несколько страниц. Решения разные: кто-то разбивает по разным файлам диалплана, использует макросы, кто-то подключает к работе БД, кто-то выносит на отдельный сервис.

Я хочу поделиться своим решением: вынести поиск оператора с наименьшей стоимостью заданного направления в стороннее приложение на node.js, с которым Астериск взаимодействует посредством AGI.



 

Задача

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

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

Схема



LCR Finder

Подробная установка в описании к проекту на гитхабе. Но мы воспользуемся заготовкой приложения lcr-finder-app (клонируем, устанавливаем зависимости и запускаем приложение).

Установленное приложение открывает два порта для соединений, одно для Астериска — запросов по AGI, другое для веб-интерфейса.

Затем настроить Астериск в файле extensions.conf достаточно выполнить запрос в AGI и сделать вызов по результату.
 
<code class="bash" style="margin: 0px; padding: 1px 4px; border: 1px solid rgb(225, 225, 232); font-size: 12px; vertical-align: baseline; outline: 0px; display: block; white-space: pre-wrap; font-family: Menlo, Monaco, 'Courier New', monospace; color: rgb(34, 34, 34); border-radius: 3px; background: rgb(247, 247, 249);">exten=>_X.,1,AGI(agi://localhost:3000)
exten=>_X.,n,Dial(SIP/<span class="variable" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(150, 142, 91);">${LCR_RESULT}</span>/<span class="variable" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; color: rgb(150, 142, 91);">${EXTEN}</span>)
</code>


Также после запроса в AGI к LCR Finder'у устанавливаются переменные LCR_STATUS, LCR_RESULT, LCR_SEQUENCE. LCR_STATUS — FAILED, SUCCESS в зависимости от результата поиска, LCR_RESULT — имя оператора с наименьшей стоимостью, LCR_SEQUENCE — список всех операторов через запятую, отсортированных в порядке возрастания стоимости. LCR_SEQUENCE позволяет реализовать failover, если оператор с наименьшей стоимостью не пропускает вызов, то можно взять следующего.

В веб-интерфейсе, который на angular.js быстро сверстал мой коллега Анатолий, все достаточно лаконично: добавляем оператора, добавляем к нему направления и стоимость. Во вкладке поиска можно проверить стоимость направление у операторов.

Вопрос к астерискерам: нужно ли развивать эту систему? Стали бы вы пользоваться ей в своих инсталляциях с Астериском. Сейчас здесь нет загрузки Excel файлов с направлениями (я сначала командой в mongodb загружаю направления, т.к. у меня есть небольшой скрипт для этого, а потом в веб-интерфейсе я или заказчик меняем цены по необходимости). Есть еще задумка с весом оператора, т.к. иногда цена не единственный параметр влияющий на выбор оператора.

Есть ли подобные системы? Конечно, да. Например, знаю, что некоторые используют для A2Billing для LCR, еще есть проект LCDial.sh (не знаю, кто-нибудь им пользуется), кто-то использует такие скрипты.

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

P.S. Небольшое видео по установке lcr-finder'а

 
Взято с хабры .

 
Читать дальше

Grandstream выпустила бесплатный softphone для Android

  • VOIP
Grandstream Networks, ведущий поставщик VoIP-оборудования и видеонаблюдения, 5 февраля объявил о запуске Grandstream Wave - бесплатного softphone для устройств под управлением Android. Grandstream Wave позволяет сотрудникам малых и средних компаний и домашним пользователям через 3G и Wi-Fi сети принимать SIP-звонки с помощью любого мобильного устройства под управлением Android 4.0 или выше. Это бесплатное приложение может быть загружено в магазине приложений Google Play. Grandstream Wave поддерживает до 6 SIP аккаунтов, имеет 6-ти стороннюю аудио конференц-связь и целый ряд передовых функций телефонии.
Grandstream Wave совместим с ведущими SIP-платформами, в том числе, Grandstream, отмеченной наградами серии IP PBX UCM6xxx. Softphone поддерживает большинство функций современных IP-телефонов, среди которых передача вызова, переадресация вызова, 24 клавиши BLF / Speed Dial, LDAP интеграция телефонной книги и многое другое. Кроме того, серия UCM6xxx может генерировать 2D штрих-код, который можно сканировать с помощью любого Android устройства, а используемое Grandstream Wave приложение автоматически все настроит.
 
 
 
 
 
Читать дальше