ТОП 5: SIP — Клиентов
Содержание
Автор — Андрю Мин (Andrew Min)
Gizmo5
Gizmo5 — одно из старейших SIP-приложений. Разработанный компанией Майкла Робертсона (Michael Robertson) SIPphone и ранее известный как Gizmo Project, Gizmo5 превратился из SIP-клиента в ведущий SIP-провайдер и конкурента противопригарного сервиса Skype. Он поддерживает передачу файлов, голосовую почту и конференции. За скромную плату вы также можете получить телефонный номер и кредит на исходящие звонки (аналогично Skype).
Поскольку Gizmo проприетарен, его нет в репозиториях Ubuntu, но вы можете установить его при помощи пакета libstdc++6, ссылку на его скачивание можно найти на странице: http://url.fullcirclemagazine.org/f6db14.
Ekiga
Ekiga, созданный Дамьеном Сандрасом (Damien Sandras), — это SIP/NetMeeting-клиент, установленный в Ubuntu по умолчанию. Изначально известный как GnomeMeeting, он включает в себя ряд возможностей для работы в локальной сети, таких как поддержка LDAP , Bonjour/ZeroConf. Он также поддерживает стандартные текстовые, голосовые и видео SIP-клиенты, сообщения о статусе, адресные книги и многое другое.
Ekiga установлен в Ubuntu по умолчанию. Чтобы установить его на другие операционные системы, используйте пакет «ekiga».
SIP Communicator
SIP Communicator получил (сомнительную) награду как единственное Java-приложение в этом обзоре. Несмотря на это, он отлично работает в среде Gnome и имеет не только стандартные возможности SIP-клиентов, но также поддерживает Jabber, AIM , Yahoo, MSN и, в тестовом режиме, Facebook. Он также имеет невероятные возможности настройки, в том числе кодирования, расширенные оповещения и огромное число плагинов.
Чтобы установить SIP Communicator, скачайте deb-пакет, находящийся на странице http://url.fullcirclemagazine.org/70453d.
QuteCom
Для установки QuteCom используйте сторонний репозиторий Launchpad перейдя по ссылке http://url.fullcirclemagazine.org/1885a6.
Twinkle
Если вы один из тех пользователей Kubuntu, кто ищет альтернативу QuteCom, попробуйте Twinkle (я пользуюсь именно им). Его автор Мишель де Боэр (Michel de Boer) включил в программу множество возможностей, включая интеграцию с KAddressBook, расширенную обработку звонков, настраиваемые уведомления, шифрование, передачу файлов и даже интерфейс командной строки. Также частично поддерживается оповещение о присутствии и простая адресная книга. К тому же Twinkle отличный VoIP-клиент, основанный на Qt.
Для установки Twinkle используйте пакет `twinkle` из репозитория `universe`.
Источник
Взаимодействие клиентов SIP. Часть 1
Месяц назад я начал свое знакомство с IP-телефонией, а именно с Lync и Asterisk. И заметил следующую картину: в сети очень много интересных статей по практической стороне вопроса (как и что делать) и очень мало внимания уделено теории (в конце статьи приведены ссылки). Если Вы хотите разобраться с SIP, то извольте либо читать RFC 3261, либо одну из «этих толстых книг». Это, естественно, полезно, но многим хочется в начале изучить некую выжимку, а уж потом бросаться в омут с головой. Эта статья как раз для таких людей.
Чтобы не перегружать читателя, я решил разбить статью на две части. В первой части мы рассмотрим работы протокола SIP при взаимодействии двух клиентов.
Простое взаимодействие клиентов
Взаимодействие клиентов в рамках SIP чаще всего осуществляется в виде диалога.
Диалог – это равноправное взаимодействие двух User Agent (UA) в виде последовательности SIP-сообщений между ними. При этом, существуют запросы, не образующие диалогов. Однако обо всем по-порядку.
Ниже приведен пример простого взаимодействия между двумя устройствами с поддержкой SIP:
Петр хочет начать обмен сообщениями с Иваном, для этого он посылает INVITE-сообщение с данными о типе сессии (простая, мультимедиа и т.д.). Сообщения имеют следующий формат: стартовая строка, одно или несколько полей заголовка, пустая строка, обозначающая конец полей заголовка и необязательное тело сообщения.
Стартовая строка содержит метод, Request-URI и версию SIP (актуальная – 2.0). Request-URI – это SIP-адрес ресурса, которому посылается запрос.
Поля заголовков имеют следующий формат: :
Первая строка начинается с заголовка Via. Каждое SIP-устройство, создающее или пересылающее сообщение, добавляет свой адрес в поле Via (как это происходит, я планирую показать в следующей части статьи). Обычно адрес представляет собой имя хоста, которое может быть разрешено с помощью DNS-запроса. Поле Via содержит версию SIP, знак “/”, пробел, транспортный протокол (UDP, TCP, TLS, SCTP), двоеточие, номер порта и branch – идентификатор транзакции. Ответы на этот запрос будут содержать такой же номер транзакции.
Чаще всего, значение branch начинается с “z9hG4bK”. Это значит, что запрос был сгенерирован клиентом, поддерживающим RFC 3261 и параметр уникален для каждой транзакции этого клиента.
Следующее поле, Max-Forwards, содержит относительно большое целое число. Каждый сервер SIP, который пересылает сообщение, уменьшает это число на единицу. Данное поле обеспечивает простой механизм обнаружение петель (loop).
Следом идут поля From и To, которые описывают отправителя и получателя запроса. Важно, что SIP-запросы маршрутизируются исходя из Request-URI, указанного в стартовой строке (см. выше). Это объясняется тем, что поля From и To могут быть изменены при пересылке. Если используется отображаемое имя (например, Ivan Ivanov), то SIP URI помещается внутрь пары угловых скобок. Параметр tag в поле From генерирует отправляющая сторона. В свою очередь принимающая сторона поместит свой tag в поле To.
Поле Call-ID – идентификатор вызова. Совокупность tag’ов из полей From и To и Call-ID однозначно идентифицируют данный диалог. Это необходимо, так как между клиентами может идти сразу несколько диалогов.
Следующее поле, Cseq, содержит порядковый номер запроса и название метода. В данном случае – INVTITE. Номер увеличивается с каждым новым запросом.
Поля Via, Max-Forwards, To, From, Call-ID и CSeq составляют минимальный необходимый набор полей заголовков SIP-сообщения.
Для сообщения INVITE также необходимо поле заголовка Contact, в котором содержится SIP URI, относящийся к коммуникационному устройству отправляющей стороны. Это поле используется, чтобы из всех устройств, которыми одновременно может пользоваться Петр, ответ был отправлен именно на данное устройство. Обратите внимание на значения полей From и Contact. Первый раз я не заметил разницу:
В сообщении присутствует опциональное поле Subject, то есть тема сообщения. Некоторые SIP-клиенты могут выводить значение этого поля на экран. Для маршрутизации и идентификации диалога поле не используется и может быть произвольным.
Поля Content-Type и Content-Length отвечают за описание тела сообщения. В данном случае будет использоваться Session Description Protocol (SDP). Размер сообщения вычисляется с учетом символов перевода строки:
Детальное описание работы протокола SDP заслуживает отдельной статьи, поэтому ниже приведена только краткая расшифровка:
В ответ на INVITE SIP-клиент Ивана отправляет два сообщения: 180 Ringing и 200 OK. Первое сообщает, что на стороне Ивана SIP-клиент подает звуковой сигнал звонка, второе – подтверждает установку диалога. Разберемся с каждым из них.
Так будет выглядеть сообщение 180 Ringing:
Бледным выделен текст, который не изменился по сравнению с сообщением INVITE.
Обратите внимание на поля заголовков To и From. Несмотря на то, что данное сообщение идет со стороны Ивана, значения полей остаются такими же, как были в первоначальном запросе (от Петра к Ивану). Это объясняется тем, что данные поля определяют направление запроса, а не сообщения.
Строка Via также перекочевала из исходного запроса, в конце строки добавлен параметр received этот параметр содержит IP-адрес, с которого пришел запрос. Обычно это адрес, который может быть получен путем разрешения URI, содержащегося в Via.
Как я и обещал, в поле To добавился tag, идентифицирующий диалог. Все последующие сообщения в рамках диалога будут содержать неизменные значения tag.
Наконец, в поле Contact содержится актуальный адрес Ивана.
Так выглядит сообщение 200 ОК, которое отправил SIP-клиент Ивана:
Думаю, смысл всех полей, относящихся к протоколу SIP теперь ясен.
В ответ на 200 ОК клиент Петра отправляет подтверждение:
Данное сообщение подтверждает, что клиента Петра успешно получил ответ от клиента Ивана. Оба клиента договорились о параметрах меди-сессии, которая будет осуществляться по протоколу RTP.
Обратите внимание, что номер последовательности CSeq все еще равен единице, но в качестве метода уже стоит ACK. Параметр Branch в поле Via содержит новый идентификатор транзакции, так как ACK, отправляемый в ответ на 200 OK считает новой транзакцией.
Теперь давайте рассмотрим, как происходит завершение медиа-сессии. Клиент Петра посылает BYE-запрос для завершение сессии:
Получив запрос на завершение сессии, клиент Ивана посылает подтверждение:
Мы рассмотрели простой вариант работы протокола SIP. Обратите внимание, что в разные моменты времени клиенты Ивана и Петра выступали то в роли сервера, то в роли клиента, поэтому во всех SIP-клиентах должна функционировать как серверная (User Agent Server или UAS), так и клиентская часть (User Agent Client или UAC).
В следующей статье я планирую рассмотреть взаимодействие клиентов SIP с использованием Proxy-сервера и регистрацию клиентов на Proxy-сервере.
Источник
Лучшие SIP-клиенты для Linux: ТОП-10
При помощи офисной voip или своей производственной АТС можно уменьшить расходы, затрачиваемые на связь, улучшить голосовое общение с клиентами.
Остановимся подробнее на 10 популярных программах на базе linux.
Ekiga
Эта программа была разработана Дамьеном Сандрасом. Представляет собой программу SIP/NetMeeting-клиента, по умолчанию установленную в Ubuntu. Ранее программа была известна под названием GnomeMeeting.
- поддерживает sip-телефонию;
- есть адресные книги;
- с ней можно работать в локальной сети;
- поддерживает отправку голосовых, стандартных текстовых сообщений.
Для установки на прочие операционные системы стоит открыть пакет «ekiga» для инсталляции.
Asterisk
Для телефонии для бизнеса этот SIP-сервер является одним из наиболее популярных. Он был разработан в 1999 году. С его помощью хотели заменить дорогостоящие мини-АТС.
Этот сервер поддерживает линукс. Перечислим его плюсы:
- с его помощью можно проводить видеосеансы;
- поддерживает функционирование с обычной телефонией;
- чтобы не допустить прослушивание сервер способен шифровать звонки;
- интегрируется в CRM-системы.
При помощи дополнительных программ его функционал можно расширить. SIP-сервер способен взаимодействовать с различными протоколами, ему под силу решить сложные задачи.
Сложность является его ключевым минусом.
Он отличается наличием удобных web-интерфейсов, однако они не упрощают пользование SIP-сервером.
SIP-сервер 3CX Phone System
Этот сервер востребован при телефонизации фирм с любой численностью сотрудников. К примеру, он пользуется успехом у корпораций, имеющих десятки подразделений.
Также виртуальные номера может использовать небольшая фирма.
С помощью этого SIP-сервера можно осуществлять следующие функции:
- использовать как call-центр;
- конференцсвязь;
- он интегрирован в CRM.
Из минусов можно отметить, что у сервера закрытый исходный код и добавить свои разработки не получится.
SIPXecs
Этот сервер функционирует на Linux. Данная софтовая атс позволяет решать множество задач.
Перечислим ее плюсы:
- использование веб-интерфейса для управления телефонией;
- можно удерживать звонки;
- ожидание звонков;
- быстрый дозвон;
- обработка и перевод звонков;
- возможность использования многоканальной связи;
- звонки заграницу.
Из минусов можно отметить, что работает исключительно с SIP.
Linphone
У этого кроссплатформенного программного клиента есть свои плюсы.
- русскоязычный графический интерфейс;
- подходит для операционных систем Linux, MAC OS, OC Android, Microsoft Vista, -XP, -Windows.
Если использовать на базе Linux, то можно пользоваться аргументами командной строки для управления Linphone, интерактивным клиентом Linphonec.
У этой программы не только русскоязычный интерфейс, он многоязычный.
В качестве основы для графического интерфейса взят GTK.
Из минусов можно отметить, что немного трудно разобраться с управлением звонками.
Удобный корпоративный софтфон.
Укажем его плюсы:
- поддерживает видеосвязь;
- предоставляет функции для пользователей в сфере бизнеса;
- есть возможность централизованно контролировать звонки;
- обеспечение безопасности;
- поддерживает MAC, Windows, Android, Blackberry, Linux, iPhone;
- можно пользоваться бесплатно.
Корпоративный Bria предоставляет широкий спектр услуг для бизнеса.
Zoiper
Перечислим преимущества этого софтфона:
- можно пользоваться бесплатно;
- если оплатить платную версию, то она без ограничения функциональных возможностей;
- поддерживает Linux, iPhone, Windows, WP8, MAC, Windows.
При помощи этой бесплатной программы можно звонить в любую страну.
Blink
Расскажем об особенностях этой программы:
- есть ограниченная по функционалу бесплатная версия;
- можно воспользоваться более полной платной версией;
- можно передавать файлы;
- поддерживает шифрование;
- есть чат;
- поддерживает Linux, MAC, Windows.
Это довольно простая программа, в ней доступен индикация статуса.
Jitsi
Укажем преимущества этой программы:
- информативный минималистичный интерфейс;
- простые окна конфигурации;
- разнообразные настройки;
- поддерживает видеовызовы, голосовые вызовы;
- поддерживает Google Hangouts, ICQ;
- можно передавать файлы;
- записывать разговоры;
- использовать общий рабочий стол.
Также плюсом этой программы является возможность использования удобного сервиса для организации видео-, голосовых конференций. К сожалению, для мобильных устройств нет версий.
Эта программа работает с Linux, Windows, Mac OS, поддерживает русский язык.
Yate Client
Это приложение поддерживает русский язык. Перечислим другие его плюсы:
- аскетичный вид;
- нет излишеств;
- достаточно просто разобраться в том, как оно работает;
- удобные окна;
- можно подключиться к «Facebook»;
- оперативно работает служба поддержки.
У этого интерфейса простая настройка программы. Если добавлять дополнительные аккаунты, которые требуют web-авторизации, то могут возникнуть трудности.
Как видим, на базе Linux можно выбрать подходящее приложение. Есть варианты с русскоязычным интерфейсом.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник