Linux

SIP url-handler unter Ubuntu

Veröffentlicht

Man sollte meinen, dass das Thema im Netz ganz einfach zu finden ist – Pustekuchen…

Folgendes „Problem“: unter Ubuntu sollen aus Thunderbird (und ggf auch aus anderen Anwendungen heraus) URLs der Form sip://05121267377@gateway aufgerufen werden können und dann z.B. das Softphone damit beauftragen, den Ruf abzusetzen und mit dem Teilnehmer zu verbinden.

Die Hinweise im Netz, die über die gnome-settings gehen scheinen veraltet und funktionieren nicht (mehr?).

Stattdessen funktioniert es, unter /usr/share/applications eine passende .desktop-Datei anzulegen (s. http://jarrpa.net/2011/10/28/creating-custom-url-handlers-in-ubuntu-11-04-11-10-gnome-3-0/). Dort ist als MimeType einzugtragen:

MimeType=x-scheme-handler/sip

Vollständig sieht das dann z.B. so aus:

~$ cat /usr/share/applications/ekiga_uri.desktop
[Desktop Entry]
Name=Ekiga
Type=Application
Exec=/opt/uri2phone.sh %U
Icon=ekiga
#Icon=/usr/share/pixmaps/linphone/linphone.png
Terminal=false
Categories=Network;Telephony;
MimeType=x-scheme-handler/sip;x-scheme-handler/callto;
~$ cat /opt/uri2phone.sh 
#!/bin/bash

#PHONE=$(which linphone)
PHONE=$(which ekiga)
GATEWAY=pbx.lan.aschiller.de

export LOGGER=$(which logger)

log () {
/usr/bin/logger -t "uri2phone" -- $*
}

# extract the protocol
proto="$(echo $1 | grep :// | sed -e's,^\(.*://\).*,\1,g')"
# remove the protocol
url="$(echo ${1/$proto/})"
# extract the user (if any)
user="$(echo $url | grep @ | cut -d@ -f1)"
# extract the host
host="$(echo ${url/$user@/} | cut -d/ -f1)"
# extract the path (if any)
path="$(echo $url | grep / | cut -d/ -f2-)"

log "called with proto=$proto, url=$url, user=$user, host=$host"

case $proto in
callto:|callto://)
callid=$host@$GATEWAY
;;
sip:|sip://)
callid=$url
;;
esac

if [ -n "$callid" ]; then
log "call $PHONE -c $callid"
$PHONE -c $callid
fi

 

Schreibe einen Kommentar