Hallo,
So, ich hab das jetzt geschafft.
So geht das:
Eine Funktionstaste vom Snom muss auf Typ 'Button' konfiguriert werden und !!!UNBEDINGT!!! bei der Nummer etwas eintragen. Am besten die Nummer von der Taste dort eintragen. z.B. 12 bei der letzten Taste
auf einem Snom 320.
Über Provisioning würd das so aussehen:
Code:
<fkey idx="11" context="active" perm="">button 12</fkey>
Nun kann mit SIPSAK (oder z.B. Perl IO:Socket) SIP Messages an das Telefon schicken und die Taste programmieren. Damit das Telefon die SIP Meldungen annimmt, muss noch folgendes konfiguriert sein:
Support broken Registrar to "on"
Filter Packets from Registrar to "off"
Network identity (port): 5060
Und eine Identität muss registriert sein.
Dann kann folgende SIP Message zu dem Telefon geschick werden um die LED ein zu schalten.
Inhalt von /tmp/an.txt
Code:
MESSAGE $user$@$dsthost$:5060;transport=udp SIP/2.0
From: "sipsak" <sip:sipsak@$host$t>;tag=38473
To: <sip:$user$@$dsthost$:5060>
Call-ID: 12345678@$host$
CSeq: 59620 MESSAGE
Max-Forwards: 70
Contact: <$user$@$dsthost$;transport=udp>
Subject: buttons
Content-Type: application/x-buttons
Content-Length: 18
k=12
c=on
n=**86
So wird das hingeschickt:
Code:
/usr/bin/sipsak -G --hostname <IP vom PC/Server> -s sip:<nr>@<IP vom Phone> --filename /tmp/an.txt
Die Nummer bei k= muss die selbe sein, die bei der Taste als Nummer angegeben wurde! Sonst funktionierts nicht!
Und so wieder ausschalten:
Inhalte von /tmp/aus.txt
Code:
MESSAGE $user$@$dsthost$:5060;transport=udp SIP/2.0
From: "sipsak" <sip:sipsak@$dsthost$>;tag=38473
To: <sip:$user$@$dsthost$:5060>
Call-ID: 12345678@$dsthost$
CSeq: 59620 MESSAGE
Max-Forwards: 70
Contact: <$user$@$dsthost$;transport=udp>
Subject: buttons
Content-Type: application/x-buttons
Content-Length: 19
k=12
c=off
n=**86
Und so hinschicken:
Code:
/usr/bin/sipsak -G --hostname <IP vom PC/Server> -s sip:<nr>@<IP vom Phone> --filename /tmp/aus.txt
Nach dem Provisioning hat die Taste allerdings noch keine Nummer hinterlegt. Um dort eine Nummer zu hinterlegen, gibt es eine Action URL, die beim fertig Starten des Telefons (betriebsbereit) ausgeführt wird. Mit Autoprovisioning würd das so aussehen:
Code:
<action_setup_url perm="">http://<IP vom Server>/path/to/script.php</action_setup_url>
Mit diesem Skript kann die Taste des Telefons dann nach dem Booten mit einem Anfangswert programmiert werden bzw. sich den gerade aktuellen Wert (LED) holen.
Beim drücken dieser Taste, wir jetzt ein Ruf zu der Nummer gestartet (**86 in meinem Beispiel). Damit lassen sich Datenbankeinträge erstellen und andere Skripte anstossen. (LED an/aus schalten).
Somit erreich ich genau das, was ich haben wollt. Durch drücken der 12. Taste wird die LED bei Taste 12 eingeschalten, durch erneutes Drücken wieder ausgeschalten.
Chris...