mrau91
Goto Top

Software um Telefonnummer auf einem Yealink Telefon mit dem PC wählen inkl. Wählhilfe

Edit:
Andere IP-Telefon Hersteller wie Snom und Grandstream haben auch Fernsteuerfunktionen implementiert (Modellabhängig).
Mit diesen Telefonen würde das Tool auch funktionieren, natürlich müsste vorher der Herstellerspezifische Befehlsaufruf im Quellcode angepasst werden.


Hallo zusammen,

seit ein paar Jahren bin ich fleißiger Leser dieses Forums und konnte auch schon ein paar Mal einen Nutzen daraus ziehen bzw. Hilfe/Unterstützung erfahren.
Kommentare habe ich bisher kaum verfasst, da es fast immer schon hilfreiche Kommentare gab und ich aus Zeitgründen leider nicht ständig aktiv sein kann.

Allerdings möchte ich auch etwas zum Forum beitragen und stelle euch hier meine im Titel genannte Lösung vor. Diese Lösung haben wir bei uns jetzt seit ca. 2 Jahren im Einsatz und läuft seither problemlos.

Wir setzen überwiegend auf Hardwaretelefone und diese stammen alle von der Firma Yealink.

Anforderung der Belegschaft war das wählen einer Telefonnummer mit dem PC, unter anderem:

  • Wählen aus Outlook
  • Wählen aus dem Webbrowser (Suchmaschine, online Telefonbuch...)
  • Wählen aus verschiedenen Anwendungen (ERP...)

Die Recherche nach einer vorhandenen Lösung hat mich nicht zufriedengestellt bzw. die Anforderungen nicht voll abgedeckt oder oversized.
Aus diesem Grund habe ich mir selbst eine kleine Software geschrieben, die alle Anforderungen abdeckt.
Erstellt mit AutoIt.

Mit drücken eines Hotkey’s (aufrufen des Programms mit Parameter) kann eine markierte Telefonnummer gewählt werden.
Ein Dialogfenster wird geöffnet mit Rückfrage und Anzeige der Nummer (bereinigt von Buchstaben und Sonderzeichen, „+“ wird in „00“ gewandelt)
„Ja“ ruft die Nummer an, „Nein“ setzt die Nummer in ein Textfeld zur Bearbeitung, „Abbrechen“ schließt das Dialogfenster.

Für das Verbinden mit Rücksprache sowie das Verbinden ohne Rücksprache gibt es ebenfalls entsprechende Hotkey’s.

Wir verwenden folgende Hotkeys, da diese mit einer Hand zu drücken sind, und eine logische Herleitung besitzen:
strg + alt + c		=> Nummer anrufen (c für call)
strg + alt + t		=> aktuelles Gespräch an Nummer weiterleiten mit Rücksprache (t für transfer)
strg + alt + b		=> aktuelles Gespräch an Nummer weiterleiten ohne Rücksprache (b für blind transfer)
Durch aufrufen des Tools über eine Verknüpfung oder einen entsprechenden Hotkey (aufrufen des Programms ohne Parameter) wird ein Dialogfenster mit leerem Textfeld zur Eingabe einer Nummer geöffnet. Unsere Mitarbeiter legen sich die Programmverknüpfung zusätzlich auf die Taskleiste.

Durch hinterlegen des Programms im Firefox (andere Browser nicht getestet) als Ziel für tel-Link Aufrufe, können diese anklickbaren Telefonnummern ebenfalls ans Telefon weitergeleitet werden, so wie beim Smartphone.

Für die Hotkeys verwende ich "PC-Welt HotKeys v1.7" welche portabel funktioniert und per Autostart gestartet wird

Die Ansteuerung des Telefons erfolgt über die in Yealink Telefonen eingebaute Fernsteuerfunktion per http get request über curl.exe vom Windows PC aus.

Um die Software zu verteilen habe ich ein kleines Setup script erstellt, dass die nötigen Komponenten kopiert, die IP-Adresse des Telefons abfragt und nach einem Neustart fragt. Das Programm funktioniert auch ohne Neustart, allerdings ist der "PC-Welt HotKeys v1.7" noch nicht gestartet. Dieser kann allerdings auch manuell gestartet werden.
Die oben genannten Hotkeys starten jeweils das Programm mit dem entsprechenden Parameter(c, t oder b):
z.B. C:\Call-Master\call-master.exe -c

Folgende Bestandteile werden von der Setup Datei kopiert:

call-master.exe = Programm zum Verarbeiten und senden der Telefonnummer an das Yealink Telefon
call-master.ico = Icon
call-master.lnk = Verknüpfung zum Programm (Wird dem Programmordner hinzugefügt)
pcwHotKeys.exe = Hotkeys Programm
pcwHotKeys.INI = ini-File des Hotkeys Programms
pcwHotkeys.hkd = Datei in der die Hotkeys gespeichert werden, enthält bereits die vordefinierten Hotkeys
Hotkeys_call-master.lnk = Verknüpfung zum Hotkeys Programm (Wird dem Autostart Ordner hinzugefügt)
telip.txt = In dieser Textdatei wird die IP-Adresse des Telefons abgelegt und beim Aufruf ausgelesen
curl.exe = Kommandozeilen-Programm zum Übertragen des http get requests


Folgend die Schrit für Schritt Anleitung:

Downloadlink
Der Quellcode folgt unten.
Wer bedenken mit dem Download hat, kann den Quellcode selbst compilieren (mit AutoIt).
Eine uninstall.exe ist ebenfalls im Download enthalten.

setup_call-master.exe ausführen.


Nötige Einstellungen im Yealink Telefon:
IP-Adresse des Telefons mit dem Browser öffnen.
Features - Remote Control
Action URI Allow IP List = "Zugelassene IP-Adressen"
Hier muss an jedem Telefon jeweils die IP-Adresse eingetragen werden, die einen Befehl absetzen darf.
Es kann auch das ganze Netzwerk zugelassen werden, dann ist die Einstellung bei jedem Telefon gleich: z.B. 192.168.1.*

Bei uns sind die Telefone in einem anderen VLAN wie die PC's. Hier regelt die Firewall (mit NAT) den Datenverkehr.
Somit ist bei uns nur die Firewall Schnittstellen IP-Adresse des Telefonnetzes bei allen Telefonen eingetragen.


Nötige Einstellungen am Yealink Telefon:
Beim ersten Anwenden der Fernsteuerung erscheint am Telefon die Rückfrage ob die Fernsteuerung zugelassen werden soll.
Diese Abfrage erscheint nur beim ersten Mal und muss bestätigt werden.


Zur Fernsteuerung der Telefone sind die Zugangsdaten notwendig. In dem Programm wird der Standard Benutzer (nicht der Admin) mit dem voreingestellten Standard Passwort verwendet. Wer diese geändert hat muss das entsprechend anpassen.


call-master.exe
#include <Constants.au3>

Send("^c") ;sende strg und c um zu kopieren  
$nummer = ClipGet() ;lese Zwischenablage aus
bearbeiten($nummer)

$f = FileOpen("C:\Call-Master\telip.txt") ;Telefon IP auslesen  
$ip = FileRead($f)
FileClose($f)

$i=0

If $CmdLine = 0 Then
   $i=1
   $nummer = InputBox( "Nummer eingeben", "Nummer eingeben die angerufen werden soll")  
   If $nummer = Not "" Then  
	  $befehl = "number"  
	  callsend($ip, $nummer, $befehl)
   EndIf
   Exit(0)
EndIf



If $CmdLine[1] = "-c" Then  
   $i=1
   hotkey($ip, $nummer, "number", "Folgende Nummer anrufen?")  
EndIf

If $CmdLine[1] = "-t" Then  
   $i=1
   hotkey($ip, $nummer, "ATrans", "Verbinden mit Rücksprache?")  
EndIf

If $CmdLine[1] = "-b" Then  
   $i=1
   hotkey($ip, $nummer, "BTrans", "Verbinden ohne Rücksprache?")  
EndIf

If $i = 0 Then
   $nummer = $CmdLine[1]
   bearbeiten($nummer)
   hotkey($ip, $nummer, "number", "Folgende Nummer anrufen?")  
EndIf



Func hotkey($ip, $nummer, $befehl, $frage)
   $chk = MsgBox(3, $frage, $nummer) ;frage ob Nummer gesendet werden soll
   If $chk = 6 Then ;wenn Abfrage positiv
	  callsend($ip, $nummer, $befehl)
   EndIf
   If $chk = 7 Then ;pruefe ob Abfrage positiv
	  $nummer = InputBox( "Nummer eingeben", "Nummer eingeben die angerufen werden soll", $nummer)  
	  If $nummer = Not "" Then  
		 callsend($ip, $nummer, $befehl)
	  EndIf
   EndIf
EndFunc



Func callsend($ip, $nummer, $befehl)
   bearbeiten($nummer)
   $aufruf = "http://user:user@" & $ip & "/servlet?key=" & $befehl & "=" & $nummer ;setze Link  
   ShellExecute( "curl.exe", $aufruf ) ;sende Aufruf an Telefon  
EndFunc

Func bearbeiten(ByRef $nummer)
   $nummer = StringRegExpReplace($nummer, '[+]', '00') ;ersetze ein + durch 00  
   $nummer = StringRegExpReplace($nummer, '[^0-9]', '') ;entferne alles ausser zahlen  
EndFunc


setup_call-master.exe
#include <Constants.au3>
#RequireAdmin

;Ip abfragen
$ip = InputBox( "IP Adresse", "IP Adresse des Yealink Telefons eingeben")  
If $ip = Not "" Then  
   $hFileOpen = FileOpen("telip.txt", 2 )  
   FileWrite($hFileOpen, $ip)
   FileClose($hFileOpen)
Else
   MsgBox(0, "Abbruch", "Abbruch durch Benutzer oder fehlerhafte Eingabe")  
   Exit(0)
EndIf

$fehler = "Ein Fehler ist währernd der Installation aufgetreten. Wenden Sie sich bitte an den Support. Fehlercode:"  
;Daten Kopieren
If Not FileCopy ( "pcwHotKeys.exe", "C:\Call-Master\pcwHotKeys.exe" , 1 + 8 )Then  
   $fehler = $fehler&"hk "  
EndIf
If Not FileCopy ( "pcwHotkeys.hkd", "C:\Call-Master\pcwHotkeys.hkd" , 1 + 8 )Then  
   $fehler = $fehler&"hkd "  
EndIf
If Not FileCopy ( "pcwHotKeys.INI", "C:\Call-Master\pcwHotKeys.INI" , 1 + 8 )Then  
   $fehler = $fehler&"hkini "  
EndIf
If Not FileCopy ( "telip.txt", "C:\Call-Master\telip.txt" , 1 + 8 )Then  
   $fehler = $fehler&"iptxt "  
EndIf
If Not FileCopy ( "call-master.exe", "C:\Call-Master\call-master.exe" , 1 + 8 )Then  
   $fehler = $fehler&"cm "  
EndIf
If Not FileCopy ( "Hotkeys_call-master.lnk", "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\Hotkeys_call-master.lnk" , 1 )Then  
   $fehler = $fehler&"hklnk "  
EndIf
If Not FileCopy ( "curl.exe", "C:\Windows\System32\curl.exe" , 1 )Then  
   $fehler = $fehler&"curl "  
EndIf
If Not FileCopy ( "call-master.ico", "C:\Call-Master\call-master.ico" , 1 )Then  
   $fehler = $fehler&"ico "  
EndIf
If Not FileCopy ( "call-master.lnk", "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\call-master.lnk" , 1 )Then  
   $fehler = $fehler&"cmlnk "  
EndIf

;ip Datei leeren
$hFileOpen = FileOpen("telip.txt", 2 )  
FileWrite($hFileOpen, "")  
FileClose($hFileOpen)

If $fehler = Not "Ein Fehler ist währernd der Installation aufgetreten. Wenden Sie sich bitte an den Support. Fehlercode:" Then  
   MsgBox(0, "Error", $fehler)  
   Exit(0)
EndIf



$chk = MsgBox(1, "Neustart", "Es wird ein Neustart benötigt um die volle Funktionalität von Call-Master zu gewährleisten")  
If $chk = 1 Then ;pruefe ob Abfrage positiv
Shutdown ( 2 )
EndIf


uninstall_call-master.exe
#include <Constants.au3>
#RequireAdmin

$chk = MsgBox(4, "Uninstall", "Soll Call-Master wirklich deinstalliert werden?")  
If $chk = 6 Then ;pruefe ob Abfrage positiv

ProcessClose ( "pcwHotKeys.exe" )  

$fehler = 0
If Not DirRemove ( "C:\Call-Master" , 1 ) Then  
   MsgBox(0, "Error", "Fehler beim Verzeichnis löschen. Wenden Sie sich bitte an den Support.")  
   $fehler = 1
EndIf
If Not FileDelete ( "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\Hotkeys_call-master.lnk" ) Then  
   MsgBox(0, "Error", "Fehler beim Verknüpfung löschen. Wenden Sie sich bitte an den Support.")  
   $fehler = 1
EndIf
If Not FileDelete ( "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\call-master.lnk" ) Then  
   MsgBox(0, "Error", "Fehler beim Verknüpfung löschen. Wenden Sie sich bitte an den Support.")  
   $fehler = 1
EndIf

If $fehler = Not 0 Then
   Exit(0)
EndIf

MsgBox(0, "Deinstallation erfolgreich", "Die Deinstallation von Call-Master wurde erfolgreich beendet.")  


EndIf

Gruß Michael

Content-Key: 634205

Url: https://administrator.de/contentid/634205

Printed on: April 16, 2024 at 06:04 o'clock

Member: StefanKittel
StefanKittel Dec 21, 2020 at 22:53:13 (UTC)
Goto Top
Find ich gut.

Wer weiß wann man sowas mal brauchen kann.
Denn Aufwendig ist das, wenn man erst mal weiß wie es geht, nicht.

Danke

Stefan
Member: Bingo61
Bingo61 Dec 23, 2020 at 11:37:42 (UTC)
Goto Top
Wir haben Unify Anlage, da gibts das Programm myPortal .
Member: themuck
themuck Jan 11, 2021 at 13:57:35 (UTC)
Goto Top
gerade mal die call-master.zip runtergeladen Chrome & Edge sagt mir "Virus Gefunden"...
Member: mrau91
mrau91 Jan 11, 2021 updated at 15:23:49 (UTC)
Goto Top
Zitat von @themuck:

gerade mal die call-master.zip runtergeladen Chrome & Edge sagt mir "Virus Gefunden"...

Meiner Erfahrung nach gibt es einige Antivieren Programme die generell Scripte die mit AutoIt compiliert sind als Schadsoftware erkennen.
Testweise habe ich ein Script erstelle, dass nur eine Message-Box anzeigt. Mit AutoIt compiliert und bei virustotal hochgeladen.
Ergebnis: 11 von 60 engines haben einen Virus erkannt.
Außerdem hat das Programm keine digitale Signatur, was ebenfalls ein Grund sein könnte.

Wenn du das Tool nutzen möchtest aber dem Download nicht vertraust, dann kannst du doch einfach den Quellcode selbst compilieren. Deshalb habe ich diesen ja veröffentlicht.

Gruß Michael
Member: themuck
themuck Jan 11, 2021 at 15:01:28 (UTC)
Goto Top
danke für die Info!

Grüße Malte
Member: bert-20
bert-20 Oct 04, 2021 at 17:45:03 (UTC)
Goto Top
Hallo Michael,

vielen Dank für Deinen Beitrag, denn das ist genau das, was ich suche. Perfekt !

Leider bekomme ich das Programm aber nicht zum Laufen:

Die Installation via "setup_call-master" funktionierte. Wenn ich dann aber das Programm start
und im Abfragefenster eine Telefonnumer eingebe erscheint die Meldung "curl.exe -Systemfehler, Das Programm kann nicht gestartet werden, da api-ms-win-core-processenvironment-l1-2-0.dll auf dem Computer fehlt".

Ich habe Win7-Pro-64bit.

Meine Recherchen nach der fehlenden dll, führten leider zu keinem Ergebnis.

Michael, hast Du für mich bitte einen Tipp ?

Vielen Dank !

/ bert
Member: mrau91
mrau91 Oct 05, 2021 at 10:08:57 (UTC)
Goto Top
Hallo bert,

generell solltest du dir Gedanken über einen Wechsel zu Win10 machen, da Win7 nicht mehr supported wird.

Ich habe dein Problem in einer VM nachgestellt und erhalte auf Win7 64bit den selben Fehler.
Im Download Archiv ist die "curl.exe" Version: 7.55.1 enthalten.
Ich habe mir eben eine aktuellere Version (7.77.0) heruntergeladen und getestet.
Mit dieser funktioniert es problemlos.
Lade sie dir hier oder irgendwo anders herunter und kopiere sie in den Ordner "C:\Call-Master".


Unabhängig von deinem Problem:
Mittlerweile hat mir der Defender bei Win10 die "call-master.exe" auch schon in Quarantäne gesteckt.
Damit diese nicht ständig weggesperrt werden sollte eine Ausnahme definiert werden.
Damit das Programm sauber funktioniert müssen folgende Dateien im Pfad "C:\Call-Master" liegen.

call-master.exe
call-master.ico
curl.exe
pcwHotKeys.exe
pcwHotkeys.hkd
pcwHotKeys.INI
telip.txt


Grüße Michael
Member: DanielG1974
DanielG1974 Nov 09, 2023 at 14:41:15 (UTC)
Goto Top
Vielen vielen Dank für dieses Programm!
Genau nach so etwas habe ich gesucht.

MfG

Daniel
Member: mrau91
mrau91 Nov 11, 2023 at 12:52:31 (UTC)
Goto Top
Freut mich. Habe zwischenzeitlich die ähnliche Funktionalität auch noch in eine Android App integriert. Nummer Wählen über Textfeld, Telefonbuch durchsuchen und auflegen.
photo_2023-11-11_11-23-21