Учим SFLphone открывать tel и callto-ссылки в браузере

Опубликовано 22.07.2014 в 21:09 в разделе ,

Не секрет, что SFLphone — одна из лучших программ для IP-телефонии под линукс, очень удобный и компактный софтфон. Кроме того, это единственная программа, полностью автоматически записывающая все телефонные разговоры без необходимости нажимать на соответствующую кнопочку, что делает её просто незаменимой в маленьком колл-центре.

logo-sflphone

Одним из огромных минусов этой программы всегда была слабая интеграция с браузерами — обучить её открывать ссылки callto: и tel: можно было только крайне извращёнными методами. По всему интернету мне так и не удалось найти вменяемого способа срастить SFLphone и Google Chrome, Chromium, Firefox и любой другой браузер.

Именно для тех, кто отчаялся научить SFLphone звонить из браузера, я предлагаю наименее извращённый способ. Он подходит для тех, у кого на рабочем столе имеется Gnome-версия SFLphone, тестировался на ElementaryOS (Ubuntu 12.04 LTS).

Способ 1: полуавтоматический

  1. Скачайте архив с нужными файлами: sflphonetel.tar.gz
  2. Распакуйте в удобное для вас место
  3. Запустите sflphonetel.sh и укажите пароль для sudo

Если способ не сработал полностью автоматически, попробуйте вот что:

  1. Измените права доступа к sflphonetel.sh, добавив туда права на выполнение. Для этого щёлкните по файлу правой кнопкой мыши, выберите «Свойства» и в закладке «Ещё» выберите все пункты выполнения. Ну или просто chmod a+x  sflphonetel.sh
  2. Попробуйте запустить sflphonetel.sh из терминала. Для этого откройте терминал, перейдите в нём в папку с архивом (вполне возможно, это будет команда cd ~/Downloads/sflphonetel/) и выполните там ./sflphonetel.sh

После выполнения этих действий всё должно заработать. Рекомендуется щёлкать по tel-ссылкам при запущенном SFLphone.

Важно! В Firefox этот способ может сразу не сработать и предложить выбрать программу, которой открывать файлы. В окне выбора программы найдите вот эту: /usr/bin/sflphone-tel

Способ 2: подробный

Вы можете скачать архив с необходимыми файлами выше и использовать его.

Для начала, создадим обработчик tel-ссылок. Для этого:

sudo nano /usr/bin/sflphone-tel

И вводим сюда:

#!/bin/sh
#
# This script can be used as a callto: (or other) protocol handler in
# Mozilla Firefox-based browser.
# In Firefox use Preferences > Applications and set the callto handler
# to this script.
# Test if a SFLphone client is already open, if not open a new one
# Opening a new client will start sflphoned if not already running
SFLPHONEC=`ps -A | grep sflphone-client`
if [ "$SFLPHONEC" = "" ]; then
/usr/bin/sflphone-client-gnome&
fi

# Check 1st argument (phone number)
if [ -z $1 ]; then
echo "Error: argument 1 (phone number) not provided."
exit 1
fi

# Cleanup destination, keeping numbers only
TO="`echo $1 | sed -e 's/[^+0123456789]//g'`"

# Generate call id.
CALLID=${RANDOM}$$

# Dbus placeCallFirstAccount method does not reach sflphoned if starting
# Should find another way to do this
sleep 1

dbus-send \
--type="method_call" \
--dest="org.sflphone.SFLphone" \
"/org/sflphone/SFLphone/CallManager" \
"org.sflphone.SFLphone.CallManager.placeCallFirstAccount" \
string:"$CALLID" \
string:"$TO"

exit 0

Теперь сделаем его исполняемым:

sudo chmod 0777 /usr/bin/sflphone-tel
sudo chown root:root /usr/bin/sflphone-tel

Далее, подготовим псевдо-приложение для запуска SFLphone в режиме набора номера:

sudo nano /usr/share/applications/sflphonetel.desktop

В нём напишем:

[Desktop Entry]
Name=SFLphone CallTo Extension
GenericName=VoIP Client
X-GNOME-FullName=SFLphone CallTo Extension
Comment=Use SFLphone in browser for callto: and tel: protocol
Exec=/usr/bin/sflphone-tel %u
Icon=sflphone.svg
StartupNotify=true
Terminal=false
Type=Application
Categories=Network;Telephony;
MimeType=x-scheme-handler/callto;x-scheme-handler/tel;

И также сделаем его исполняемым. Не знаю, зачем, просто так, на всякий случай:

sudo chmod 0777 /usr/share/applications/sflphonetel.desktop
sudo chown root:root /usr/share/applications/sflphonetel.desktop

Теперь перестроим схему стандартных приложений рабочего стола:

sudo update-desktop-database

И всё, наши tel-ссылки работают!