Datev Erweiterung - "Plus" in Nummer wird nicht übernommen

TSE

Bronze Partner
Basic Certified
Mitglied seit
16. Dezember 2019
Beiträge
28
Hallo zusammen,

folgendes Problem:
Wenn ein Mandant von Datev über die 3CX Integration angerufen wird, wird das + von +49 im CTI-Client abgeschnitten. Somit habe ich keine gültige Rufnummer mehr und das Gespräch wird beendet.

Im Datev.log steht folgendes:
06.07.2020 11:09:58 - Making call to '+4982332149660' - Original destination='+49 (8233) 2149660'
06.07.2020 11:10:02 - CallStatusChanged - CallID='2583:1' - RealTimeCallID='2583' - Incoming='False' - OtherPartyNumber='4982332149660' - State='Dialing'
06.07.2020 11:10:02 - Call arrived - contactNumber='4982332149660' - callType='Outbound' - callId='2583'.
06.07.2020 11:10:02 - Outbound Call added to table.
06.07.2020 11:10:03 - CallStatusChanged - CallID='2583:1' - RealTimeCallID='2583' - Incoming='False' - OtherPartyNumber='4982332149660' - State='Ended'
06.07.2020 11:10:03 - Call ended - callType='Outbound' - callId='2583'.

Screenshot von ausgehenden Regeln:
1594028707764.png

Grüße
Tobias
 
Hallo,

bin der Meinung das hatten wir auch bei einem Kunden. Wir haben es dann so umgangen das wir die Nummern umformatiert haben auf 0049 bzw. der Kunde.

Beste Grüße!
 
  • Like
Reaktionen: wolfi
Hallo,
leider fehlen noch ein paar Informationen,wie zum Beispiel welches Telefon wird eingesetzt , tritt das Verhalten auch auf, wenn man das CTI in Softphone umwandelt und dann eine Rufnummer im Format +49 xxx wählt. So könnte man den Fehler eingrenzen und entsprechend Abhilfe schaffen.
Einfachste Lösung , ausgehende und eventuell eingehende Rufnummern (wie bitn es schrieb) umformatieren.
Dies kann man sowohl in den Regeln oder in den Trunkeinstellungen vornehmen(nur der Weg ist unterschiedlich und beim Trunk etwas schwieriger, da man das Konzept ersteinmal verstehen muss).
Zunächst würde ich es versuchen , in den ausgehenden Regeln eine 00 als Ziffern voranzustellen, da ja das "+" vergessen wird.
Sollte das nicht greifen , muss man eventuell am ausgehenden Schema im Trunk "handanlegen"
Hierzu ist es hilfreich , sich die entsprechende Anleitung in den Zertifizierungsvideos anzuschauen.
Gruß
 
Hallo,

bin gerade in das selbe Problem reingelaufen.. Ich verwendet SNOM Telefone.
Der weg wie die 3CX-App unter Windows das wählen umsetzt, ist, dass Sie einen HTTP Request an das Telefon schickt der virtuell die Tasten "drückt".. Die CTI Integration in der WebApp hingegen geht über SIP.

Nunja, der Request sieht so aus z.B.
Code:
http://10.11.0.106/command.htm?key=P1,10,3000;+;4;9;1;7;6;8;3;0;2;3;3;7;4;ENTER

und wird von der 3CX App verschickt. Wobei 10.11.0.106 die IP des SNOM Telefons ist.
Wie man sieht, ist da das "+" tatsächlich enthalten, allerdings wird es vom Telefon ignoriert, da es eben keine "+" Taste gibt.

Wenn man sich den Request anschaut, wird auch klar, warum die Telefone als ersten "Softkey" eine Leitung haben müssen, da "P1" einfach die erste programmierbare Taste ist, die in dem Request "gedrückt" wird.. Hat man hier eine BLF-Taste ruft die CTI halt den hinter dem BLF angelegte Nebenstelle an und schickt dann die eigentliche Nummer als DTMF Töne..

Als Lösung habe Ich jetzt einfach kackfrech in
"C:\ProgramData\3CXPhone for Windows\PhoneApp\DotNetScripts\DATEV\DatevPlugin.cs"
in der MakeCallSync Funktion
zwischen Zeile 69 und 70

C#:
destination = destination.Replace("+", "00");
eingefügt und das tut 1A :) die 3CX Applikation scheint das Plugin beim starten neu zu kompilieren automatisch auch.

Die ganze Funktion sieht dann so aus:
C#:
        CallStatus IDatevPlugin.MakeCallSync(string destination)
        {
            destination = destination.Replace("+", "00");
            return MakeCall(new ContactInfo("", destination, ContactTypes.Contact));
        }

Eigentlich ne coole Lösung mit dem kompilieren beim starten! Zudem kennen wir darüber auch die DATEV API, da wir den Source haben wie wir Sie bedienen können.. Man könnte also relativ easy selbst eine Telefonieintegration für DATEV schreiben.. Zudem sind da auch die APIs verwenden um auf die Stammdaten zuzugreifen.

Das ganze ist natürlich ein ekliger Hack und nicht von dauert, man sollte die nummer richtig parsen und nur das erste + ersetzen, sowie das ganze in dem Plugin.zip auf dem 3CX Server ändern und nicht nur in einer Installation.. Aber "works for me" :)

Ich betreibe die SNOM Telefone b.t.w. ohne Provisonierung druch die 3CX sondern habe meinen eigenen Provisionierungsdienst, der auch die Telefonbücher, Design, mehrere Accounts neuere Firmware u.s.w. drauf macht.

Überlege auch einfach den Request abzufangen oder im 3CX Client zu ändern, dass er die korrekte API auf dem Snom telefon benutzt und nicht die "Tasten" drückt.

Code:
http://phoneIP/command.htm?number=NUMBER&outgoing_uri=URI
ist eigentlich das was man aufrufen möchte, dann kann man auch den ersten Knopf wieder als BLF-Taste verwenden.

Siehe auch SNOM Doku: https://service.snom.com/display/wiki/Remote+phone+control
 
Habe mal reingeschaut, ob man das ändern kann, wie die Desktop App das Telefon anspricht.

Die Ansteuerung des Telefons passiert in der MyPhoneCTI.dll (das HTTP Request und das Zusammenbauen dessen), die Informationen wie das HTTP Request aussieht, steckt in einer .XML die vom Hauptprogramm übergeben wird beim initialisieren des CTI Objekts.
Das Hauptprogramm wiederum scheint diese templates vom lokalen 3CX Server zu laden. Es müsste sich also dort verändern lassen und dann würde es auch direkt in allen 3CX Windows App anders behandelt, da die sich ja die templates jedes mal neu vom Server laden.

Hier die relevante Stelle:
3cx_CTI_desktop_app_definitions.png

Die definitions scheinen in /myphone/cti_template.xml zu liegen.. Würde mich nicht wundern, wenn man die cti_template.xml auf dem Server findet irgendwo.

Hatte mich schon gefreut, dass das ganze dann auch mit Home-Office Arbeitsplätzen funktioniert mit Telefon am Home Office Arbeitsplatz + Verbindung über Internet (ohne VPN).. Aber die CTI Steuerung könnte ja so nicht aufs Telefon zugreifen. Muss ich wohl doch wieder VPN pro Telefon machen (die SNOM Telefone können einen OpenVPN Client auf dem Telefon laufen lassen).
Ich habe auch einen Check gesehen im CTI Code "bool supported = isIpLocal(....)".. Den muss man dann ggfs. auch rauspatchen.

Relevante Stelle aus dem XML:
cti_template.png
war scheinbar früher mal "Speaker" Button zuerst... Vermutlich lief das nicht mit allen Telefonen :(, ging wohl früher mal den Softkey P1 als BLF zu benutzen *denk*

Im XML sollte man, wenn man die nummer direkt möchte delim="" (leer setzen), da der delimiter zwischen die Zahlen gestellt wird beim zusammenbauen:
tokenizeDial.png
also
Code:
<cticommands delim="">
 
Zuletzt bearbeitet:
  • Like
Reaktionen: fxbastler

Statistik des Forums

Themen
44.751
Beiträge
233.643
Mitglieder
78.493
Neuestes Mitglied
arming