JFritz Extension: Den Anrufmonitor sprechen lassen ;-)

ok... bei mir wird nur die vorgestelle 0 als Ziffer vorgelesen. Alles andere ist die 9milliarden......

Der Rest funktioniert auch bei mir. (zumindest mit speak) siehe erstes PS ;)
 
Vielleicht hilft es, die Nummer mit Blanks zu ergänzen, also aus "123456" eine "1 2 3 4 5 6" zu machen?

Happy computing!
R@iner
 
nja aber man nimmt ja %number und wüsst net wie man da spaces einfügt :/
 
Hallo zusammen,

ich hatte auch das Problem bei der Sprachausgabe, dass die Telefonnummern als Zahlen und nicht als Ziffen vorgelesen werden.
Vielleicht hilft dem ein oder anderen das kleine Skript, das ich dazu erstellt habe.
Es war mein erster Kontakt mit der Windows Powershell die eine zwar etwas ungewohnte, aber sehr leistungsfähige Skriptsprache zur Verfügung stellt.
Daher ist es sicher auch noch eine Baustelle und eher dazu gedacht, dass man noch etwas daran feilt um es für die eigenen Bedürfnisse anzupassen.

Der Aufruf aus JFritz lautet:

Code:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "d:\_daten\anruf02.ps1" "%Number %Called %Name"

%Name wird im Skript zur Zeit aber noch nicht ausgewertet.

Hier das Skript anruf02.ps1:


Code:
#args ist ein Array welches die Kommandozeilenparameter enthält


$Von=$args[0];
$AnNummer=$args[1];
$pVonName=$args[2];



function InsertBlanks($Number)
{
    $result="";
    $Ziffern="0123456789";
    $Number=[String] $Number;
 
    for ($i=0; $i -le $Number.Length-1; $i++) {

        $a=$Number.substring($i,1);
    
        $result+=$a;
        if ($Ziffern.contains($a)) {
            $result = $result +" ";
        }
    }
    $result;
}

$erg="";
$VonName="Unbekannt";


#hier gibt es eine Sonderbehandlung für bekannte Anrufer
if ($Von -ne "Unbekannt") {
    $KnownNames="Kurt","Chef","Christel","Praxis Dr.xxxx";
    $KnownNumbers="012324324","026323123213","01515343424","23442";

    for ($i=0; $i -le $KnownNumbers.Length-1; $i++) {
         $a0=[String] $args[0];
        if ($a0.contains($KnownNumbers[$i])) {
            $VonName=$KnownNames[$i];
            break;
        }
    }
}
  
if ($VonName -eq "Unbekannt") {
    $Von=InsertBlanks($Von);
}
else
{
    $Von=$VonName;
}

$An="keine Ahnung";

#hier werden die eigenen ISDN-Nummern ausgewertet
switch ($AnNummer)
{
    "910000" {$An=" für Paul"}
    "910001" {$An=" an Fax"}
    "910002" {$An=" für Susanne"}
    "900003" {$An=" für Peter"}
}

#hier ist der Aufruf der Sprachausgabe
$v = new-object -com SAPI.SpVoice
$v.speak("Anruf von " + $Von +  $An) | out-null
$v = $null

#ich protokolliere mir die Anrufe noch in eine Datei:
$Datum=Get-Date;
$Datum.ToString("dd.MM.yyyy") + " - " + $Datum.ToString("HH:mm") + ": Anruf von " + $Von + " für " + $An + " (" + $args + ")" + " VonName:" + $pVonName | Out-File d:\Anrufe.txt -append;
Hier ist noch eine ungetestete Version (nur aus obiger zurückgebaut) für diejenigen, die nur Leerzeichen in die Nummern einfügen möchten...

Code:
#args ist ein Array welches die Kommandozeilenparameter enthält

$Von=$args[0];
$AnNummer=$args[1];
$pVonName=$args[2];

function InsertBlanks($Number)
{
    $result="";
    $Ziffern="0123456789";
    $Number=[String] $Number;
 
    for ($i=0; $i -le $Number.Length-1; $i++) {

        $a=$Number.substring($i,1);
    
        $result+=$a;
        if ($Ziffern.contains($a)) {
            $result = $result +" ";
        }
    }
    $result;
}

$Von=InsertBlanks($Von);
$Von=InsertBlanks($AnNummer);

#hier ist der Aufruf der Sprachausgabe
$v = new-object -com SAPI.SpVoice
$v.speak("Anruf von " + $Von + " für " + $AnNummer) | out-null
$v = $null
Bei Vista/Windows 7 muss ggf. die Berechtigung für das Ausführen der Skripts gesetzt werden. Man kann es ja auf dem Prompt aufrufen und sieht ob es läuft oder nicht...

@robo_rap: danke für die nette Begrüßung und den Hinweis...
 
Zuletzt bearbeitet:
Hallo WatIP,

willkommen im Forum. Und dann auch noch mit einem sehr guten ersten Beitrag.
Du kannst Quellcode mit den [ code]-Tags (ohne Space zwischen [ und c) schöner darstellen, dann bleiben auch die Einrückungen erhalten. Eventuell editierst du deinen Post wieder und benutzt diese code-Tags.

Viele Grüße und vielen Dank für den Beitrag.
Robert
 
Und wer das Ganze in einer normalen Batch machen will:

Code:
@echo off & setlocal enableextensions

set OldNumber=017187654321

call :AddBlank "%OldNumber%" NewNumber

echo.%OldNumber%
echo.
echo.%NewNumber%
echo.
echo.
pause
goto :EOF
endlocal & goto :EOF

::=====================================================================
:: Subroutine "AddBlank": 
::   Fuegt hinter jedes Zeichen ein Blank an, außer am letzten Zeichen
::=====================================================================
:AddBlank oldstring newstring
setlocal enableextensions enabledelayedexpansion
if "%~1"=="" (endlocal & set "%2=" & goto :EOF)
set OldS=%~1
set NewS=
set Z=
for /L %%c in (0,1,255) do (
  set Z=!OldS:~%%c,1!
  if defined Z set NewS=!NewS!!Z! 
)
set NewS=%NewS:~0,-1%
endlocal & set "%2=%NewS%" & goto :EOF
Happy computing!
R@iner
 
was müsste man denn der bat übergeben? (also von Jffritz aus?))

Vielen Dank schon mal für dein coding :)
 
Wie sieht deine Batch denn bis jetzt aus?

Happy computing!
R@iner
 
nja derzeit hab ich sie noch einfach so kopiert. (muss zugeben ich hab nicht groß reingeguckt ;) )

Ich muss der Batch noch iwie die nummer übergeben. und in der Komandozeile muss ich noch die Sprache aktivieren. ich weiß net ob das möglich ist. Ich dachte intuitiv an so einen aufruf:
D:\Programme\speak.exe "Anruf von %Name mit der Rufnummer %Number%D:\Fritz.box\Anrufmonitor.bat auf dem Telefon %Called" "Ein Anruf von %Name (%Number ) auf %Called" -x0

das er praktisch nur die Nummer an die bat übergibt die blanks einführt und wieder zurückgibt. So könnte er auf das Telefonbuch etc von JFritz zugreifen und müsste net erst in der PS gespeichert werden.
So dacht ich erst ist dein PS aufgebaut. Aber so wie ich das sehe willst du mit der PS ja alles machen.

So hab ich das zumindest verstanden /gedacht?

Viele Grüße
Iron
 
Sorry, aus deinem Geschreibsel werd ich nicht schlau! :bahnhof:

Und was bitte ist PS?

Happy computing!
R@iner
 
PS = Powershell

Lässt dein Skript das Zeug auch vorlesen oder fügt dieser nur blanks ein?
 
Das PowerShell-Script stammt nicht von mir. Das ist von WatIP aus Posting 64: Klick mich

Mein Beispiel aus Posting 66 zeigt nur, wie man in einer normalen Batch einen Nummern-String umwandelt, sodass hinter jeder Zahl noch ein Blank angefügt wird. Meine SubRoutine kannste aber in deine Batch einbauen.

Wie sieht denn deine bisherige Batch und der dazugehörige Eintrag in den JFritz-Einstellungen aus?

Happy computing!
R@iner
 
@Irondust: das PowerShell-Skript erledigt auch die Sprachausgabe (ganz unten, $v ...). Es wird die standardmäßig eingestellte Stimme (bei mir Steffi) genutzt. Ich erledige halt gerne das meiste im Skript da ich dort am meisten Einfluss habe. Speak.exe wird von mir nicht genutzt.
 
danke erstmal ;)

ich habe nun die KommandoZeile eingefügt:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "D:\Fritz.box\Anrufmonitor.ps1" "%Number %Called %Name"

und in der Anrufmonitor.ps1 steht die 2te Möglichkeite mit den blanks.
allerdings bekomm ich bei anrufen nur ein "ring" aber keine Sprachausgabe?
 
Steffi auch installiert, also RSSolo4German.zip?

Happy computing!
R@iner
 
>Steffi auch installiert, also RSSolo4German.zip?
$v = new-object -com SAPI.SpVoice
$v.speak("Hallo Welt") | out-null
$v = $null

Hallo,

JA, habe jetzt mal Steffi getestet, weil ich die Witzige Ausgabe von euch
mal Testen wollte, es sind ja nur ein paar Zeilen Code die ich mal mit einem
Commando Zeilen Compiler hier mal erstellt habe als SpeakCMD.exe

Und der Aufruf: SpeakCMD.exe Du Esel, 25, von 250

klappt auch, und Ratet mal wie die Zahl gesprochen wird.

Gruß Erwin ;)

:-Ö
 

Anhänge

  • SpeakCMD.zip
    14.6 KB · Aufrufe: 31
Hallo Erwin,

sehr gut! :)

Aber mach doch bitte noch nen Switch dazu, daß er die Zahlen auch normal spricht, dann kann man es auch für andere Dinge hernehmen. So kling das nämlich blöd:

speakcmd Herr Meier 017187654321 hat um 14:25 Uhr angerufen

Happy computing!
R@iner
 
die datei ist perfekt :)

es klappt vorzulesen liest es alleine vor PERFEKT!

Das einzige: kann man die Geschwindigkeit bei den Ziffern erhöhen? weil ansonsten braucht der ewig um das vorzulesen :( .

Nochmal TOP!
 
Hallo,

Ich wollte ja nur mal die Steffi Testen, und habe es jetzt Nochmal Versucht
per Anhang, ich hoffe das ist besser, da wird eine Zahl als 00 11 22 33 4 usw.
Gesprochen.

Das hier:
speakcmd Herr Meier 017187654321 hat um 14:25 Uhr angerufen
als
speakcmd Herr Meier 01 71 87 65 43 21 hat um 14:25 Uhr angerufen
oder
speakcmd Herr Meier +4917187654321 hat um 14:25 Uhr angerufen
als
speakcmd Herr Meier 00 49 17 18 76 54 32 1 hat um 14:25 Uhr angerufen

Gruß Erwin ;)
 

Anhänge

  • SpeakCMD.zip
    14.9 KB · Aufrufe: 21
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.