Anrufer ansagen lassen

  • 50 Antworten
  • Letztes Antwortdatum
Wenn man für die Ansage den Media-Stream wählt wird man nichts hören, da der Ringer-Stream die höchste Priorität hat.
Dementsprechend sollte die Ansage auch über den Ringer-Stream laufen.
 
Hmm ok werde morgen mal nen Screenshot Hochladen ist dann vielleicht was einfacher nach zu vollziehen.

Der ursprüngliche Beitrag von 22:27 Uhr wurde um 22:28 Uhr ergänzt:

Ah ok werde ich morgen mal probieren, danke schön
 
Bei manchen BT-Headsets funktioniert es garnicht. Die können nur ihre eigenen Tone.
 
Probier mal, die Einstellung bei 'Respect Audio Focus' zu ändern!
 
Danke Leute das War es habe den von on auf off gestellt und jetzt funktioniert es.

Was genau bedeutet diese Funktion eigentlich.
 
McGeiver schrieb:
Was genau bedeutet diese Funktion eigentlich.
Wenn ich das richtig verstanden habe, veranlasst der Android-Audiomanager, bei gesetztem Haken, Tasker den Audiofokus an andere Apps abzugeben.
Wenn z. B. das Telefon klingelt, hat das Vorrang vor dem Say-Befehl.
 
Ah ok, quasi muss er in 90% der Fälle dann deaktiviert sein.

Auf jedenfall klappt es jetzt, endlich :)
 
Darf ich mich auch mal dran hängen?

Hab das alles jetzt so eingestellt und bekomme beim Test nur eine Fehlermeldung:
TTS: failed to initialize

Das ist alles... :(

Wie krieg ich das denn gebacken?

Edit:
Man sollte TTS auch einschalten... :winki:

Funktioniert perfekt!

Vielen dank für den goilen Workflow. :)
 
Zuletzt bearbeitet von einem Moderator:
Sicher eine "dumme" Frage, aber ich stell sie mal:

Wie baue ich den Zähler ein um die Schleife zu unterbrechen? Habe "wait 2 sec" eingefügt, dann "goto aktion 1" und das ganze läuft natürlich so sogar weiter wenn das Telefonat schon beendet wurde ... möchte es auch nicht auf dreimal beschränken sondern auf die Dauer der Anrufzeit. Wenn jemand 5 Minuten klingeln lässt dann eben alle 2 Sekunden.

Und noch eine:

Kann ich einen gespeicherten Namen (Bsp. "Peter") auch ersetzen lassen durch "Peter nervt schon wieder" :) Wie immer schon mal danke im voraus, den "Danke-Button" habei ich jetzt aber auch ...
 
Marcus_Ddorf schrieb:
Sicher eine "dumme" Frage, aber ich stell sie mal:
Nein, die Frage ist nicht dumm

Marcus_Ddorf schrieb:
Wie baue ich den Zähler ein um die Schleife zu unterbrechen? Habe "wait 2 sec" eingefügt, dann "goto aktion 1" und das ganze läuft natürlich so sogar weiter wenn das Telefonat schon beendet wurde ... möchte es auch nicht auf dreimal beschränken sondern auf die Dauer der Anrufzeit. Wenn jemand 5 Minuten klingeln lässt dann eben alle 2 Sekunden.
.

Ein möglicher Weg wäre z. B. eine Szene einzubauen, die dann die Ansage abbricht.
Ich habe die Schleife mal auf 300 erhöht, aber eigentlich würde ich die Schleife ganz rausnehmen. Dafür war ich heute zu faul. :tongue:

Code:
SageName (93)
    A1:[COLOR=Red] Create Scene[/COLOR] [ Name:StoppIng Continue Task After Error:On ] 
    A2: Variable Set [ Name:%Count To:0 Do Maths:On Append:Off ] 
    A3: Variable Set [ Name:%Anrufername To:Udo Do Maths:Off Append:Off ] 
    A4: If [ %Anrufername ~ NULL ]
    A5: [COLOR=Red]Show Scene[/COLOR] [ Name:StoppIng Display As:Dialog,  Dim Behind Heavy  Horizontal Position:100 Vertical Position:100  Animation:System Show Exit  Button:On Continue Task Immediately:On ] 
    A6: Say [ Text:Anrufer  unbekannt Engine:Voice:com.svox.pico:deu-DEU  Stream:3 Pitch:5 Speed:5  Respect Audio Focus:On Network:Off Continue  Task Immediately:Off ] 
    A7: Variable Add [ Name:%Count Value:1 Wrap Around:0 ] 
    A8: If [ %Count < [COLOR=Lime]300[/COLOR] ]
    A9: Goto [ Type:Action Number Number:6 Label: ] 
    A10: End If 
    A11: Else 
    A12:[COLOR=Red] Show Scene[/COLOR] [ Name:StoppIng Display As:Dialog,  Dim Behind Heavy  Horizontal Position:100 Vertical Position:100  Animation:System Show Exit  Button:On Continue Task Immediately:On ] 
    A13: Say [  Text:%Anrufername Engine:Voice:com.svox.pico:deu-DEU  Stream:3 Pitch:5  Speed:5 Respect Audio Focus:On Network:Off Continue  Task Immediately:Off  ] 
    A14: Variable Add [ Name:%Count Value:1 Wrap Around:0 ] 
    A15: If [ %Count < [COLOR=Lime]300[/COLOR] ]
    A16: Goto [ Type:Action Number Number:13 Label: ] 
    A17: End If 
    A18: [COLOR=Red]Destroy Scene[/COLOR] [ Name:StoppIng ]  [SIZE=2][I](nur zur Sicherheit)[/I][/SIZE]
Für die Szene(ein Button nur) habe folgendes unter "Tap" definiert:
Code:
1. Stop
Task SageName

2. Shutup

3. Destroy Scene  [SIZE=2]
[/SIZE] Name: StoppIng
Marcus_Ddorf schrieb:
Und noch eine:
Kann ich einen gespeicherten Namen (Bsp. "Peter") auch ersetzen lassen durch "Peter nervt schon wieder" :) Wie immer schon mal danke im voraus, den "Danke-Button" habei ich jetzt aber auch ...

Auch mit If-Abfragen. Z. B:
If %Anrufername ~ Peter
Say "Peter nervt schon wieder"
Else
Say %Anrufername ....... usw.

Ist aber aufwendig, es sei denn, es sind nur 2-3 Namen. :cool2:
 
  • Danke
Reaktionen: Marcus_Ddorf
Du kannst aber auch den Kontakt gleich "Peter nervt schon wieder" nennen.

Und zu Deiner Schleife:

1. Kannst Du einen Exittask erstellen der "Kill SageName" enthält oder
2. In SageName die Variable %Klingel auf 1 setzen und im Exittask wieder auf 0. Und bei der Schleife die Bedingung if %Klingeln=1 setzen.

Was ich auch noch testen würde wäre ob ich die Klingellautstelle im Exittask für 5 sec. auf 0 setzen. Weil sonst Quatscht die Namensansage ins Gespräch rein.

Sowas wie:
%kls=%Klingellautstärke <- Wie die Variable wirklich heißt weiß ich jetzt nicht auswendig
%Klingellautstärke=0
wait 5 sec
%Klingellautstärke=%kls

Das könnte bei manchen Roms Probleme machen.
 
  • Danke
Reaktionen: Marcus_Ddorf
Habe mal wieder ein problem:

und zwar sagt der nur einmal den namen, danach wird der Ton zwar leiser vom Klingelton, aber die stimme kommt nicht mehr.
 
Erst mal vielen, vielen Dank für die Tips, habe den "Danke-Button" jetzt auch - und benutzt ! ;)

Leider habe ich folgendes, weiteres Problem: Die Vorschläge (Code), beginnend mt "A1 - A..." kann ich leider nicht lesen. Muss ich die kopieren und in Tasker importieren?

Gedachte hatte ich folgendes: "if" Gespräch angenommen ~ kill Task oder "beende Schleife" ...
 
Zuletzt bearbeitet:
Marcus_Ddorf schrieb:
Leider habe ich folgendes, weiteres Problem: Die Vorschläge (Code), beginnend mt "A1 - A..." kann ich leider nicht lesen. Muss ich die kopieren und in Tasker importieren?
Nein, die müssen schon von Hand eigeben werden.
A1 => Action 1 usw.

McGeiver schrieb:
und zwar sagt der nur einmal den namen, danach wird der Ton zwar leiser vom Klingelton, aber die stimme kommt nicht mehr.
Das kann einiges sein:
TTS abgestürzt.
Das hier: 'Respect Audio Focus' (siehe Cramu's Beitrag)
Volume media verstellt... usw.

Einfach mal ein Probetask erstellen mit einem Say-Befehl. Geht der?
 
Ich muss mich noch mal hier mit einer Frage beteiligen... :confused2:

Folgendes Script:

Code:
Profile:
[Telefon läutet] + [BT verbunden]

Task: Ansage_Name
A1. Variable setzen: %Count Zu 0
A2. Variable setzen: Name: %Anrufername zu %CNAME
A3. If: %Anrufername !gesetzt
    A4. Vorlesen: Text %Anrufername unbekannt, Stimme: com.google.android.tts:deu-deu, Stream: Medien, Tonhöhe:5, Geschwindigkeit:5
    A5. Variable Addiere: %Count, Wert:1
    A6. If: %Count <3
      A7. Goto Aktion: Aktion Nummer, Nummer:3
    A8. End If
A9. Else
    A10. Vorlesen: Text: %Anrufername ruft an, Maschine: Stimme, com.google.android.tts:deu-deu, Stream: Medien, Tonhöhe:%; gESCHWINDIGKEIT.%
    A11. Variable Addiere: Name: Count, Wert: 1, Ober grenze:0
    A12. If: %Count <3
      A13. Goto Aktion: Aktion Nummer, Nummer:10
    A14. End If
A15. End If

Was passiert hier:
Ich benutze die Ansage also nur im Auto. Die Ansage kommt auch schön über die BT-Anlage, nur leider kriege ich es nicht hin, dass die Ansage aufhört, wenn ich den Ruf annehme, bevor die Tante mir das 3x erzählt hat.
Ja, ich könnte das auch auf 2x einkürzen, aber es wäre mir einfach lieber, wenn die Tante einfach nur die Ansage abbricht, sobald ich das Telefonat annehme.

Mein Gedanke war, einen Seitenausgang aus den If-Schleifen mit

z.B.: If: Anruf angenommen = True, then Stop, else End If

nach jedem Durchlauf einzufügen, aber ich finde irgendwie keine Lösung dafür...

Könnt ihr mir da mal bitte aufs Pferd helfen?
 
Zuletzt bearbeitet von einem Moderator:
Ich würde folgendes probieren:

Bei der If-Funktion noch die Bedingung hinzufügen, dass %CTIME nicht gesetzt ist.

%CTIME = time of the current (if a call is in progress) or last call received, steht auf der Tasker-Website
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Gelöschtes Mitglied 342348
Ahhh.... %CTIME habe ich irgendwie übersehen.
das macht natürlich Sinn, das mit in die Eingangs-Schleife als Bedingung zu packen. Somit würde dann bei jedem "Return" die Bedingung abgefragt und bei "gesetzt" dann ausschalten.
Schau ich mir nachher mal an, sollte aber recht einfach sein.
 
Du könntest auch den 'Phone Offhook'-Event verwenden, um den Task abzubrechen.
 
  • Danke
Reaktionen: Gelöschtes Mitglied 342348
Hmmm....

Hab da noch einen Denkfehler. Gedacht war das eigentlich für meine MHL-Verbindung mit dem AppRadio. Mal sehen, ob ich das nicht als Klingelton rüber schicken kann... Morgen geht es da weiter.

Was ich nämlich nicht bedacht hatte ist, dass die Telefon-App auf dem Radio die anderen Quellen stumm schaltet. :cool2:

Die Tante spricht also nicht, wenn ein Anruf rein kommt, jedoch dann, wenn ich den Task manuell anstoße, wenn das Telefon mit dem Radio verbunden ist. :huh:

So habe ich das gelöst:

Als Schalter, um zu erkennen, ob das Gespräch aktiv ist ist, oder nicht, habe ich 2 Profile eingebaut...

Code:
Profil: Telefonat angenommen

Status: Ereignis: Telefonat angenommen

Task: Offhook

A1. Variable setzen: Name: %INCALL zu 1
Code:
Profil: Telefon aufgelegt

Status: Ereignis: Telefon leerlauf

Task: Phone aufgelegt

A1. Variable setzen: Name: %INCALL zu 0
Dazu dann das Hauptscript:

Code:
Profile: Anrufername
Status: [Telefon läutet] + [BT verbunden] 

Task: Ansage_Name 

A1. Variable setzen: %Count Zu 0
A2. Variable setzen: Name: %Anrufername zu %CNAME
A3. Warte: Sekunden:1
A4. Taste: Taste Leiser
A5.  If: %Anrufername !gesetzt
A6.       If: %INCALL <1
A8.           Warte: MS250
A7.           Vorlesen: Text %Anrufername unbekannt, Stimme: com.google.android.tts:deu-deu, Stream: Medien, Tonhöhe:5, Geschwindigkeit:5 
A8.           Variable Addiere: %Count, Wert:1 
A9.           If: %Count <5 
A10.               Goto Aktion: Aktion Nummer, Nummer:6
A11.          Else
A12.               Goto Aktion: Aktion Nummer, Nummer:31
A13.          End If 
A14.     Else
A15.          Goto Aktion: Aktion Nummer, Nummer:31
A16.     End if
A17. Else
A18.     If: %INCALL <1
A19.        Warte: MS250
A20.        Vorlesen: Text: %Anrufername ruft an, Maschine: Stimme, com.google.android.tts:deu-deu, Stream: Medien, Tonhöhe:%; gESCHWINDIGKEIT.% 
A21.        Variable Addiere: Name: Count, Wert: 1, Obergrenze:0 
A22.        If: %Count <3 
A23.           Goto Aktion: Aktion Nummer, Nummer:18
A24.        Else
A25.           Goto Aktion: Aktion Nummer, Nummer:31 
A26.        End If
A27.     Else
A28.        Goto Aktion: Aktion Nummer, Nummer:31 
A29.     End If
A30. End If
A31. Taste: Taste Lauter
Erklärung:
Durch die beiden Profile: 'Telefonat aufgelegt' und 'Telefonat angenommen' wird die Variable %INCALL gesetzt, wenn das Telefon klingelt.

Das Hauptprofil wird aktiv, wenn das Phone klingelt und per BT mit dem AppRadio verbunden ist.
Das Vorlesen des Namens stoppt, wenn die Variable %INCALL auf 1 geht, oder wenn die Counter-Schleife die voreingestellte Wiederholungszahl erreicht hat.
Vor dem Vorlesen schalte ich den Klingelton ab, um den Namen verstehen zu können, falls der Klingelton laut ist. Aus jeder Schleife gibt es einen Ausgang ans Ende des Scripte, in dem die Klingel-Lautstärke wieder hoch gesetzt wird.
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

0
Antworten
4
Aufrufe
278
0karsten
0
S
Antworten
9
Aufrufe
429
holms
holms
H
Antworten
0
Aufrufe
287
Horgul123
H
Zurück
Oben Unten