Skriptaufruf zu externe URL bei JEDEM Anruf

Hallo zusammen,
ich möchte gerne die Schwarmintelligenz hier im Forum nutzen für folgende Anforderung:

JEDER Anruf - also auch jene, welche auf einem AB landen - soll protokolliert werden. Dazu stelle ich mir vor, per Skript ansynchron eine URL aufzurufen, an die alle relevanten Daten übergeben werden.

Davon verspreche ich mir:

  1. eine von jedermann einfach einsehbare und vor allem vollständige Gesprächsdatenliste, ganz ohne Kenntnisse von Grafana und so haben zu müssen.
  2. eine bessere bzw. vollständigere Abrechnung der Aufwände gegenüber Kunden durch automatisierte Weiterbearbeitung, beispielsweise mit Hilfe von ZAPIER.

Grafana ist zwar schön und gut, beinhaltet aber leider zu viele unnütze Informationen und berücksichtigt trotz der Fülle beispielsweise die Anrufe, welche auf einem AB gelandet sind, überhaupt nicht (Was jede Fritz!Box leider besser macht).

Nun könnte man ja einfach irgendwo einen Client laufen lassen, der dann eine URL aufruft. Aber der Client bekommt ja leider auch nicht alle Anrufe mit.

LG
Michael

Hallo @noses,

ich würde jetzt mal spontan das def_hangup Script vorschlagen.

Wir haben hier testweise folgendes in Zeile 2 nach NoOp:

exten => s,n,ExecIf($[("${MDC_EXTEN}" = "232")&("${CHANNEL(state)}" = "Ring")]?System(echo Verpasster Anruf von ${CALLERID(num)} | mail -s "Anruf verpasst" ceo@pascom.net)) 

Jeder Anruf läuft ja letztendlich über das def_hangup.
Die email Adresse verwenden wir natürlich nicht :slight_smile:

Du könntest zum Beispiel mittels curl deine Daten an ein php Script übergeben, dass wiederum deine relevanten Daten in eine Datenbank schreibt.

Wir rufen so z. B. Daten aus einer Datenbank ab:

same => n,GotoIf($["${CURL(http://192.168.XXX.X/ask.php?aid=0${CALLERID(NUM)})}"="ndf"]?NoLAR:LAR)

PHP-Script dazu:

    <?php
if (isset($_GET['aid']) && is_numeric($_GET['aid'])) {
    $aid = $_GET['aid'];
} else {
    $aid = "ndf";
}
$mysqli = new mysqli("127.0.0.1", "USER", "PASSWORD", "DATABASE");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$sql ="SELECT RIGHT(agent,3) FROM queue_log WHERE call_id IN (SELECT call_id FROM queue_log WHERE data2 = $aid) AND verb LIKE 'COMPLETE%' AND time_id > UNIX_TIMESTAMP(NOW() - INTERVAL 1 DAY) ORDER by time_id DESC LIMIT 1"; 
if (!$result = $mysqli->query($sql)) {
    echo "ndf";
    exit;
}

if ($result->num_rows === 0) {
    echo "ndf";
    exit;
}

while ($actor = $result->fetch_assoc()) {
    echo $actor['RIGHT(agent,3)']; // . ' ' . $actor['agent,3'];
}

$result->free();
$mysqli->close();

php?>

Das Script sollte dann natürlich entsprechend angepasst werden auf INSERT INTO oder was auch immer.

Grüße,

Jens

3 Likes

Vielen Dank für den Moment, schaue ich mir in der kommenden Woche in Ruhe an.