Hauptmenü

myUtils.pm Frage

Begonnen von lammy, 22 Dezember 2016, 19:15:58

Vorheriges Thema - Nächstes Thema

lammy

Hi Leute,

ich habe ein paar Probleme mit dem nachfolgenden Quellcode und den Fehlern in der Log Datei. Da ich mit Perl noch nicht so vertraut bin und es leider an der Syntax liegt hoffe ich das jemand Zeit hat der es aus dem FF kann und mir sagt was ich falsch gemacht habe. Ich habe schon ein paar "", (), {}, '' irgend wo mal gesetzt aber komme einfach nicht zum Ziel :(

Was soll das Script machen...
ich möchte über eine DOIF Funktion den Befehl
({voipcall("Ein Feuer ist ausgebrochen",'017*****')}) starten.
Anschließend soll das Script mit dem Programm espeak auf dem Linuxhost mit dem Text "Ein Feuer ist ausgebrochen" eine wave Datei erzeugen, diese soll anschließend mit dem Programm sox in eine neue brauchbare VOIP wave Datei umgewandelt werden, damit zum Schluss, dass Programm sipcmd die neue wave Datei nutzen kann um einen Anruf zu tätigen.

Herzlichen Dank schon mal

myUtils.pm
######## VoIP Call mit sipcmd starten ############
sub
voipcall
{
  my $text = shift;
  my $callnumber = shift;
  my $return_sipcmd = "";
  my $return_espeak = "";
  my $return_sox = "";
  my $name = "FhemVoIP";
  my $konto = "999999";
  my $passwrd = "*******";
  my $provider = "sip.voip2gsm.de";
  my $audiofilefolder = "/opt/fhem/voip/messages/";
  my $audiofile = int(rand(9999-1));
  my $audiofileextentin = "_mono";
  Log 1, "voipcall callnumber: $callnumber";
  Log 1, "voipcall Text: $text";
  Log 1, "voipcall Filename: $audiofile";
  Log 1, "voipcall Debug Filename/Folder/Extention: $audiofilefolder$audiofile";
  espeak -vde+m4  "$text" -b 1 -w $audiofilefolder$audiofile;
  #$return_espeak .= qx(espeak -v'de+m4'  "$text" -b '1' -w '$audiofilefolder$audiofile');
  sox $audiofilefolder$audiofile -b 16 -c 1 -r 8000 $audiofilefolder$audiofile$audiofileextentin;
  #$return_sox .= qx(sox $audiofilefolder$audiofile -b 16 -c 1 -r 8000 $audiofilefolder$audiofile$audiofileextentin);
  sipcmd -u '$konto' -c '$passwrd' -P sip -w '$provider' -x "c'$callnumber';ws1000;v$audiofilefolder$audiofile$audiofileextentin;h";
  #$return_sipcmd .= qx(sipcmd -u '$konto' -c '$passwrd' -P sip -w '$provider' -x "c'$callnumber';ws1000;v$audiofilefolder$audiofile$audiofileextentin;h");
  #$ret =~ s,[\r\n]*,,g;
  Log 1, "voipcall returned: $return_sipcmd";
}


Logdatei:

syntax error at ./FHEM/99_myUtils.pm line 35, near "m4  "$text""
syntax error at ./FHEM/99_myUtils.pm line 37, near "$audiofile -b "

Devender

Entferne mal bitte deine Userdaten zum sipaccount


my $name = "FhemVoIP";
  my $konto = "30xxxx2";
  my $passwrd = "uxxxxkx";
  my $provider = "sip.vo
FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

Puschel74

#2
Auch die Handynummer würde ich in keinem Forum posten:
Zitat({voipcall("Ein Feuer ist ausgebrochen",'0xxxxxxxxxx')})
Das Passwort zum Account würde ich persönlich spätestens jetzt ändern  ::)

Aber ich versuch mal was zum Problem:
Du rufst eine sub mit 2 Parameter auf aber die sub erwartet keine.
1.
sub
voipcall ($$)
{

für die 2 Parameter.
2. - Zeile 35 (diese hier?)
espeak -vde+m4  "$text" -b 1 -w $audiofilefolder$audiofile;
gehört zwischen -vde und +m4 nicht ein Leerzeichen?
3. - Zeile 37 (diese hier vermutlich)
sox $audiofilefolder$audiofile -b 16 -c 1 -r 8000 $audiofilefolder$audiofile$audiofileextentin;
gehört nach sox zwischen $audiofilefolder und $audiofile nicht auch ein Leerzeichen?
Grad gesehen - gehören die Variablen nicht alle mit einem Leerzeichen getrennt  :o
Verbunden werden sie in Perl zumindest so nicht - zum verbinden von Variablen braucht es in Perl noch den Punkt .

espeak und sox sagt mir grad nichts und ich bin im Moment auch zu faul um Google zu befragen (vielleicht mach ich das noch wenn ich Zeit habe).

Edith: Nummer vom TE "angepasst"
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

lammy

#3
Hi Danke für die Anregunngen mit den REAL Daten :-) Habe schon lange nichts mehr in einem Forum gepostet.... :(

1. ($$) habe ich hin zu gefügt

2. Die Programmzeilen habe ich aus der Shell raus kopiert wo ich sie vorher getestet habe, daher laufen sie so wie sie im Code stehen wenn man sie in eine Shell eingibt.

Ich habe den Code jetzt zum laufen gebracht bis auf "sipcmd" vieleicht habt ihr dazu noch eine Idee.

Quellcode:
##############################################
# $Id: 99_myUtils.pm 11984 2016-08-19 12:47:50Z rudolfkoenig $
package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

######## VoIP Call mit sipcmd starten ############
sub
voipcall($$)
{
  my $text = shift;
  my $callnumber = shift;
  my $return_sipcmd = "";
  my $return_espeak = "";
  my $return_sox = "";
  my $name = "FhemVoIP";
  my $konto = "USER";
  my $passwrd = "pass";
  my $provider = "host";
  my $audiofilefolder = "/opt/fhem/voip/messages/";
  my $audiofile = int(rand(9999-1));
  my $dateityp = ".wav";
  my $audiofileextentin = "_mono";
  Log 1, "voipcall callnumber: $callnumber";
  Log 1, "voipcall Text: $text";
  Log 1, "voipcall Filename: $audiofile$dateityp";
  Log 1, "voipcall Debug Filename/Folder/Extention: $audiofilefolder$audiofile$dateityp";

  ####### espeak auführen #######
  #system "espeak '-vde+m4'  '$text' '-b 1' '-w $audiofilefolder$audiofile$dateityp'";
  $return_espeak .= qx(espeak '-vde+m4'  '$text' '-b 1' '-w $audiofilefolder$audiofile$dateityp');
  Log 1, "voipcall espeak returned: $return_espeak";

  ####### sox auführen #######
  #system "sox '$audiofilefolder$audiofile$dateityp' '-b 16' '-c 1' '-r 8000' '$audiofilefolder$audiofile$audiofileextentin$dateityp'";
  $return_sox .= qx(sox '$audiofilefolder$audiofile$dateityp' '-b 16' '-c 1' '-r 8000' '$audiofilefolder$audiofile$audiofileextentin$dateityp');
  Log 1, "voipcall sox returned: $return_sox";
 
  ####### sipcm auführen #######
[color=red][u][b]  $return_sipcmd .= qx(sipcmd '-u $konto' '-c $passwrd' '-P sip' '-w $provider' '-x c$callnumber;ws1000;$audiofilefolder$audiofile$audiofileextentin$dateityp;h');[/b][/u][/color]
  #$ret =~ s,[\r\n]*,,g;
  Log 1, "voipcall sipcmd returned: $return_sipcmd";
  #system "rm '$audiofilefolder$audiofile$dateityp'";
  #system "rm '$audiofilefolder$audiofile$dateityp$audiofileextentin'";
  Log 1, "voipcall: nicht benoetigte Dateien wurden geloescht";

}

1;


Fehlercode:
2016.12.22 21:58:17 1: voipcall sipcmd returned: Starting sipcmd
invalid protocol

Devender

Zitat von: lammy am 22 Dezember 2016, 22:01:55
[/code]

Fehlercode:
2016.12.22 21:58:17 1: voipcall sipcmd returned: Starting sipcmd
invalid protocol


Anhand der Meldung würde er jetzt versuchen dein Usernamen als protocol zu identifizieren.
ich würde das -P sip mal ganz an den Anfang setzen.

So steht es zumindest in den Beispielen im Netz:

./sipcmd -P sip -u [username] -c [password] -w [server] -x "c;w200;d12345"


Ist aber nur geraten bzw. anhand der Meldung abgeleitet.

FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

lammy

#5
Hi,

danke für den Tip. Habe es geschafft.
Ich würde ganz gerne nur noch die Rückmeldung bekommen das auch ein Anruf rausgegangen ist. Sprich in die Log geschrieben haben.
Anbei ist ein Auszug von dem sipcmd wie es aktuell in die Config reinballert.
Man müsste nach "## Hangup ##" Wenn das vorkommt dann war der call i.O. Jemand ne Idee??

016.12.23 00:35:50 1: voipcall sipcmd returned: Starting sipcmdin debug modeManagerInitinitialising SIP endpoint...TestChanAudioTestChanAudioListening for SIP signalling on 0.0.0.0:5060SIP listener upregistered as sip:3000.02@sip.voip2gsm.deCreated LocalEndPointMain## Call ##TestPhone::Main: calling "01718637118" using gateway "sip.voip2gsm.de" at Fri Dec 23 00:35:18 2016Setting up a call to: sip:01718637118@sip.voip2gsm.deLocalEndpoint::MakeConnectionLocalEndpointCreateConnectionLocalConnectionOnIncomingConnection: token=Lcdf475db2connection set up to sip:01718637118@sip.voip2gsm.deTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 0TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 1TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 2TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 3TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 4TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 4TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 4TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 4TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 4TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 4TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 4TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 4TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 4TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 5TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 6TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7TestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7OnOpenMediaStreamrecording media from sipCreateMediaStreamTestChannel[ Call[C597bd9c51]-EP<local>[Lcdf475db2] - 0x7f9014031cb0 ]OnOpenMediaStreamstreaming media to localTestChannel::WriteTestChannel::WriteCreateMediaStreamTestChannel[ Call[C597bd9c51]-EP<local>[Lcdf475db2] - 0x7f901404b130 ]OnOpenMediaStreamrecording media from localOnOpenMediaStreamstreaming media to sipTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 7TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 8TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 9TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 10TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 11TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestPhone::Main: calling "sip:01718637118@sip.voip2gsm.de" for 11TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteOnEstablished## Wait: waiting for 1000ms ##OnEstablishedOnEstablishedCallIn call with sip:01718637118@85.25.203.230:5060 using local:fhem token=[C597bd9c51]TestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteWait: wait done## Voice audiofile=/opt/fhem/voip/messages/6448_mono.wav ##PlaybackAudioFilePlaybackAudioFile: opening file "/opt/fhem/voip/messages/6448_mono.wav" as WAVPlaybackAudioTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteTestChannel::WriteStopAudioPlaybackTestChanAudio::PlaybackAudio: play back done 1## Hangup ##Hangup: at Fri Dec 23 00:35:34 2016TestChannel::WriteTestChannel::WriteOnClosedMediaStreamClose [ Call[C597bd9c51]-EP<local>[Lcdf475db2] - 0x7f9014031cb0 ]TestChanAudio::CloseChannelStopAudioPlaybackStopAudioRecordingOnClosedMediaStreamOnClosedMediaStreamClose [ Call[C597bd9c51]-EP<local>[Lcdf475db2] - 0x7f901404b130 ]TestChanAudio::CloseChannelStopAudioPlaybackStopAudioRecordingOnClosedMediaStreamOnReleased: reason: EndedByLocalUserOnReleased: reason: EndedByLocalUserOnClearedCall~LocalConnectionTestPhone::Main: shutting downTestPhone::Main: exiting...Exiting...~Manager


Hier der funktionierende Quellcode

##############################################
# $Id: 99_myUtils.pm 11984 2016-08-19 12:47:50Z rudolfkoenig $
package main;

use strict;
use warnings;
use POSIX;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

######## VoIP Call mit sipcmd starten ############
######## Beispiel:
######## ({voipcall("Guten Tag hier ist Hans Wurst",'08003301000')})
sub
voipcall($$)
{
  my $text = shift;
  my $callnumber = shift;
  my $return_sipcmd = "";
  my $return_espeak = "";
  my $return_sox = "";
  my $ret = "";
  my $name = "FhemVoIP";
  my $konto = "user";
  my $passwrd = "pass";
  my $provider = "host";
  my $protocol = "sip";
  my $audiofilefolder = "/opt/fhem/voip/messages/";
  my $audiofile = int(rand(9999-1));
  my $dateityp = ".wav";
  my $audiofileextentin = "_mono";
  Log 1, "-------- voipcall start --------";
  Log 1, "voipcall callnumber: $callnumber";
  Log 1, "voipcall Text: $text";
  Log 1, "voipcall Filename: $audiofile$dateityp";
  Log 1, "voipcall Debug Filename/Folder/Extention: $audiofilefolder$audiofile$dateityp";

  ####### espeak auführen #######
  $return_espeak .= qx(espeak '-vde+m4'  '$text' '-b 1' '-w $audiofilefolder$audiofile$dateityp');
  Log 1, "voipcall espeak returned: $return_espeak";
  ####### sox auführen #######
  $return_sox .= qx(sox '$audiofilefolder$audiofile$dateityp' '-b 16' '-c 1' '-r 8000' '$audiofilefolder$audiofile$audiofileextentin$dateityp');
  Log 1, "voipcall sox returned: $return_sox";


  ####### sipcm auführen #######
  #system "echo sipcmd -P $protocol -u $konto -c '$passwrd' -w $provider -x 'c$callnumber;ws10000;$audiofilefolder$audiofile$audiofileextentin$dateityp;h'";
  $return_sipcmd .= qx(sipcmd -P $protocol -u $konto -c '$passwrd' -w $provider -x 'c$callnumber;ws1000;v$audiofilefolder$audiofile$audiofileextentin$dateityp;h' &);
  #system "sipcmd -P $protocol -u $konto -c '$passwrd' -w $provider -x 'c$callnumber;ws1000;v$audiofilefolder$audiofile$audiofileextentin$dateityp;h' &";
  $return_sipcmd =~ s,[\r\n]*,,g;    # remove CR from return-string
  Log 1, "voipcall sipcmd returned: $return_sipcmd";
  #system "rm '$audiofilefolder$audiofile$dateityp'";
  #system "rm '$audiofilefolder$audiofile$dateityp$audiofileextentin'";
  Log 1, "voipcall cleaning: nicht benoetigte Dateien wurden geloescht";
  Log 1, "-------- voipcall end --------";
}

1;