Skript nach Gespräch ausführen

Hallo,
ich möchte ein Skript nach einem geführten Gespräch ausführen.
Laut dem Aktionsablaufdiagramm wird die Aktion intern(/extern) nachher nur ausgeführt, wenn ein Gespräch nicht entgegengenommen wurde.
Ich habe das auch schon getestet und kann dieses Verhalten bestätigen.

Ist es möglich, und wenn ja wie, dass nach dem Auflegen ein Skript ausgeführt wird?

Hintergrund:
Das Skript soll für alle Benutzer ausgeführt werden, egal ob der Ruf von intern oder extern kommt.
Beim Skript handelt es sich um ein shell-Skript-Aufruf (mit Übergabeparameter), der den Verfügbarkeitsstatus (telefoniert/telefoniert nicht) des jeweiligen Benutzers an ein anderes System übermittelt.
Also quasi das, was in der Ansicht Benutzer -> Benutzerliste in der Spalte ganz rechts (“Lämpchen” rot/gelb/grün) angezeigt/gemacht wird.
Plan wäre, dass bei Anruf das Skript ausgeführt wird, das den Status “telefoniert” übermittelt und nach dem Gespräch den Status “telefoniert nicht” an das andere System übermittelt.
Vielleicht gibt es aber auch einen besseren weg, z.B. die Statusanzeige der MD abzufragen/zu übermitteln.
Wenn also schonmal jemand etwas in dieser Art gemacht hat, bin ich über jeden Tipp sehr dankbar!

Vielen Dank und viele Grüße!

Ich habe mein Problem anders gelöst bekommen. Leider wird damit aber mehr Netzwerktraffic erzeugt, da alle paar Sekunden die MD angefragt wird. Wenn es eine Möglichkeit gäbe, nach dem Auflegen ein Skript ausführen zu lassen, könnte die MD quasi einen “push” machen, der wirklich nur dann ausgeführt würde wenn es eine Statusänderung gibt.

In der REST-Api gibt es die Möglichkeit /identity/states abzufragen, welche dann die Stati “Idle”, “Ringing” und “InUse” zurückliefert (evtl. gibts noch mehr Stati, ist aber leider nirgends dokumentiert).
Das andere System frägt nun die API der MD alle paar Sekunden per curl-Aufruf nach den aktuellen States ab. Entgegen dem Demo in der apidoc kann man die Abfrage auch ohne Parameter absenden, dann bekommt man alle Benutzer und deren States.
Die weitere Auswertung übernimmt das PHP-Skript des anderen Systems.

Da ich hier im Forum bisher nur cUrl-Abfragen auf die API per Kommandozeile gesehen habe, gibts hier das Pendant der bei mir funktionierenden cUrl-Abfrage mit PHP:

<?php

$auth = “USER:PASSWORD”;

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, “http://IPDERMOBYDICK/services/identity/states”);
curl_setopt($curl, CURLOPT_HTTPHEADER,array(‘Content-Type: application/json’));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERPWD, “$auth”);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

//Ergebnis (JSON-String) in die Variable $result laden
$result = curl_exec ($curl);
curl_close ($curl);

//Der JSON-String kann mittels json_decode($result) als PHP-Array weiterverarbeitet werden
?>

Hi,

in den meisten Fällen in dem ein Anruf beendet wird, wird das Skript “default009/def_hangup” gerufen. Dort kannst du noch Dinge nach dem Auflegen tun.

Gruß
Markus

Re,

du könntest natürlich auch die AMI Schnittstelle des asterisk verwenden, siehe u.a. https://wiki.asterisk.org/wiki/display/AST/AMI+Event+Documentation
Den Zugriff kannst du unter Appliance->Asterisk Managerkonten definieren.
Testen kannst du den Zugriff z.B. via telnet unter Verwendung vom Port 5038, siehe auch http://www.voip-info.org/wiki/view/Asterisk+manager+API

Gruß
Markus