hier habe ich mal eine dumme frage… ich brauche eine Lösung für Schimpansen um aus einer Drittanwendung einen Anruf zu initiieren (Parametergesteuert).
Viel geschaut - wenig gefunden und dann REST aktiviert und getestet. In der MD-Oberfläche gleich einen Test reingemacht - klappt super. Ich also ein progrämmchen gesucht mit dem man post’s absetzten kann (curl.exe ist wohl sehr verbreitet…) aber bekomme als Fehler immer ein “409 Conflict” zurück.
Die Syntax ist ja relativ simpel… nichtsdestotrotz habe ich tausend variationen des Postbefehls durchprobiert - ergebnis ist immer 409
curl.exe -v -u uwe.steuer:passwort -X POST http://10.0.20.99/services/ipphone/00A41371D4FA/action -d {"action":"dial","destination":"00151123456789"}
Das passende Log dazu:
Trying 10.0.20.99…
Connected to 10.0.20.99 (10.0.20.99) port 80 (#0)
Server auth using Basic with user ‘uwe.steuer’
> POST /services/ipphone/00A41371D4FA/action HTTP/1.1
> Authorization: Basic dXdlLnN0ZXVlcjozM0hhc2VuZ3J1YmU4MyQ=
> User-Agent: curl/7.41.0
> Host: 10.0.20.99
> Accept: /
> Content-Length: 39
> Content-Type: application/x-www-form-urlencoded
>
über die /services/apidoc seite musste ich mich auch authentifizieren.
Ferner gibt es bei curl auch einen “Zugriff verweigert” wenn ich es ohne oder mit falschen zugangsdaten probiere.
Variante B) mit implizitem json content in der URL
curl.exe -v -u uwe.steuer:passwort -X POST http://10.0.20.99/services/ipphone.json/00A41371D4FA/action -d '{"action":"dial","destination":"0151123456789", "prefix":"auto"}'
Die zusätzliche 0 würde ich zugunsten von “prefix=auto” weglassen, dadurch entscheidet die MobyDick selbst über den prefix (wird auch so im Client genutzt).
bei curl bekomme ich nach wie vor ein “409 Conflict, action not successfull”
Was es wohl nicht ist -> Authentifizierung - Änder ich name und/oder passwort gibt es authentifizierungsfehler
Was es wohl nicht ist -> Pfad - Ändere ich hier etwas hat er probleme mit dem pfad…
Eigentlich bleibt dann nur curl selbst übrig das er das seltsam formatiert übergibt, oder? Nur google spuckt nicht wirklich alternativen aus - post’s auf kommandozeile ist curl wohl state of the art…
a) mach den curl Aufruf direkt in der MobyDick (dann natürlich ohne .exe)
b) schau nach /var/log/mobydick/rest.log vielleicht gibt es dort einen Hinweis
Weiß im Moment nicht ob ich mich freuen oder ärgern soll. Zwar nicht gelöst aber zumindest schon schwer eingegrenzt… Der Windowsclient scheint es ja dann irgendwie anders zu schicken als die Linuxversion…
Neben gefühlten 30 Parameter-Varianten für “Json per curl als http post senden” steht da:
For windows, single quotes around json did not work and I ended up escaping double quotes. curl -X POST -H “Content-Type: application/json” -d “{ "key1": "value1" }” http://localhost:3000/api/method
Das | klappt unter windows überhaupt nicht - das interpretiert er sonstwie und es kommt als Meldung “Die Syntax für Dateinamen ist falsch” und ähnliches krudes zeug…
Aber mit deinen Suchbegriffen ein wenig modifiziert habe ich dann diese Schreibweise gefunden:
curl -v -u "uwe.steuer:passwort" -X POST "http://10.0.20.99/services/ipphone.json/00041371D4FA/action" -d "{\"action\":\"dial\",\"destination\":\"00151123456798\"}"
Das macht es zwar nicht gerade leserlicher aber hat auf Anhieb funktioniert.
Vielen Dank - alleine hätte ich es nicht geschafft…