Eine Art Script-Steuerung kann man im Optionen-Menü aktivieren: CLI Zugang
Wenn dies aktiviert ist, kann man mit einem Telnet-Client sich zu PhonerLite an den Port 50600 verbinden:
telnet localhost 50600
Per Default ist die integrierte Script-Steuerung aktiv.
Man kann Kommandos wie "Help" eingeben oder ein Script aus einer Datei laden. Es gibt einige Einschränkungen wie fehlende "If"-Verschachtelung oder fehldene Schleifen. Letzteres kann man durch Laden einer Script-Datei aber umgehen - alle aktuellen Stati und Kommandos werden dadurch zurückgesetzt.
Das "Wait" und "If"-Kommando kann mehrere Bedingungen prüfen, welche kommasepariert angegeben werden. Es gilt hierbei die OR-Verknüpfung.
Command | Parameter | Comment |
Exit | disconnect from current CLI session | |
Quit | disconnect from current CLI session | |
CloseApp | close application | |
Else | if previous condition was not fullfilled | |
EndIf | terminate previous If statement | |
If | c | conditional execution depending on c. (see "Help If") |
Stop | discard all remaining script lines | |
Help | this help | |
Status | prints a list of current calls | |
HookOn | creates new call or answers incoming call | |
HookOff | disconnects call or rejects incoming call | |
Register | initiate new registration | |
CallWaitingOn | set call waiting to enabled | |
CallWaitingOff | set call waiting to disabled | |
ConferenceOn | enable conference mode | |
ConferenceOff | disable conference mode | |
DNDOn | enable "Do Not Disturb" | |
DNDOff | disable "Do Not Disturb" | |
HoldOn | set current call on hold | |
HoldOff | retrieve current call from hold | |
AnonymousOn | enable number suppression | |
AnonymousOff | disable number suppression | |
MicroOn | open the microphone sound device | |
MicroOff | close the microphone sound device | |
SpeakerOn | open the speaker sound device | |
SpeakerOff | close the speaker sound device | |
DesktopAlertOn | enable desktop notification for incoming calls | |
DesktopAlertOff | disable desktop notification for incoming calls | |
AutoHoldOn | enable auto hold if multiple calls exist | |
AutoHoldOff | disable auto hold if multiple calls exist | |
EchoOn | print all commands in script | |
EchoOff | don't print all commands in script | |
AutoAnswerOn | enable auto answer for incoming calls | |
AutoAnswerOff | disable auto answer for incoming calls | |
Transfer | [n] | ransfer current call to other call or new number n |
SetNumber | [n] | sets n as number for next call |
SetActive | id | sets the call with id as active call |
Digit | n | send DTMF n via active call |
ResetDigit | forget last received digit (DMTF) information | |
Wait | c | wait for condition c (see "Help Wait") |
Wave | f | play/send WAVE file f |
To [-F f] | send e-mail with optional attachment f | |
Telegram | ChatID [-F f] | send Telegramm message with optional attachment f |
Beep | Hz ms | play tone wit frequency Hz and duration ms |
Melody | n | play nth melody |
Joke | [l] | download joke, optional language l |
Say | s | transform s to wave (TTS) |
Tts | [i] | set/list available TTS engines |
Stt | [param] | set/list available STT engines |
ListenOn | experimental! start voice recognition (STT) from micro | |
ListenOff | experimental! stop voice recognition (STT) from micro | |
ListenFile | f | experimental! voice recognition (STT) from WAVE file f |
Ask | s | experimental! AI chat using Gemini asking s |
AskSay | s | experimental! AI chat using Gemini asking s, output via TTS |
ListenAskSayOn | experimental! start full audio AI chat using Gemini | |
ListenAskSayOff | experimental! stop full audio AI chat using Gemini | |
Set | [%n%=v] | assign variable n the value v or list all variables |
s | prints the string s | |
Load | f | load script lines from file f |
LoadCall | f | load script lines from file f for new call |
Record | [RemoteOnly] | start recording on actual call |
Exec | a | execute application a |
WaveIn | [i] | set/list available recording devices |
WaveOut | [i] | set/list available playback devices |
SetSilenceDuration | ms | set duration of silence in ms |
Pitch | n | pitch scale (0.1 - 1.0) |
Update | check for new available program update |
Wait c wait for condition c
If c conditional execution depending on c
Condition | Syntax |
c | 1*(time / call / state / direction / wave / digit / silence / ",") |
num | ("1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" / "0") |
time | 1*num |
call | [!]"HasCall" / "NewCall" / "EndCall" |
state | ([!]"StateIsConn" / "State=Conn" / "State!=Conn" / [!]"StateIsRing" / "State=Ring" / "State!=Ring" / [!]"StateIsActive" / "State=Active" / "State!=Active" / [!]"StateIsDisc" / "State=Disc" / "State!=Disc" / "StateChanged") |
direction | ([!]"IsIncoming" / [!]"IsOutgoing") |
wave | "WavePlayed" |
silence | "IsSilence" |
digit | ("DigitIs"num / "Digit="num) |
Dieses Beispiel zeigt, wie man einen ausgehenden Ruf aufbaut und eine Wave-Datei abspielen lässt, sobald der Ruf verbunden ist. Nach dem Abspielen wird der Ruf beendet:
If HasCall
Print Stop script due existing other call
Stop
EndIf
SetNumber 0123456789
HookOff
Wait 5,HasCall
If !HasCall
Print Stop script due no call could be created
HookOn
Stop
EndIf
Print Waiting for call is beeing answered within 30 seconds
Wait 30,!HasCall,StateIsActive
if !StateIsActive
Print Call not answered within 30 seconds
HookOn
Stop
EndIf
Print Waiting 2 seconds before playing wave file
Wait 2
Wave announcement.wav
Print Waiting for wave file is being played
Wait !StateIsActive,WavePlayed
Wait 1
HookOn
Man kann ein solches Script nicht in dieser formatierten Art manuell eingeben, da das "Wait"-Kommando die weitere Eingabe blockiert. Aus diesem Grund sollte ein Script in eine Datei gespeichertwerden (z.B. "script.txt") und durch folgendes Kommando geladen werden: "load script.txt".
Alternativ kann man obiges Script auch in einer Zeile darstellen, die Zeilen werden durch "&" getrennt:
If HasCall & Print Stop script due existing other call & Stop & EndIf & SetNumber 0123456789 & HookOff & Wait 5,HasCall & If !HasCall & Print Stop script due no call could be created & HookOn & Stop & EndIf & Print Waiting for call is beeing answered within 30 seconds & Wait 30,!HasCall,StateIsActive & if !StateIsActive & Print Call not answered within 30 seconds & HookOn & Stop & EndIf & Print Waiting 2 seconds before playing wave file & Wait 2 & Wave announcement.wav & Print Waiting for wave file is being played & Wait !StateIsActive,WavePlayed & Wait 1 & HookOn
Eine Übersicht über die installierten TTS-Sprachen erhält man per "tts"-Kommando. Der Eintrag mit dem Sternchen (*) davor ist die derzeit verwendete Sprache.
PL>tts
*0: Microsoft Hedda Desktop - German
1: Microsoft Zira Desktop - English (United States)
2: Microsoft Irina Desktop - Russian
Um beispielsweise auf Englisch umzuschalten, gibt man folgendes ein: "tts 1".
Um nun einen Text in Sprache zu wandeln, kann man beispielsweise folgendes eingeben: "say Guten Tag"
Wenn kein Ruf aktiv ist, erfolgt die Ausgabe lokal über den Lautsprecher, ansonsten wird das der Gegenstelle statt des Mikrofonsignals übertragen.
Wenn mehrere Rufe parallel bestehen, macht es Sinn pro Ruf ein eigenes Unter-Script laufen zu lassen. Man kann dies beispielsweise durch folgendes Verteilungs-Script erreichen:
Wait NewCall
LoadCall script_newcall.txt
Load %LOAD_FILE%
Per Default wird ein bereits existierender Ruf ins Halten gelegt, wenn ein weiterer Ruf angenommen wird. Möchte man dies vermeiden, macht es Sinn diesen Mechanismus zu deaktieren. Im folgenden Beispiel wird zusätzlich noch das Benachrichtigungsfenster für eingehende Rufe deaktiviert:
DesktopAlertOff
AutoHoldOff
Wait NewCall
LoadCall script_newmulticall.txt
Load %LOAD_FILE%
Bei Benutzung der 64-Bit Version von PhonerLite wird Audio Transkription unterstützt - durch Verwendung einer speziellen Version von Whisper.cpp. Keine externen Dienste im Internet werden benutzt, sondern die Auswertung erfolgt rein lokal auf dem PC. Per Eingabe von "stt" kann überprüft werden, ob die notwendigen Dateien vorhanden sind. Mittels "stt install" können die notwendigen Daten (erneut) heruntergeladen werden (~465 MB). Die Voreinstellung lädt das sogenannte "small" Modell herunter. Ist eine höhere Erkenunngsqualität erforderlich, kann per "stt install medium" ein ~1.42 GB großes Modell heruntergeladen werden. Momentan kann eine Audio-Datei (.wav) mittels dem "ListenFile" Kommando transkribiert werden. Abhängig von der Dateigröße und der zur Verfügung stehenden GPU kann es eine Weile dauern!. Das Ergebnis wird auf der Konsole ausgegeben und zusätzlich in der Variable %STT% gespeichert. Mittels den Kommandos "ListenOn" und später "ListenOff" erfolgt eine Art Live-Transkription. Wenn kein Anruf aktiv ist wird das Mikrofonsignal verwendet, ansonsten die empfangen Daten vom Netzwerk.
Die Sprache für die Transkription entspricht per Default der Sprache, welche für die PhonerLite Oberfläche eingestellt ist. Wenn eine andere Sprache verwendet werden soll, kann dies durch Angabe der Kurzform erfolgen, beispielsweise "stt 1 en" benutzt dann das "Small" Modell und Englisch als zu erkennende Sprache.
(C) Heiko Sommerfeldt