По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Введение
Данный обзор посвящен софтфону Ekiga и его настройке по протоколу SIP.
Установка
Сперва необходимо скачать дистрибутив софтфона по следующей ссылке: http://ftp.gnome.org/pub/gnome/binaries/win32/ekiga/4.0/ekiga-setup-4.0.1+.exe:
Как видно на скриншоте ниже, процесс установки не отличается ничем особенным, при желании можно просто везде кликнуть далее.
После установки софтфона начнется процесс установки GTK2-Runtime.Все оставляем по умолчанию и кликаем везде “Next”
После запустится мастер настройки софтфона, состоящий из 9 шагов:
Ставим галочку внизу, ничего не заполняем и нажимаем Forward:
Повторяем предыдущий шаг:
Оставляем настройку по умолчанию:
Производим настройку аудиоустройств – также можно оставить по умолчанию:
Производим настройку видеоустройств – также можно оставить по умолчанию:
Выкладка введенных вами значений, кликаем Apply:
Далее включается сам телефон, идем по пути Правка → Учетные записи → Добавить учетную запись SIP
Прописываем все необходимые поля:
Где:
Имя - требуемое имя
Регистратор - адрес вашей АТС
Пользователь - юзернейм
Пользователь аутентификации - номер экстеншена
Пароль - пароль
Задержка - название говорит само за себя, можно оставить как есть
После нажимаем на Ок и на этом настройка закончена, если все в порядке с АТС – можно звонить!
Итак, чтобы корректно настроить QoS (Quality of Service), нам необходимо предварительно произвести небольшие расчеты. Предположим, в нашем офисе находятся 30 телефонных аппаратов, работающих по протоколу SIP под управление IP – АТС Asterisk. Мы предполагаем, что для одного телефонного разговора нужно 100 кбит полосы (с оверхедами). Тем самым, для 30 аппаратов нам потребуется полоса в 3 мбит (up/down). Все наша VoIP – инфраструктура живет в отдельном VLAN`e с подсетью 192.168.3.0/24. Приступаем к настройке.
Всегда рекомендует выносить VoIP инфраструктуру (PBX, телефоны, шлюзы) в отдельную подсеть. Это позволит проще сегментировать трафик обычной сети передачи данных и чувствительный к задержкам VoIP.
Настройка на Mikrotik | Маркировка пакетов
Настройки будем производить через утилиту управления Winbox. Открываем вкладку IP → Firewall и выбираем вкладку Mangle. Нажимаем на синий значок «+»:
Отлично. Далее мы создаем маркировку для соединения, приходящих из подсети 192.168.3.0/24 и отправленных внутрь этой подсети. Начнем с первой задачи. Указываем:
Chain - выбираем здесь prerouting;
Src. Address - указываем нашу подсеть;
Если ваши телефоны и IP – АТС Asterisk «живут» в той же подсети, что и рабочие станции (ПК), то укажите в качестве источника и назначения в маркировках IP – адрес Asterisk
Прыгаем на вкладку Action и указываем следующие параметры:
Action - мы делаем маркировку, поэтому выбираем mark connection;
New Connection Mark - маркируем как VoIP;
Passthrough - отмечаем галочкой;
Сохраняем изменения и нажимаем «ОК». Теперь нам необходимо сделать тоже самое, только на первом этапе, подсеть 192.168.3.0/24 мы укажем не в параметре Src. Address, а в Dst. Address. Все прочие опции делаем идентично проделанным шагам. В итоге у вас должно получиться вот так:
И добавляем финальный штрих к нашей конструкции – промаркируем пакеты, которые попадают под ранее созданные правила маркировки коннекций (соединений). Нажимаем на «+» и во вкладке General:
Chain - указываем prerouting;
Connection Mark - выбираем VoIP;
А во вкладке Action:
Action - делаем mark packet;
New Packet Mark - выбираем VoIP;
Passthrough - снимаем галочку с чекбокса;
Нажимаем «ОК» и сохраняем. Итого у нас получается:
Приоритеты и выделение полосы пропускания
На текущем этапе мы достаточно точно можем отделить VoIP – трафик от любого другого. Поэтому, создадим очередь обслуживания. Для этого, переходим в раздел Queues и нажимаем «+»:
Работаем со следующими параметрами:
Name - даем имя очереди - VoIP queue;
Target - укажите 0.0.0.0/0. Мы парсим данные на Mikrotik по маркированным пакета;
Max Limit - снимаем галочку с чекбокса;
Target Upload - 3M, как и говорили в начале статье;
Target Download - 3M, как и говорили в начале статье :);
Двигаем во вкладку Advanced:
Marks - выбираем из выпадающего списка VoIP;
Priority - выбираем для UP/DOWN 1 приоритет;
Теперь необходимо сделать очередь для остального трафика:
Name - даем имя очереди - Other traffic;
Target - указываем сеть, в которой живут наши рабочие станции (ПК) - в нашем случае 192.168.2.0/24;
Max Limit
Target Upload - 30M в нашем случае;
Target Download - 30M;
Прыгаем на вкладку Advanced:
Marks - выбираем no-mark, так как нас интересуют пакеты без маркировки;
Priority - выбираем 8 приоритет;
Тестирование
Проверяем. В очереди, переходим во вкладку Traffic в настройках VoIP очереди, делаем звонок и видим его график:
Желание использовать данные с внешних сервисов это вполне обычная практика. Так как многие из этих сервисов доступны по HTTP(S) (REST API, например), то в этой статье мы хотим показать простой способ обращения к этим сервисам по cURL и обработку данных в случае, если сервер вернет JSON. Все взаимодействия будут выполняться из диалплана.
Простой cURL запрос
В диалплане Asterisk существует функция CURL, которая позволяет получить содержимое WEB или FTP страницы. Синтаксис запроса следующий:
CURL(url,post-data)
url - URL, к которому мы будем выполнять обращение;
post-data - по умолчанию будет выполнен GET – запрос. Если в данном параметре будут указаны различные значения, то будет выполнен POST запрос с указанными в переменной данными;
Например:
exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)})
Здесь мы выполним GET запрос по указанному URL, а результат сохраним в переменной C_RESULT.
Использование HTTPS в запросах
Иногда, HTTPS запросы могут не срабатывать, так как удаленная сторона будет проверять наш SSL – сертификат. Если поставить параметр ssl_verifypeer=0, то такой проверки не будет:
same => n,Set(CURLOPT(ssl_verifypeer)=0)
Как воспользоваться этим в диалплане?
Легко. С помощью функции GotoIf мы можем определить действие, которое отработает на базе результата cURL:
exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)})
same => n,GotoIf($["${C_RESULT}" = "1"]?res1:res2)
same => n(res1),Verbose(CURL Result = 1)
same => n,Hangup
same => n(res2),Verbose(CURL Result != 1)
same => n,Hangup
Указанный код отправит GET - запрос на rest, в котором в параметре num передаст номер звонящего (можно указать соответствующую переменную диалплана Asterisk). В случае, если результатом выполнения запроса будет 1, то мы перейдем к выполнению шага res1, а противоположном случае, res2.
res_json для обработки JSON ответов
На самом деле, для API, является обычной практикой возврат ответа в виде JSON. Поэтому, нам следует преобразовать эти данные перед обработкой их. Для этого мы воспользуемся модулем res_json из JSON библиотеки, который создан для расширения базовых возможностей диалплана с точки зрения обработки JSON.
Почитайте материал об установке данного модуля по этой ссылке.
exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest.json)})
same => n,Set(result=${JSONELEMENT(C_RESULT, result/somefield)})
same => n,GotoIf($["${result}" = "1"]?res1:res2)
same => n(res1),Verbose(CURL Result = 1)
same => n,Hangup
same => n(res2),Verbose(CURL Result != 1)
same => n,Hangup
Для теста, создайте у себя на web – сервере файл rest.json со следующим содержанием:
{
"result": {
"somefield": 1
}
}