Machka Posted March 26, 2015 #1 Share Posted March 26, 2015 Hallo, wir möchten ein Callrouting realisieren. Hierbei ist es notwendig, dass bei Anruf bei einer bestimmten Gruppe der Anrufer (CallingNumber) ausgelesen und eine XML-Datei aufgerufen wird, die dieser Rufnummer zugeordnet ist. Das würde bedeuten: Benutzer a ruft Gruppe A an, also wird aA.xml aufgerufen. Wie könnte man das realisieren, hat da jemand eine Idee? Danke im Voraus für Eure Bemühungen. Ach ja: es geht um eine nicht mehr supported Swyx 7. lG ENrico Link to comment Share on other sites More sharing options...
Tom Wellige Posted March 26, 2015 #2 Share Posted March 26, 2015 Was meinst du genau mit "also wird aA.xml aufgerufen" ? Wer soll die Datei öffnen? Wo soll sie geöffnet werden? Im Call Routing auf dem Server oder auf dem Client von Benutzer A? Grundsätzlich ist es überhaupt kein Problem vom Call Routing aus eine XML (Text Datei) zu öffnen und einzulesen / auszuwerten. Aber ich bin mir gerade nicht sicher, was Du genau versuchst zu realiseren. Link to comment Share on other sites More sharing options...
Machka Posted March 31, 2015 Author #3 Share Posted March 31, 2015 Hallo Tom, Es soll folgendermaßen ablaufen: Notrufsäule ist als Benutzer angemeldet und kann 3 Gruppenrufnummern intern anwählen . Notrufgruppe, Inforufgruppe, Behindertenrufgruppe. Je nachdem welche Gruppe angerufen wird, soll das Script die CallingNumber der Notrufsäule ermitteln, mit der Gruppenrufnummer kombinieren und das dann als Dateiname für eine xml-Datei an eine exe-Datei übergeben. Rufnummer NiS beispielsweise 330331, Rufnummer Notrufgruppe 2000001 Inforufgruppe 2000002 Behindertenruf 200003 aufgerufen werden soll dann also bei Anruf der Notrufgruppe durch die Säule 1 "Speicherort\AlarmAdapter.Cmd.exe 330331200001.xml" Beispiel Säule 2 330332 Notruf "Speicherort\AlarmAdapter.Cmd.exe 330332200001.xml" Beispiel Säule 2 Behindertenruf "Speicherort\AlarmAdapter.Cmd.exe 330332200003.xml" lG Enrico Link to comment Share on other sites More sharing options...
Tom Wellige Posted March 31, 2015 #4 Share Posted March 31, 2015 Ganz grundsätzlich haben Gruppen kein Call Routing in der SwyxWare. Um der Gruppe trotzdem ein Call Routing zu geben, richtet man einen Dummy Benutzer ein dem man die gewünschten Gruppen Nummer (sichtbar im Telefonbuch) gibt. Dieses Call Routing macht dann das was zu tun ist, und stellt am Ende dann auf die Gruppe zu (auf eine Gruppen Nummer, die nicht im Telefon aufgelistet ist). Im Call Routing kann jetzt auf PBXCall.CalledPartyNumber geprüft werden. Das kann dann in etwa so aussehen: Die Funktion von hier LaunchCmd in den Start Block kopieren Ebenso den nachfolgenden VBSkript Code dort hinein kopieren (egal ob vor oder nach den vorhandenen Code) Im GSE nach dem Start Block einen Durchstellen Block setzen und als Ziel =sHiddenNumber eintrangen Dim sHiddenNumber Dim sXML sXML = "" select case PBXCall.CalledPartyNumber case "2000001" sXML = "Speicherort\AlarmAdapter.Cmd.exe " & PBXCall.CallingPartyNumber & "200001.xml" sHiddenNumber = "8000001" case "2000002" sXML = "Speicherort\AlarmAdapter.Cmd.exe " & PBXCall.CallingPartyNumber & "200002.xml" sHiddenNumber = "8000002" case "2000003" sXML = "Speicherort\AlarmAdapter.Cmd.exe " & PBXCall.CallingPartyNumber & "200003.xml" sHiddenNumber = "8000003" end select if sXML <> "" then LaunchCmd xXML end if Link to comment Share on other sites More sharing options...
Machka Posted April 3, 2015 Author #5 Share Posted April 3, 2015 Hallo Tom, danke für diese Anleitung, ich werde sie am Dienstag direkt ausprobieren. Herzlichen Dank im Voraus und ich werde berichten. Frohe Ostern! Link to comment Share on other sites More sharing options...
Machka Posted April 7, 2015 Author #6 Share Posted April 7, 2015 Hallo Tom, mich würde noch brennend interessieren, wozu DAS hier dient..... sHiddenNumber = "8000003" woher kommt die Nummer mit der 8? ich erkenne zwar das Muster 00001, 00002 und 00003, aber das mit der 8 ?!?! außerdem sehe ich, dass wir bei DIESEM Kunden doch keine Gruppen, sondern tatsächlich und ausschließlich einzelne Callrouting-Benutzer angelegt haben... Behindertennotruf = 49967 Inforuf=49968 Notruf =49969 also wäre zumindest im Script abzuändern:Dim sHiddenNumberDim sXML sXML = "" select case PBXCall.CalledPartyNumber case "49967"sXML = "Speicherort\AlarmAdapter.Cmd.exe " & PBXCall.CallingPartyNumber & "49967.xml"sHiddenNumber = "849967" case "49968"sXML = "Speicherort\AlarmAdapter.Cmd.exe " & PBXCall.CallingPartyNumber & "49968.xml"sHiddenNumber = "849968" case "49969"sXML = "Speicherort\AlarmAdapter.Cmd.exe " & PBXCall.CallingPartyNumber & "49969.xml"sHiddenNumber = "849969" end select if sXML <> "" thenLaunchCmd sXMLend if Link to comment Share on other sites More sharing options...
Tom Wellige Posted April 7, 2015 #7 Share Posted April 7, 2015 Die versteckten Nummern mit 8 beginnend sind einfache interne Nummern, die den Gruppen zugewiesen werden, allerdings nicht im Telefonbuch auftauchen sollen. Mit der 8 an Anfang wollte ich nur einen Nummernbereich für die Gruppen Nummern auswählen, der noch frei ist. Jede andere interne Nummer tut es genau so. Link to comment Share on other sites More sharing options...
Machka Posted April 7, 2015 Author #8 Share Posted April 7, 2015 okay, danke, das ist schon verständlicher für mich .... die Gruppen entfallen! Die irrtümlich als Gruppen bezeichneten Werte werden bei diesem Kunden nun einzelne CallroutingNutzer. Nun muss ich das quasi neu anpassen, wie muss ich das denn dann nun mit den neuen Gegebenheiten anpassen, dass ein Anruf auf den Callrouting-Benutzer ankommt und dann dort die XML aufruft? die korrekten (neuen) Rufnummern sind da Behindertennotruf = 49967 Inforuf=49968 Notruf =49969 sorry für dieses Hin und Her .... war eine kurzfristige Entscheidung lG Enrico Link to comment Share on other sites More sharing options...
Tom Wellige Posted April 8, 2015 #9 Share Posted April 8, 2015 Es kann nach wie vor den einen Dummy Benutzer geben, der alle Notrufnummern hat und den Ruf dann weiter leitet. Die einzelnen Benutzer haben dann selbstverständlich andere Nummern. In diesem Fall müssen im Skript oben nur die Zielrufnummern (auf die Benutzer) angepasst werden. Link to comment Share on other sites More sharing options...
Machka Posted April 9, 2015 Author #10 Share Posted April 9, 2015 Hallo Tom, danke für die Hilfe und die vielen Hinweise. Ich habe nun das Script versucht in folgende Variante zu ändern.... Callrouting-Benutzer Notruf, Telefonnummer 49969 NIS 2: Telefonnummer 49961 aufzurufende Datei: neXus.IO.Synergy.AlarmAdapter.Cmd.exe aufzurufende xml: 4996149969.xml Speicherorte: C:\CallAdapter\4996149969.xml C:\CallAdapter\AlarmAdapter.Cmd\neXus.IO.Synergy.AlarmAdapter.Cmd.exe Aufruf der Datei muss am Ende so sein: C:\CallAdapter\AlarmAdapter.Cmd\neXus.IO.Synergy.AlarmAdapter.Cmd.exe 4996149969.xml Was stimmt also an diesem Script nicht, wenn es keine Switch-Cases geben muss, weil ich dem jweiligen Benutzer nur sage, dass er die entsprechende xml aufrufen soll? Wo müsste ich die "vermisste Function" setzen, die im Log erwartet wird? Function CallExternalApp(ByVal sApp) PBXScript.OutputTrace("------------>CallExternalApp ( " & sApp & " )") Dim objShell Set objShell = CreateObject("WScript.Shell") PBXScript.OutputTrace("Starting external application") objShell.Run(sApp) PBXScript.OutputTrace("external application stopped") objShell=Nothing PBXScript.OutputTrace("<-----CallExternalApp") End Funtion Dim sXML sXML="" sXml="C:\CallAdapter\AlarmAdapter.Cmd\neXus.IO.Synergy.AlarmAdapter.Cmd.exe " & PBXCall.CallingPartyNumber & "49969.xml" if sXML <> "" then CallExternalApp sXML endif 09 15:51:38.049 000e6c Info SrvScCache 00639858 000000be SScriptFCache::LoadFile () Done loading (Success) ruleCALLROUTINGXMLleer.vbs', scope User 09 15:51:38.050 000e6c Info SrvScrAPI 08D69028 000000be SScriptLoader::LoadScript () Script loading took 0.038s 09 15:51:38.056 000e1c *Err SrvScrAPI 006B6260 000000be SPBXScriptSite::OnScriptError () ~Code: 0 ~Src: Kompilierungsfehler in Microsoft VBScript ~Desc: 'Function' erwartet ~RetVal: 800a03f7 ~Line: 16262 ~Column: 4 ~Source code: ~End Funtion ~ ^ error position 09 15:51:38.057 000e1c *Err SrvScrAPI 08BCCE48 000000be SH::ScriptEngineThread::Main () failed, errorUnknown error 0x80020101 09 15:51:38.057 000e6c *Err SrvScrAPI 08C07C28 000000be SScriptHost::Initialize (NIS-Notruf) failed, error Unknown error 0x80020101 09 15:51:38.057 000e6c *Err SrvPBXCtl 08E0E630 000000be SScrServer::ActionOnScrStart (5, NIS-Notruf) script host init failed, 1 09 15:51:38.057 000e6c Info SrvScrAPI 08C07C28 000000be SScriptHost::Delete () script finished, remove SScriptSrvItf ref, confCnt= 0 09 15:51:38.057 000e6c Info SrvPBXCtl 08E0E630 000000be SScrServer::ProcessFSM () Idle --ScrStart--> Idle (Result: 1) 09 15:51:38.057 000e6c Info SwTCL 08C07AB0 000000be STclCall::SignalDisconnect (ResultCallRoutingFailed, lateDisconnect=false, extCause=0) 006708E0 09 15:51:38.057 000e6c Info SH323 006708E0 000000be SH323BaseCall::SignalDisconnect A RECV SwTCL SignalDisconnect(ResultCallRoutingFailed) -> Clear call (cause=NormalCallClearing) 09 15:51:38.057 000e6c Info SH323 006D3A40 000000be SH323Connection::ClearConnection A Clear connection "ip:10.26.47.200:1035/32388" ... Link to comment Share on other sites More sharing options...
Tom Wellige Posted April 9, 2015 #11 Share Posted April 9, 2015 Just a quick guess, your final "end if" looks to be one word instead of two. Have you placed the code into the start block of the script? Link to comment Share on other sites More sharing options...
Tom Wellige Posted April 9, 2015 #12 Share Posted April 9, 2015 Ooops, ich rede in letzter Zeit zu viel Englisch :-) Link to comment Share on other sites More sharing options...
Machka Posted April 10, 2015 Author #13 Share Posted April 10, 2015 ah guter Tip und ja, es ist im Startblock....ich werde testen und berichten Warum wurde das nicht unter meinem Profil gepostet? Anyway..... hier nochmals der komplette Code mit getrenntem end if Function CallExternalApp(ByVal sApp)PBXScript.OutputTrace("------------>CallExternalApp ( " & sApp & " )")Dim objShellSet objShell = CreateObject("WScript.Shell")PBXScript.OutputTrace("Starting external application")objShell.Run(sApp)PBXScript.OutputTrace("external application stopped")objShell=NothingPBXScript.OutputTrace("<-----CallExternalApp")End FuntionDim sXMLsXML=""sXml="C:\CallAdapter\AlarmAdapter.Cmd\neXus.IO.Synergy.AlarmAdapter.Cmd.exe " & PBXCall.CallingPartyNumber & "49969.xml"if sXML <> "" then CallExternalApp sXMLend if Link to comment Share on other sites More sharing options...
Tom Wellige Posted April 10, 2015 #14 Share Posted April 10, 2015 Da Du jetzt ja in jedem Fall die Variable sXML setzt, kannst Du Dir die "if" Abfrage um den CallExternalApp Aufruf herum auch sparen. Einfach die dritt letzte und letzte Zeile löschen. Link to comment Share on other sites More sharing options...
Machka Posted April 16, 2015 Author #15 Share Posted April 16, 2015 ich habe es heute endlich mal testen können..... aber es kam wieder einmal immer ein "besetzt". Habe auch zu Testzwecken mal die ganze Zusammenbauerei der Dateinamen übergangen, indem ich einfach stumpf eine Test.xml erzeugt habe und somit den String grundsätzlich einfach aufrufen müsste (siehe unten).... Function CallExternalApp(ByVal sApp)PBXScript.OutputTrace("------------>CallExternalApp ( " & sApp & " )")Dim objShellSet objShell = CreateObject("WScript.Shell")PBXScript.OutputTrace("Starting external application")objShell.Run(sApp)PBXScript.OutputTrace("external application stopped")objShell=NothingPBXScript.OutputTrace("<-----CallExternalApp")End FuntionDim sXMLsXML=""sXml="C:\CallAdapter\AlarmAdapter.Cmd\neXus.IO.Synergy.AlarmAdapter.Cmd.exe Test.xml"CallExternalApp sXML so schaut es aktuell aus.... den Durchstellenblock mit sHiddenNumber habe ich nicht Line 32706: 16 15:18:16.102 0004b0 *Err SrvScrAPI 0703E0C8 00000009 SPBXScriptSite::OnScriptError () Line 32716: 16 15:18:16.102 0004b0 *Err SrvScrAPI 0705E1E0 00000009 SH::ScriptEngineThread::Main () failed, errorUnknown error 0x80020101 Line 32717: 16 15:18:16.102 000278 *Err SrvScrAPI 004CB2B0 00000009 SScriptHost::Initialize (NIS-Notruf) failed, error Unknown error 0x80020101 Line 32718: 16 15:18:16.102 000278 *Err SrvPBXCtl 06D9FF10 00000009 SScrServer::ActionOnScrStart (5, NIS-Notruf) script host init failed, 1 Line 32719: 16 15:18:16.102 000278 Info SrvScrAPI 004CB2B0 00000009 SScriptHost::Delete () script finished, remove SScriptSrvItf ref, confCnt= 0 Line 32720: 16 15:18:16.102 000278 Info SrvPBXCtl 06D9FF10 00000009 SScrServer::ProcessFSM () Idle --ScrStart--> Idle (Result: 1) Line 32721: 16 15:18:16.102 000278 Info SwTCL 005217B0 00000009 STclCall::SignalDisconnect (ResultCallRoutingFailed, lateDisconnect=false, extCause=0) 004A4110 wenn ich aus dem Startblock das Script herausnehme, dann bekomme ich ein Klingeln... also liegt es definitiv am Script. Link to comment Share on other sites More sharing options...
Tom Wellige Posted April 17, 2015 #16 Share Posted April 17, 2015 Dein Traceauszug leider nicht vollständig. Um was dazu sagen zu können brauche ich den Laufzeitfehler / Runtime Error der Scripting Engine... Link to comment Share on other sites More sharing options...
Machka Posted April 20, 2015 Author #17 Share Posted April 20, 2015 ah habe hier noch etwas gefunden.... einiges scheint zu funktionieren, anderes wieder nicht. Ich bin mir nicht zu 100% sicher, ob meine Schlüsse richtig sind.... Traces sind im Anhang anbei danke im Voraus Callrouting NIS.zip Link to comment Share on other sites More sharing options...
Machka Posted April 20, 2015 Author #18 Share Posted April 20, 2015 Hallo Tom, wir haben den Fehler gefunden. Es lag an der Exe, die keinen Rückgabewert hatte. Wenn wir die exe durch eine batch aufrufen lassen, dann hat es funktioniert. Wir sind an der Behebung dieses Problems. Danke derweil für die Unterstützung. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.