Yowsup empfangene Sprachnachricht abspielen

Begonnen von chr2k, 16 Dezember 2015, 23:40:05

Vorheriges Thema - Nächstes Thema

chr2k

Guten Abend Leute,

wenn ich meinem Yowsup Account von meinem Smartphone eine Sprachnachricht schicke, bekomme ich im message-Reading sowas wie
[Media Type:audio, Size:10987, URL:https://mmi308.whatsapp.net/d/6V2MsdK7-GTgUK8an121jFZx5nMABScLeqT22w/ApEMsDF_Uz4E6HRLhnkCE84A6VT8IzAcaNR-y3OsH_mg.aac]
angezeigt.

Die Adresse kann ich dann einwandfrei über die FHEM Kommandozeile mit dem Befehl
"sudo omxplayer https://mmi308.whatsapp.net/d/6V2MsdK7-GTgUK8an121jFZx5nMABScLeqT22w/ApEMsDF_Uz4E6HRLhnkCE84A6VT8IzAcaNR-y3OsH_mg.aac"
anhören.

Wie bekomme ich nun (womöglich per notify oder DOIF) die URL aus dem Reading so rausgezogen, dass ich diese Sounddatei sobald sie eintrifft direkt abspielen lassen kann. Momentan mache ich das ja manuell (siehe oben).

Habe mit notify und $EVTPART3 rum probiert. Aber irgendwie komme ich da nicht weiter. Mein bisheriger laienhafter Versuch sieht ungefähr so aus
chr:message:Media Type:audio "sudo omxplayer "$EVTPART4""
Selbst wenn die Definition richtig wäre, wäre ja der $EVTPART4 "URL:https://mmi308.whatsapp.net/d/6V2MsdK7-GTgUK8an121jFZx5nMABScLeqT22w/ApEMsDF_Uz4E6HRLhnkCE84A6VT8IzAcaNR-y3OsH_mg.aac]". Das ist ja als URL auch schon zu viel.

Danke für sachdienliche Hinweise :-)

Gruß
Christian

justme1968

#1
mit einem notify etwa so:chr:message.*audio.* { if( $EVENT =~ m/(http.*aac)/ ) { my $url = $1; system("sudo omxplayer $url &"); } }

im DEF bereich eingeben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chr2k

#2
Hallo Andre,

danke erstmal. Klappt aber leider nicht  :-\

Event Monitor sagt folgendes:
2015-12-17 17:14:09 yowsup chr chatstate: composing
2015-12-17 17:14:09 yowsup chr chatstate: paused
2015-12-17 17:14:10 yowsup chr chatstate: received
2015-12-17 17:14:10 yowsup chr message: [Media Type:audio, Size:8288, URL:https://mmi320.whatsapp.net/d/hK7xhFLUzhB-nFKSR4slNVZy31IABScaUCFYdg/ApbJ0U_oSsWtx7w8XoQnpRMt-ZKYancEy69burF_j1e4.aac]


Log dieses:
2015.12.17 17:14:10 3: WA_Sound_abspielen return value: Unknown command if(, try help.
Unknown command ("sudo, try help.
Unknown command }, try help.
2015.12.17 17:14:10 3: chr: received command: [Media Type:audio, Size:8288, URL:https://mmi320.whatsapp.net/d/hK7xhFLUzhB-nFKSR4slNVZy31IABScaUCFYdg/ApbJ0U_oSsWtx7w8XoQnpRMt-ZKYancEy69burF_j1e4.aac]
2015.12.17 17:14:10 3: WhatsApp: sending /message send 491xxxxxx2 'Unknown command [Media, try help.'


Kannst du damit was anfangen? Brauchst du noch andere Infos? Ich bin definitiv ratlos  :-[

justme1968

ich hatte oben zwei klammern vergessen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chr2k

Danke für die prompte Antwort. Klappt aber immer noch nicht.

Logfile:
2015.12.17 17:38:00 3: WA_Sound_abspielen return value: syntax error at (eval 26155) line 1, near "m/(http.*aac)/ { "
Can't use global $1 in "my" at (eval 26155) line 1, near "= $1"
Global symbol "$url" requires explicit package name at (eval 26155) line 1.
syntax error at (eval 26155) line 1, near "} }"

2015.12.17 17:38:00 3: chr: received command: [Media Type:audio, Size:11758, URL:https://mms877.whatsapp.net/d/rMQaebf4xWMH0TOtzgYKolZy5OgABScapV-VOQ/AuY5mUhYPFj66VrKcN0ERvUyW6rtMjA1Wu5vYXsTixnh.aac]
2015.12.17 17:38:00 3: WhatsApp: sending /message send 491xxxx92 'Unknown command [Media, try help.'


Wie kommt man eigentlich auf solche Codes? Ich raff da gar nichts  ::)

justme1968

arg... das kommt vom tippen auf dem handy. es hat noch eine klammer gefehlt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chr2k

Der absolute Hammer. Ich danke dir vielmals. Das nächste Bier (oder alternativ etwas alkoholfreies) geht auf mich!  8) :-*

chr2k

Kannst du mir auch noch bitte sagen, wie ich den obigen Code erweitern muss, wenn ich einen wietern Befehl (FHEM Befehl, oder auch system-Befehlt) nach dem abspielen noch ausführen möchte?


justme1968

system geht etwa so:system("(cmd1;cmd2;cmd3)&");

in dem du nach system noch fhem aufrufst:system("..."); fhem("..."); aber die beiden sind in deinem fall nicht synchronisiert da das abspielen mit dem & im hintergrund erfolgt. sonst würde dein fhem die ganze zeit blockieren.

wenn du nach dem abspielen etwas in fhem machen möchtest musst du aus der shell ebene wieder fhem aufrufen. etwa so:system("(cmd1;cmd2;fhem.pl 7072 \"set fhem ...\")&");

oder du steckst alles in ein shell script und rufst dann dieses mit system auf. das ist auf die dauer einfacher zu warten.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968