PhonerLite logo

CLI - Command Line Interface

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.

CLI

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.

Kommandos/Syntax

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
Mail 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
Print 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

Bedingungen

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)

Beispiel

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 
		  
		

Text-zu-Sprache (TTS)

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.

Unter-Script pro Ruf

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%
            
		

Sprache-zu-Text (STT)

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