Jump to content

Xml-Script Per Ecr Aufrufen


Machka

Recommended Posts

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


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


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


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


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 sHiddenNumber
Dim 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 <> "" then
LaunchCmd sXML
end if

Link to comment
Share on other sites


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


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


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


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


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 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
end if

Link to comment
Share on other sites


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


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


Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.