Шлюз Asterisk и Skype через SipToSis под Debian или Ubuntu
ПО:
OS Ubuntu 12.10 или Debian 6.0.6
Клиент Linux Skype Ubuntu
Задача: привязать к Asterisk аккаунт Skype. Для приема звонков из популярного месенжера. И звонить абонентам Skype.
Для такой услуги существует расширение Asterisk производства Digium, но насколько я знаю, выдача лицензий приостановлена, сейчас SIP туннели продаются напрямую из сайта Skype по 5 евро за канал.
Кто любит шару, и не хочет платить там где можно не платить. Существует для решения подобных задач проект SipToSis позволяющий делать то же самое.
Для начала нам необходимо клиент программы Skype. Для Debian мы качаем версию Skype для Ununtu. С SipToSis работает путем взаимодействия с ним через Skype API. Так же необходимо не забывать, что для работы Skype необходима графическая среда. Для запуска его в консольном Linux, будем использовать Xvfb (X Virtual Frame Buffer) и для доступа с другой машины – x11vnc.
Устанавливаем все необходимые приложения:
Для аудио:
sudo apt-get install -y alsa-utils alsa-base alsa-tools
Графический сервер:
sudo apt-get install -y xvfb x11vnc
Java приложения:
sudo apt-get install -y openjdk-6-jdk
Графическая оболочка:
sudo apt-get install -y fluxbox
Устанавливаем пакет Skype, который взят с официально сайта и актуален на момент написания статьи:
dpkg -i skype-ubuntu-lucid_4.1.0.20-1_i386.deb
Возможно ругнется на неустановленные зависимости, лечится это:
sudo apt-get -f install
Нам необходимо сделать подгрузку виртуально звуковой карты, она используется в подключении.
Делаем разовую подгрузку в ядро.
modprobe snd-dummy
Или можно подключить в /etc/modules для постоянно загрузки.
nano /etc/modules в конце файла вписываем snd-dummy
Данная команда поможет установить необходимые зависимости.
Кочаем SipToSis с сайта разработчика SipToSis Download
Распаковываем архив, делаем запускаемым файл SipToSis_linux
chmod +x /etc/siptosis/SipToSis_linux
Создаем Транк в Астериске
Trunk Name: Skype_to_Sip username=Skype_to_Sip type=friend context=from-internal secret=skype_call_password host=dynamic nat=yes dtmfmode=auto canreinvite=no incominglimit=1 outgoinglimit=1 call-limit=1 busylevel=1
Открываем siptosis.cfg, комментируем блок настроек, начинающийся с #Sample AUTO config with NO registration и убираем комментарии с блока #Sample Asterisk registration example, в нем правим:
host_port=5070 contact_url=Skype_to_Sip@127.0.0.1:5060 from_url=»Skype_to_Sip» username=Skype_to_Sip realm=asterisk passwd=************ expires=300 do_register=yes minregrenewtime=120 regfailretrytime=15
Редактируем файл SkypeToSipAuth.props
nano SkypeToSipAuth.props
Данный файл определяет куда перенаправлять все входящие звонки Skype SIP-пользователю «user2″.
Обязательно, необходимо создать в extensions.conf контекст «Skype», в котором разрешить звонки на этот extension.
*,sip:user2@127.0.0.1:5060
Запускаем маленький скрипт, ставим паузы по 3 секунды, что бы приложения запускались последовательно.
#!/bin/sh # setting DISPLAY export DISPLAY=:1 Xvfb ${DISPLAY} -screen 0 800x600x16 & sleep 3 fluxbox & sleep 3 echo login1 password1 | skype --pipelogin & sleep 3 /home/login1/Skype/SipToSis/SipToSis_linux & sleep 3 x11vnc -display ${DISPLAY} -bg -nopw -listen XXX.XXX.XXX.XXX -xkb
Если вы все сделали правильно, SipToSis запустится и подключиться к Skype. Skype выдаст вопрос – разрешить ли подключение.
Подключаемся с другой машины (в моем случае, с Windows 7 через VNC Viewer), подтверждаем лицензию, настраиваем, отключаем все лишнее.
Я поднял данный клиент на древней машине Seleron 400, 128Мб оперативной памяти, 1Гигобайт винчестер.
Так, что старое железо еще может пригодится.
К сожалению у меня так и не получилось добиться стабильной работы с несколькими аккаунтами. Если у Вас получилось, прошу поделится опытом.