Mitschnitte per restschnittstelle herunterladen

Problem
Oftmals möchte man die Mitschnitte herunterladen und auf z.B. einem NAS speicher

Lösung

Hier hilft ein Linuxrechner mit php und dieses skript.

 #!/usr/bin/php

 <?php
 $restuser='moby';

/* Instanzname und Passwort anpassen*/
$restpw='restpassword';
$url='https://pascom.cloud/instanzname/services/monitor/?durationfrom=3';

/*Vorhandene Mitschnitte auslesen */
$chpascom = curl_init();
curl_setopt($chpascom, CURLOPT_URL, $url);
curl_setopt($chpascom, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($chpascom, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($chpascom, CURLOPT_RETURNTRANSFER, true);
curl_setopt($chpascom, CURLOPT_USERPWD, "$restuser:$restpw");
curl_setopt($chpascom, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$outputpascom = curl_exec($chpascom);
$infopascom = curl_getinfo($chpascom);
$errorpascom = curl_error($chpascom);
curl_close($chpascom);

$jsonpascom=json_decode($outputpascom);


for($i = 0; $i < count($jsonpascom); $i++){
   $out=get_object_vars($jsonpascom[$i]);
   $date = new DateTime();
   $datum=$date->format('Y-m-d-H:i:s');
   $time=$out['time'];
   $id=$out['id'];
   $timestamp=$out['timestamp']; 
   $time=str_replace(' ','-',$time);
   $touchtime=str_replace('-','',$time);
   $touchtime=str_replace(':','',$touchtime);
   $touchtime=substr($touchtime, 0,-2);
   $userid=$out['userId'];
   $userName='mitschnitte-'.$out['userName'];
   $extension=$out['extension'];
   $inbound=$out['inbound'];
   $internal=$out['internal'];
   $duration=$out['duration'];
   $connected=$out['connected'];
   $deviceId=$out['deviceId'];
   $deviceName=$out['deviceName'];
   $locationId=$out['locationId'];
   $locationName=$out['locationName'];
   $recordId=$out['recordId'];
   $name=$out['name'];
$number=$out['number'];
$prefix=$out['prefix'];
$phonebookEntryId=$out['phonebookEntryId'];
$result=$out['result'];
$resultDetails=$out['resultDetails'];
$via=$out['via'];
$viaDetails=$out['viaDetails'];
$phonecallRecordId=$out['phonecallRecordId'];
$chain=$out['chain'];
$labelList=$out['labelList'];

/* Einzelne Mittschnitte herunterladen */

$records[]=$recordId;
$urlrecord='https://pascom.cloud/instanzname/services/monitor/'.$recordId;
	$chrecord = curl_init();
curl_setopt($chrecord, CURLOPT_URL, $urlrecord);
curl_setopt($chrecord, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($chrecord, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($chrecord, CURLOPT_RETURNTRANSFER, true);
curl_setopt($chrecord, CURLOPT_USERPWD, "$restuser:$restpw");
curl_setopt($chrecord, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$outputrecord = curl_exec($chrecord);
$inforecord = curl_getinfo($chrecord);
$errorrecord = curl_error($chrecord);
curl_close($chrecord);
$jsonrecord=json_decode($outputrecord,true);
//print_r($jsonrecord);
	for($a = 0; $a < count($jsonrecord); $a++){
		$ruleId=$jsonrecord[0]['ruleid'];
		$recordfile=$jsonrecord[0]['file'];
		}

exec('curl -u '.$restuser.':'.$restpw.' -X GET "https://pascom.cloud/instanzname/services/monitor/'.$recordId.'/'.$ruleId.'/'.$recordfile.'/wav" -H "accept:audio/x-wav" > '.$i.'.wav');

}

 /* Hiermit werden die Mitschnitte nummeriert als wav gespeichert, alternativ einfach die gewünschte Variable verwenden und ggf. danach als mp3 konvertieren und z.B. via scp verschieben.*/
?>

Bräuchte Hilfe bei diesem Thema.
Habe das Skript auf dem Desktop eines Raspberry Pi 4 abgelegt und ausgeführt bekomme aber folgende Meldungen

Blockquote
bash /home/Michi/Desktop/Mitschnitte.sh
/home/Michi/Desktop/Mitschnitte.sh: Zeile 3: ?php: Datei oder Verzeichnis nicht gefunden
/home/Michi/Desktop/Mitschnitte.sh: Zeile 4: =moby: Kommando nicht gefunden.
/home/Michi/Desktop/Mitschnitte.sh: Zeile 6: /bin: Ist ein Verzeichnis
/home/Michi/Desktop/Mitschnitte.sh: Zeile 7: =: Kommando nicht gefunden.
/home/Michi/Desktop/Mitschnitte.sh: Zeile 8: =pascom Status Datei oder Verzeichnis nicht gefunden
/home/Michi/Desktop/Mitschnitte.sh: Zeile 10: /*Vorhandene: Datei oder Verzeichnis nicht gefunden
/home/Michi/Desktop/Mitschnitte.sh: Zeile 11: Syntaxfehler beim unerwarteten Wort (' /home/Michi/Desktop/Mitschnitte.sh: Zeile 11: $chpascom = curl_init();’

Blockquote
Kann mir hier jemand sagen wie ich diese tolle Skript nutzen kann
Vielen Dank

Hallo, einfach dieses PHP-Skript nicht mit der “bash” ausführen :slight_smile: Mach das Skript mit “chmod +x Mitschnitte.sh” ausführbar, und dann kannst Du es direkt aufrufen!