Из-за этой глобализации столкнулся с такой проблемой — с часовыми звонками в другой город со стационарного телефона. И если вы думаете что это не проблема то вот объяснение: во-первых занята единственная линия стационарного телефона, а во-вторых цена. Со стационарного телефона можно звонить по тарифам МГТС или Ростелеком не суть важно с какого тарифы обещают быть самыми выгодными: «Мы рады предложить вам линейку тарифных планов и экономить до 70% стоимости на звонки по межгороду и за рубеж при выборе «Ростелеком» постоянным оператором связи.» — вдохновляет! Предполагаю что буду звонить из Москвы в ближайший город в Московской области смотрю тарифы междугородний звонок на расстояние до 100 км по России 2.38 рубля или от 101 до 600 км 3,78 рубля — сразу возникает вопрос а причем здесь расстояние. Беру первого попавшего sip-оператора смотрю звонки в Московскую область (и ему не важно где вы сидите) SipNet Россия (cтационарные) Московская область 0.845 — 0.845 рубля. Что-то как-то не чувствуется 70% выгода от пользования услугами Ростелекома, наоборот другой запашиной разит от Ростелекома. Попробуем звонить в Новосибирск по прямой 2.800 км или надо считать длину проводов?! — Ростелеком от 1201 до 3000 км 5 руб минута, Sipnet 0.845 рубля!!! Вот тут уже понятно — связь в нашу цифровую эпоху никак не зависит от расстояния, а у Ростелекома явно не технический проблемы а морально этического характера, совсем они видимо пенсионеров разуть решили, потому что если вы не боитесь новых технологий (у пенсионеров как раз с этим проблемы) вы покупаете аналоговый телефон с SIP клиентом, например Gigaset A510 IP (Siemens A510 IP) втыкаете его в аналоговую линию (чисто для приема аналоговых звонков), в интернет и настраиваете SIP провайдера, чтобы экономить ровно те 70% которые обещает сэкономить Ростелеком, но почему то ровно эти 70% и накручивает. Я уж не говорю о Skype вообще ничего не надо покупать просто интернет и безлимитные тарифы которых ни у кого нет.
Но я пойду другим путем, еще более экономичным в плане оборудования и совершенно невообразимо сложным в плане программной составляющей. Для это купим у Китайцев voip шлюз Sipura Linksys Cisco SPA3000 1 FXO 1 FXS. Эта модель уже снята с производства сейчас Linksys продает модель SPA3102 теже функции больше лампочек, разъемы на одной стороне и функции маршрутизатора стоит в России 3000 ROR в Китае 1500 RUR, ну я купил предыдущею модель за 899 RUR — экономия должна быть экономной. Когда-то этот шлюз назывался Sipura SPA-3000 и выглядел совершенно непрезентабельно, потом после того как Cisco усыновил Linksys, родства между ними нет но даже маленькими буквами слово Cisco увеличивает продажи, он стал назваться Linksys SPA3000, в какие отношения вступил Linksys с Sipura не знаю!!!
Китайцы конечно и тут отличились, что-то я не помню чтобы у Lynksis такие щели были и так стенки боковые прогибались, а еще наклейки на разъемах приклеены клеем типа момент — не сохнет, не держит, и с краев подтекает! Но шлюз работает, я так думаю, остались платы чипы и китайцы на коленях их допаяли и всунули в коробочки и переклеили чем было. Без риска нет экономии!
Коробка ничем не выдает содержимое. На самом шлюзе наклейка очень похожая на настоящею, только вот настоящая глянцевая, а эта матова. Так же на корпусе не хватает надписи VoIP… и так далее. Но в целом подделка внешнего вида удачна. Прошивка сообщает следующее:
ВНИМАНИЕ: Вот на этом можно было бы и остановится и не устанавливать Asterisk, потому что SPA3000 превращает любой аналоговый тоновый (важно у меня в импульсном не звонил через Asterisk) телефон в sip телефон и его уже можно подключать к sip оператору, если подключение к SIP оператору нет или разорвано SPA3000 исходящие звонки направляет в аналоговую линию.
Но я его буду подключать к Asterisk — это ничего не даст кроме создания внутренний телефонной сети с дополнительными возможностями.
Настройка сервера
Устанавливаем Mysql: Для совместимости с генеральным планом используем версию 5.0 но её нет уже в порта FreeBSD 9.2 есть только 5.1 и вот тут всплывает неприятная особенность всех разработчиков, настоящее свинство — молча убрать функцию которая была в предыдущих версиях. Для совместимости с NETAMS нужна функция Local, вот тут описано, почти без мата, как её вернуть!
cd /usr/ports/databases/mysql51-server/
открываем Makefile и добовляем
.if defined(ENABLE_LOCAL_INFILE) && ${ENABLE_LOCAL_INFILE} != "" CONFIGURE_ARGS+=--enable-local-infile=${ENABLE_LOCAL_INFILE} .endif
перед
.if defined(WITH_CHARSET) && ${WITH_CHARSET} != "" CONFIGURE_ARGS+=--with-charset=${WITH_CHARSET} .endif
потом идём в
vi /etc/make.conf
и добовляем
# for mysql-server .if ${.CURDIR} == ${PORTSDIR}/databases/mysql51-server ENABLE_LOCAL_INFILE=yes .endif # for mysql-client .if ${.CURDIR} == ${PORTSDIR}/databases/mysql51-client ENABLE_LOCAL_INFILE=yes .endif
Продолжаем установку
make make install cp /usr/local/share/mysql/my-large.cnf /var/db/mysql/my.cnf echo 'mysql_enable="yes"' >> /etc/rc.conf
запускаем
/usr/local/etc/rc.d/mysql-server start
устанавливаем пароль
mysqladmin -u root -h localhost password 'pwassword'
Устанавливаем Apache
cd /usr/ports/www/apache22 make make install
Выбираем
Mysql PostgreSQL
Добавляем
echo 'apache22_enable="yes"' >> /etc/rc.conf
прописываем в vi /usr/local/etc/apache22/httpd.conf
ServerName localhost
Добавляем после строки
Directory "/usr/local/www/apache22/data"
текст
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
Находим «DirectoryIndex» добавляем index.php index.html первым и на всякий случай index.htm
DirectoryIndex index.php index.html index.htm
и в host добавляем имя
vi /etc/hosts
строчку
192.168.1.200 Name
Имя вашего сервера, у нас ITcooky_VPS
Заработало
Теперь устанавливаем PHP5.3
cd /usr/ports/lang/php53/ make install
выбрать
[X] Apache
Далее устанавливаем
cd /usr/ports/lang/php53-extensions make config
должны быть выбраны пункты
[X] MySQL [X] GD
устанавлиаем
make install
Устанавливаем Asterisk
cd /usr/ports/net/asterisk make
выбиарем
[x] Mysql
продолжаем
make install
добавляем
echo 'asterisk_enable="YES"' >> /etc/rc.conf
и запустим астериск
/usr/local/etc/rc.d/asterisk start
Устанавливаем вебморду Asterisk GUI
cd /tmp
fetch http://downloads.asterisk.org/pub/telephony/asterisk-gui/asterisk-gui-2.1.0-rc1.tar.gz
tar xzf asterisk-gui-2.1.0-rc1.tar.gz
cd asterisk-gui-2.1.0-rc1
gmake
gmake install
gmake checkconfig
Редактируем /etc/asterisk/manager.conf должен выглядеть примерно так:
[general]
enabled = yes
webenabled = yes
port = 5038
bindaddr = 127.0.0.1
[post_mappings]
backups = /usr/local/share/asterisk/gui_backups
[admin]
secret = 123456
read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,agent,user,config,command,reporting,originate
А /etc/asterisk/http.conf — так:
[general]
enabled = yes
enablestatic = yes
bindaddr = 0.0.0.0
redirect = / /static/config/index.html
Даем права на изменение конфига
chown asterisk:asterisk /usr/local/etc/asterisk/*.conf
chmod 644 /usr/local/etc/asterisk/*.conf
Заходим по адресу севрера http://НАШ_IP:8088 и тут начинается грандиозная залупа, по английский так и называется loop вебинтерфейс чего-то хочет и обновляется бесконечно с нечитабельной скоростью!!!
Правим файл чтобы /usr/local/share/asterisk/static/config/index.html понять чего он хочет
находим сточку где DEBUG_MODE установлен как false меняем его на true
Видим следующее:
Error reading dahdi_guiread.conf: Response: Error Message: Config file not found
У нас нет плат DAHDI, но вебморда ищет в папках которых нет, файлы с настроками оных которых тоже нет. Делаем символические ссылки на папки, и запускам скрипт обнаружения DAHDI
mkdir /var/lib
ln -s /usr/local/share/asterisk /var/lib/asterisk
ln -s /usr/local/etc/asterisk /etc/asterisk
/usr/local/share/asterisk/scripts/detectdahdi.sh
Вебморда заработала, первым делом создаем Dial Plan не важно какой, по умочанию чтобы был во вкладке Dial Plans жмем New Dial Plan (Outgoing Calling Rules сделаем после)
добавляем пользователей во вкладке User жмем Creat new user, тут интересно то что даёт сделать только четырех значеные номера начинающиеся с 6-ки, бесовщина какая-то, вылечим это потом.
После всех изменений в правом верхнем углу появляется кнопка Applay Changes требуется жать оную.
Теперь настраиваем клиентов, например программный SIP клиент YATE доводим раздел Settings Accaunts до вида
Теперь настраиваем SPA3000 им можно управлять с аналагового телефона подключенного к разъему rj12 Phone.
Подключаем любой аналоговый телефон с тоновым набором. Например Gigaset A120, секрет его перевода в тоновый режим закопан глубоко в инструкции надо набрать:
[*][#][0][5][#][1][8]
далее [0]— тоновый, [1]— импульсный
Настраиваем SPA3000, для сбороса к заводским настройкам нужно снять трубку и нажать
****
слышим неприятный мужской голос
73738#
сбросить к заводским настройкам
1#
да
По умолчанию устанавливается DCHP сервер для получения IP если его нет то IP должен быть 192.168.0.100 в любом случае сейчас нам скажут какой IP
****
слышим неприятный мужской голос
110#
Заходим по сказанному IP жмем с права вверху Admin login и advanced
System > Internet Connection Type настраиваем по своим надобностям
Далее заходим во вкладку Line
Line 1 > Proxy and Registration
пишем тут Proxy: > 192.168.1.200 (IP вашего сервера с Asterisk)
Line 1 > Subscriber Information
пишем тут Password:> ***
пишем тут User ID:> 6001
Line 1 > Dial Plan
приводим к виду
(6xxxS0|7xxxxxxxxxxS0|<810:>x.|849[59]xxxxxxx<:@gw0>)
6xxxS0
чтобы сразу звонилось сответсвенно все номера начинающиеся с 6-ки будут обрабатыватья как 4-иох значные 5-ти уже не даст ввести, S0
значит звонить немедля, а S4
значило бы помедлить 4 секунды и звонить немедля.
7xxxxxxxxxxS0
звонки по России SipNet требует чтобы они совершались по международным правилам 7 это код России.
<810:>x.
это очеловеченная форма звонков по международным номерам, человек вводит цифры 810 как привык мы их отбрасываем и остальные бесконечное количество цифр кидаем на Asterisk, пример 81074951234567 это звонок в Россию, 8106000 это звонок внутреннему.
849[59]xxxxxxx<:@gw0>
— это пример того как все звонки в Московских кодах 495/499 кидать на аналоговую линию подключенную к SPA3000, пример бесполезный потому что у Sipnet звонки по Москве бесплатные, в отличии от пр. операторов.
Также потребуется настроит громкость. Как правило вас будет плохо слышно
Идем в Regional > Miscellaneous тут почему то FXS Port Input Gain: и FXS Port Output Gain: уставлены в значение -3 — ставим 4 — слышимость улучшается. Далее если ставить больше возникает само эхо!
Жмем внизу Submit All Changes.
В вебморде Asterisk видим в System Status подключенные учетки
Теперь идем регистрироваться на Sipnet.ru тут надо будет ввести номер мобильного телефона или стационарного — и получить бонус от ФСБ — 1 у.е. на счет. Проверка номера происходить по SMS или Звонком — приготовьтесь записать 7-ми значный номер, который сообщит неприятный женский голос.
Сравнил счет от МГТС с тарифами от Sipnet!
Минус Sipnet в том что все цены в уях — если уя сильно резко упадет раз в 5 — то сразу станут выгодны цены от МГТС — они не смогут моментально повысить свои цены, а Sipnet может, у них тарифы, в переводе на рубли, каждый день растут на пол капейки за падением рубля. Но плюс в том что Sipnet ведет счет в уях, раз заплативши получаем уе — не факт что они уже заплаченные уе не пересчитают за новым курсом, но обещали не пересчитывать.
Второй минус Sipnet — отсутствие вменяемой технической поддержки, оно и понятно перекупщики не соображают в технических деталях — максимом что вы получите это автоматическую цитата из базы знаний по знакомому слову из вашего вопроса (если такого слова не найдено — бяда). Из-за этого возникают конкретные проблемы в настройки, например если у нас Firewall — Sipnet незнает какие он использует UDP диапазоны для SIP телефонии — если вы вдруг не слышите собеседника значит Sipnet соединил вас с не стандартным портом вне диапазона 10000-31000 приходится открывать весь UDP а это не хорошо.
От Sipnet нам нужен пароль тот что вы вводите при регистрации, и userID видите его в личном кабинет.
В вебморде Asterisk заходим в Trunks жмем New SIP/IAX trunk
После Save сразу же жмем Edit правим кодыки и добавляем данные itcooky это ваш UserID
Теперь добавляем Outgoing Calling Rules
У меня звонки по России выглядят так
А звонки которые начинается не с 7 и насчитывают от 7 до бесконечности цифр я считаю междунродными.
Оба правила кидают звонки на SipNet, и служат просто для разделения чтобы можно было заблокировать то или другое.
Итого звоним выгодно через SIP провайдера с обычного телефона, с ПК с SIP клиентом, с SIP телефонов! Вот такая схема подключения получилась:
Еще пару разъяснений:
— Для выгодных звонков с белого телефона должен быть включен интернет и сервер Asterisk.
— На звонки поступающие на аналоговую линию можно отвечать и белым и черным телефоном.
— Разговор по белому телефону обрывается на 59 минуте автоматический, перезванивайте(ограничение SipNet).
— Если сервер Asterisk не работает, белый телефон звонит как обычный.
— При звонках наш номер телефона определяется — это тот что зарегистрирован в SipNet.
UPD: Статистика звонков
Как это и не удивительно, но в предыдущем вебинтерфейсе нет статистики звонков — будем ставить отдельно.
Скачиваем, распаковыываем и копируем в /usr/local/www/asterisk-stat/
fetch https://asterisk-cdr-viewer.googlecode.com/files/asterisk-cdr-viewer-0.9.4.tgz
tar -xvf asterisk-cdr-viewer-0.9.4.tgz
как копировать не напишу
Вставляем в /usr/local/etc/apache22/httpd.conf
Alias /asterisk-stat "/usr/local/www/asterisk-stat" <Directory "/usr/local/www/asterisk-stat/"> Options none AuthName "Asterisk access" AuthType Basic AuthUserFile /usr/local/etc/apache22/authasteriskstat Require valid-user AllowOverride Limit Order Deny,Allow Allow from all AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.php </Directory>
Создаем пользователя с паролем
htpasswd -c /usr/local/etc/apache22/authasteriskstat Stat
Перезапускаем Apache
/usr/local/etc/rc.d/apache22 restart
Создаем таблицу для Asterisk
mysql -p
далее команды после каждой Enter
CREATE DATABASE asterisk;
GRANT INSERT ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'password100';
GRANT SELECT ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'password100';
GRANT DELETE ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'password100';
GRANT UPDATE ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'password100';
Эти права не спроста с правом только INSERT Астериск не за хочет запускаться
в файле /usr/local/etc/asterisk/cdr_mysql.tbl(не обязательно что он есть кстати, у меня по ходу настройки пропал) берем и вставляем команду
USE asterisk; CREATE TABLE cdr ( calldate datetime NOT NULL default '0000-00-00 00:00:00', clid varchar(80) NOT NULL default '', src varchar(80) NOT NULL default '', dst varchar(80) NOT NULL default '', dcontext varchar(80) NOT NULL default '', channel varchar(80) NOT NULL default '', dstchannel varchar(80) NOT NULL default '', lastapp varchar(80) NOT NULL default '', lastdata varchar(80) NOT NULL default '', duration int(11) NOT NULL default '0', billsec int(11) NOT NULL default '0', disposition varchar(45) NOT NULL default '', amaflags int(11) NOT NULL default '0', accountcode varchar(20) NOT NULL default '', uniqueid varchar(32) NOT NULL default '', userfield varchar(255) NOT NULL default '' ); ALTER TABLE `cdr` ADD INDEX ( `calldate` ); ALTER TABLE `cdr` ADD INDEX ( `dst` ); ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
Теперь создаем пользователя для чтения этой базы для asterisk-stat
grant LOCK TABLES on asterisk.* to 'asterisk_user'@'localhost' identified by '333password';
grant SELECT on asterisk.* to 'asterisk_user'@'localhost' identified by '333password';
grant INSERT on asterisk.* to 'asterisk_user'@'localhost' identified by '333password';
flush privileges;
Настраиваем
vi /usr/local/etc/asterisk/cdr_mysql.conf
Доводим до вида
[global] hostname=localhost dbname=asterisk table=cdr password=password100 user=asterisk port=3306
Перезапускаем Asterisk
/usr/local/etc/rc.d/asterisk restart
Редактируем
vi /usr/local/www/asterisk-stat/include/config.inc.php
доводим до вида
$db_host = 'localhost'; $db_port = '3306'; $db_user = 'asterisk_user'; $db_pass = '333password'; $db_name = 'asterisk'; $db_table_name = 'cdr';
И вот работает по адресу http://192.168.1.200/asterisk-stat/ с вводом пароля юзера Stat
UPD: Прошло ровно два года с написания, самое время разобрать и посмотреть что внтури китайсокго Linksys SPA3000
Доброго времени суток!
Пытаюсь настроить почти такую же связку у себя.
Встрял на том, что SPA не регистрируется в Астериске, (в Вашем примере User ID 6001) софт-фон нормально зарегистрировался. Может тут есть какие-то подводные камни?
Настроено все как написано у Вас. У нас только разные прошивки. Кстати, где брать для сего чуда прошивки?
Если есть уверенность что все настроено согласно обозначенным контурам (ip в одной сети, настройки все сделаны) тогда надо посмотреть что говорит asterisk!
на сервере
asterisk -r
в нем
sip set debug ip 192.168.1.4
у меня IP SPA 3000 192.168.1.4
и смотрим будет показываться все его раздумья
выкл вкл SPA 3000 и смотрим что сразу же выдает asterisk
вот это удачная запись
REGISTER sip:192.168.1.200 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.4:5060;branch=z9hG4bK-cc00cd36
From: ;tag=6174064671c71cao0
To:
Call-ID: d7db94e1-130f3b52@192.168.1.4
CSeq: 57238 REGISTER
Max-Forwards: 70
Contact: ;expires=3600
User-Agent: Linksys/SPA3000-3.1.10(GWd)
Content-Length: 0
Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER
Supported: x-sipura
— (12 headers 0 lines) —
Sending to 192.168.1.4:5060 (NAT)
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.1.4:5060;branch=z9hG4bK-cc00cd36;received=192.168.1.4
From: ;tag=6174064671c71cao0
To: ;tag=as34c40931
Call-ID: d7db94e1-130f3b52@192.168.1.4
CSeq: 57238 REGISTER
Server: Asterisk PBX 1.8.25.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm=»asterisk», nonce=»23eeda1e»
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.4:5060;branch=z9hG4bK-f40dd617;received=192.168.1.4
From: ;tag=6e23e3ca50e09216o0
To: ;tag=as5f0c506d
Call-ID: 9f949052-8b708e96@192.168.1.4
CSeq: 1316 REGISTER
Server: Asterisk PBX 1.8.25.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Expires: 3600
Contact: ;expires=3600
Date: Sat, 19 Jul 2014 05:37:06 GMT
Content-Length: 0
вот тут второй абзац
неудачно SIP/2.0 401 Unauthorized
в третьем сразу тоже самое
удачно SIP/2.0 200 OK
Если какие то ошибки то тут они будут показаны и с ними надо будет уже что-то делать(неправильный пароль, еще что-то непредсказуемое) хуже всего если тут тишина значит где то в настройках IP неконтакт
На счет прошивки: у меня 3.1.10(GWd) в интернете выше 3.1.7 не вижу — я бы не стал прошиваться если все устраивает — все таки это подделка, из чего собрана, на сколько унифицирована не понятно, вдруг просто не подойдет!
что касается сетевых настроек — все четко.
вроде spa и asterisk «друг-друга увидели»…
на вашей схеме белый телефон это обычный «аналоговый-городской» телефон?
если — да, то как настроить звонки с него через SIP?
Белый обычный аналоговый, должен быть подключен к rj12 где написано Phone(а не как визуально на схеме), разьем rj12 с надписью Line для звонков через аналоговую линию! Но в SPA3000 настройки SIP звонков через rj12 Phone во вкладке Line 1
Когда говорю по sipnet (и через софтфон, и через dect телефон подключенный в Line 1), слышу повтор своего голоса. как это можно побороть, вы сталкивались?
Это вот тут «Regional > Miscellaneous тут почему то FXS Port
Input Gain: и FXS Port Output Gain: уставлены в значение -3 — ставим 4 —
слышимость улучшается. Далее если ставить больше возникает само эхо!»
а у Вас переадресация случайно не настроена?
не могу добиться чтобы шел вызов на внешний (сотовый) номер указанный для экстеншена в fallow me. Диалпланы работают, и через сипнет, и через PSTN.
Такого не делал
Тут описан вариант подключения SPA-3000 к нескольким серверам одновременно.
есть spa 3000, в порт FXO подан зуммер от миниАТС, звоню на этот порт с D-linka, дозваниваюсь раза с 3-4 почему-то. Но когда получаю зуммер, набора нет. Подскажите в чём тут дело?!
Не могу даже предположить, у меня из глюков только шипение полсе пару месяцев беспрерывной работы