OK, das geht nicht mit SOAP.
Die generische Methode, ein
config change Kommando zu ermitteln ist:
- config sichern
- gewünschte Veränderung mit dem Admin UI durchführen
- config auf eine zweite Datei sichern
- diffen
ich habe z.B. meine GK-Adresse auf dem Telefon geändert. Das Diff ergibt:
vorher:
config change PHONE SIG /local-cf on /trace on /prot SH323 /gk-addr 172.16.0.10 /tones 0 /enblock 10 /coder G729A,60,
nachher:
config change PHONE SIG /local-cf on /trace on /prot SH323 /gk-addr 0.0.0.0 /tones 0 /enblock 10 /coder G729A,60,
geändert hat sich also der Parameter von /gk-addr.
Das kann ich durch folgendes Kommandos erreichen:
config add PHONE SIG /gk-addr 0.0.0.0
damit das ganze in der persistenten Konfiguration abgespeichert wird noch
config write
damit es wirksam wird noch
config activate
Manche Aktivierungen erfordern einen reset. Also noch
iresetn
das ist ein reset (reset), der aber nur falls nötig gemacht werden soll (resetn) und nur, wenn das Gerät idle ist (iresetn).
Diese Kommandos können Sie per http senden (z.b. http:/1.2.3.4/!iresetn, ein GET je Kommando) oder aber einfach so in ein update script schreiben.
Nun ist Ihr Wunsch leider grad a bisserl ungeschickt denn: sie werden feststellen, dass es für die erste Registrierung des Telefons gar kein "disable" Häkchen gibt. Das umsetzen der GK-Adresse auf eine unmöglichen Wert (0.0.0.0) wäre da ein Workaround.
Allerdings ist es eh nicht empfehlenswert, ein Telefon ohne Registrierung rumstehen zu haben. Wenn es z.B. brennt und sich jemand bis zum Telefon durch schlägt nur um dann festzustellen,. dass er damit nicht telefonieren kann, dann gibt es hinterher sicher Ärger. Daher wäre hier die Empfehlung, die erste Registrierung immer auf einem bestimmten User zu haben (wir verwenden dazu den User "Junk") und dem einen passenden Call Filter zu geben. Das dynamische Umschalten von Registrierungen erfolgt dann mit den Usern 2 bis 6. Aber das hängt natürlich von Ihrer Anmeldung ab.
Aber selbst dann funktioniert dieser Ansatz nicht wirklich, denn Sie werden feststellen, dass die weiteren Registrierungen nicht in einer config change Zeile konfiguriert werden. Vielmehr sind diese Registrierungen in einer sogenannten VAR gespeichert. Das Diff von oben ergibt folgendes:
vorher:
vars create PHONE/USER-REG/00001 p %3creg+prot='th323'+gk-addr='172.16.7.254'+coder='G729A,60,x0k0'+lcoder='G711A,30'+h323='ckl-4'+/%3e
nachher
vars create PHONE/USER-REG/00001 p %3creg+prot='th323'+enable='0'+gk-addr='172.16.7.254'+coder='G729A,60,x0k0'+lcoder='G711A,30'+h323='ckl-4'+/%3e
Der Unterschied ist das enable='0'. Eine VAR können Sie nicht selektiv verändern. Daher müssten Sie händisch einen read/modify/write cycle implementieren:
vars dump p PHONE/USER-REG/00001
ergibt
vars create PHONE/USER-REG/00001 p %3creg+prot='th323'+enable='0'+gk-addr='172.16.7.254'+coder='G729A,60,x0k0'+lcoder='G711A,30'+h323='ckl-4'+/%3e(sie können das nun URL-decoden, falls es Ihnen seltsam erscheint, aber ein Programm müsste das nicht wirklich tun. Wenn Sie es tun, dann sehen Sie, dass die Konfiguration ein XML String ist). Dort suchen Sie den enable Parameter und setzen den Wert wie gewünscht (bzw. fügen ihn ein, wenn nicht vorhanden). Dann senden Sie das Ergebnis wieder an das Telefon:
vars create PHONE/USER-REG/00001 p %3creg+prot='th323'+enable='1'+gk-addr='172.16.7.254'+coder='G729A,60,x0k0'+lcoder='G711A,30'+h323='ckl-4'+/%3eDamit das wirksam wird, wieder die selbe Prozedur wie oben:
config write
config activate
iresetn(manchmal wären übrigens manche dieser Kommandos nicht nötig, schaden tun sie aber nie!).
So das Prinzip, was genau die beste Lösung wäre, hängt natürlich von Ihrer genauen Aufgabenstellung ab.
LG, Christoph