STVLNG Posted April 30, 2023 #1 Share Posted April 30, 2023 Hi zusammen, ich bin aktuell dabei ein CallRouting zu erstellen in dem je nach eingabe der PLZ eine entsprechende Durchwahl gewählt wird. Folgendes Szenario, wir haben 5 verschiedene Abteilungen und 150 verschiedenen Postleizahlen. In jeder Abteilung ist ein User für eine oder mehrere PLZs verantwortlich. Ich hab mir das ganze wie folgt vorgestellt: Kunde ruft an und wird nach der PLZ gefragt, diese wird in der Variable PLZ gespeichert, dann wählt er aus zu welcher Abteilung er möchte (A, B, C, D, E) und nun soll das Script je nach Abteilung in einer DB oder txt die Passende Durchwahl zur PLZ ausspucken an die dann weiterverbunden wird. Leider habe ich keine Ahnung wie ist das Bewerkstelligungen soll, da mich meine Programmierkenntnisse außerhalb von PowerShell verlassen. Link to comment Share on other sites More sharing options...
STVLNG Posted May 3, 2023 Author #2 Share Posted May 3, 2023 Ich habe das ganze nun mal so gut ich konnte in Form gebracht. Leider schlägt das CR immer wieder fehl und ich finde nicht raus woran es liegt. CalRouting_PLZzuDW.rse Link to comment Share on other sites More sharing options...
Tom Wellige Posted May 3, 2023 #3 Share Posted May 3, 2023 In Deinem Code sind einige Fehler: ' if there are records in recordset, this caller seems to be known bReturn = If Not rs.EOF Then Hier musst Du das "bReturn =" entfernen. Ebenso setzt Du nachfolgend ie Variablen "plz" und "output_dw", diese sind jedoch nicht zuvor mittels "Dim" deklariert sprich angelegt worden. Wenn es anschliessend immer noch zu Problemen kommt (Ruf bricht ab), solltest Du mal einen Blick in das Server Trace werfen. Dort solltest Du dann die entsprechende Fehlermeldung finden, die zu dem Rufabbruch gehört. How to filter SwyxWare traces for call routing output of single call Link to comment Share on other sites More sharing options...
STVLNG Posted May 3, 2023 Author #4 Share Posted May 3, 2023 Hi Tom, Danke für die Tipps, wie schon gesagt meine VBS Kenntnisse halten sich in Grenzen. Ich werd es morgen mal testen. Link to comment Share on other sites More sharing options...
STVLNG Posted May 4, 2023 Author #5 Share Posted May 4, 2023 Ich glaub ich bin zu doof dafür folgendes hab ich in der Log: Zeile 178102: 04 10:04:13.892 015a54 Info SrvScrAPI 069717D0 000025be SScriptLoader::LoadScript (callrouting.vbs, U:416 Test) Zeile 178103: 04 10:04:13.892 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) callrouting.vbs', scope User Zeile 178104: 04 10:04:13.893 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) Templates_V4.3.vbs', scope SystemDefault Zeile 178105: 04 10:04:13.893 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) rulePreProcessing.vbs', scope SystemDefault Zeile 178106: 04 10:04:13.894 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) rulePostProcessing.vbs', scope SystemDefault Zeile 178107: 04 10:04:13.894 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) Functions.vbs', scope SystemDefault Zeile 178108: 04 10:04:13.896 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) actionStandardVoicemail.vbs', scope SystemDefault Zeile 178109: 04 10:04:13.903 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) actionStandardRemoteInquiry.vbs', scope SystemDefault Zeile 178110: 04 10:04:13.903 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) actionRedirection.vbs', scope SystemDefault Zeile 178111: 04 10:04:13.908 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) Resources.vbs', scope SystemDefault Zeile 178112: 04 10:04:13.910 015a54 Info SrvScCache 0983EE08 000025be SScriptFCache::LoadFile () Done loading (Success) ruleCRPLZ.vbs', scope User Zeile 178113: 04 10:04:13.911 015a54 Info SrvScrAPI 097DEEC8 000025be SScriptHostVbs::Initialize () loaded 'callrouting.vbs (User, Test)' with 623213 bytes in 0.019s Zeile 178114: 04 10:04:13.919 0155a8 *Err SrvScrAPI 099CF360 000025be SPBXScriptSiteVbs::OnScriptError () Zeile 178124: 04 10:04:13.920 0155a8 *Err SrvScrAPI 09D062E0 000025be SH::ScriptEngineThread::Main () failed, error08237718 Zeile 178125: 04 10:04:13.920 0155a8 Info SrvPBXCtl 099511A8 000025be SScrServer::OnScriptFinished () Zeile 178126: 04 10:04:13.920 0155a8 Inf2 SrvPBXCtl 099511A8 000025be SScrServer::EventScriptFinished () Zeile 178127: 04 10:04:13.920 015a54 *Err SrvScrAPI 097DEEC8 000025be SScriptHostVbs::Initialize (Test) failed, error 09804E60 Zeile 178128: 04 10:04:13.920 015a54 Info SrvScrAPI 097DEEC8 000025be SScriptHostVbs::Delete () script running, delay deletion... Zeile 178129: 04 10:04:13.920 015a54 *Err SrvPBXCtl 099511A8 000025be SScrServer::InitScript () script host init failed with 1 for U:416 Test, refcnt=2 Zeile 178130: 04 10:04:13.920 015a54 *Err SrvPBXCtl 0971C308 000025be SScriptFsm::ActionOnStartScript () Starting script failed Zeile 178131: 04 10:04:13.920 015a54 Inf3 SrvPBXCtl 099511A8 000025be SPBXCallHub::SetDisconnectReason (CallRoutingFailed, ext cause 0, U:0, T:0, '','',Unknown) stored Zeile 178132: 04 10:04:13.920 0155a8 Info SrvScrAPI 09D062E0 000025be SH::ScriptEngineThread::Main () stopped script engine der Ruf ist auch die ganze Zeit in einem Loop. Link to comment Share on other sites More sharing options...
Tom Wellige Posted May 5, 2023 #6 Share Posted May 5, 2023 Ich muss zugeben, dass ich sowas noch nicht gesehen habe. Bitte resportiere Deine GSE Regel nochmal frisch als .rse Datei und lösche sie danach aus dem Call Routing Manager Deines Test Benutzers. Ist der Benutzer anschliessend wieder erreichbar? Link to comment Share on other sites More sharing options...
STVLNG Posted May 8, 2023 Author #7 Share Posted May 8, 2023 So bald ich das CallRouting abschalte ist der test user wieder erreichabar. Ich kann den Fehler nun besser einkreisen. Das CallRouting kommt kommt bis zum Skript und bricht dann wie folgt ab: 08 13:06:33.027 01cbb0 *Err SrvScrAPI 0969E4F8 00002fac SPBXScriptSiteVbs::OnScriptError () ~Code: 0 ~Src: 082CB8D4 ~Desc: 0973DEF4 ~RetVal: 80004005 ~Line: 15398 ~Column: 9 ~Source code: ~ Set db = CreateObject("ADODB.Connection") ~ ^ error position 08 13:06:33.028 01cbb0 Inf3 SrvPBXCtl 0CF74460 00002fac SPBXCallHub::SetDisconnectReason (CallRoutingFailed, ext cause 0, U:0, T:0, '','',Unknown) stored 08 13:06:33.029 01cbb0 Info SrvPBXCtl 0CF74460 00002fac SScrServer::OnScriptFinished () 08 13:06:33.029 01cbb0 Inf2 SrvPBXCtl 0CF74460 00002fac SScrServer::EventScriptFinished () 08 13:06:33.029 01aa14 Inf2 SrvPBXCtl 0971BDF8 00002fac SScriptFsm::ActionOnScriptFinished () Link to comment Share on other sites More sharing options...
Tom Wellige Posted May 8, 2023 #8 Share Posted May 8, 2023 Leider gibt es aktuell einen Bug in der SwyxWare, der bei VBSkript Laufzeitfehlern dazui führt, dass er originale Fehlertext nicht ins Trace geschrieben wird. Die Zeilen "~Src" und "~Desc" sollten eigentlich vernünftigen Text enthalten. Ich will mal versuchen, ohne eine Fehlerbeschreibung weiter zu kommen... Eine Eigenart der Microsodt Scripting Engine ist es, bei Laufzeitfehlern in "~Source code" nicht die Fehlerzeile anzuzeigen, sondern die Zeile eins über der Fehlerzeile. In der .rse Datei die Du oben angehängt hattest, finde ich in den Skript Code Blöcken keinen Fehler unter der angegebenen Zeile. Hast Du da evtl. aus Versehen in einem der Blöcke etwas kaputt gemacht? Link to comment Share on other sites More sharing options...
STVLNG Posted May 8, 2023 Author #9 Share Posted May 8, 2023 Ich hab das script zum testen einwenig vereinfacht und den Dim bereich in den Startblock gesetzt da sonst der abbruch sofort kam mit der oberen Meldung. CalRouting_PLZzuDW.rse Link to comment Share on other sites More sharing options...
Tom Wellige Posted May 8, 2023 #10 Share Posted May 8, 2023 Wenn Du die Dim Anweisungen in den Start Block verschoben hast, dann musst Du sie aus dem anderen Code auch heraus nehmen. Sonst versuchst Du eine Variable doppelt zu deklarieren, was nicht zulässig ist. Link to comment Share on other sites More sharing options...
STVLNG Posted May 9, 2023 Author #11 Share Posted May 9, 2023 Auch mit der Anpassung kommt genau der gleiche Fehler Start-Block Dim eingabe_PLZ Dim plz Dim dw Dim output_dw Dim sDsn Dim db Dim sSQL Dim rs Skript-Block sDsn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=c:\GSE\plzDB.mdb" ' open connection to database Set db = CreateObject("ADODB.Connection") db.Open sDsn ' open recordset sSQL = "SELECT * FROM callerplz WHERE Postleitzahl = '" & eingabe_PLZ & "'" Set rs = CreateObject("ADODB.Recordset") rs.Open sSQL, db, adOpenDynamic, adLockOptimistic, adCmdText plz = rs.Fields("Postleitzahl").Value output_dw = rs.Fields("Durchwahl").Value LinkManager Ausgabe: 09 08:51:55.763 01d910 *Err SrvScrAPI 0D2C8090 000031d2 SPBXScriptSiteVbs::OnScriptError () ~Code: 0 ~Src: 084D348C ~Desc: 02DF7CFC ~RetVal: 80004005 ~Line: 15392 ~Column: 8 ~Source code: ~ Set db = CreateObject("ADODB.Connection") ~ ^ error position 09 08:51:55.763 01d910 Inf3 SrvPBXCtl 082D2A38 000031d2 SPBXCallHub::SetDisconnectReason (CallRoutingFailed, ext cause 0, U:0, T:0, '','',Unknown) stored 09 08:51:55.763 01d910 Info SrvPBXCtl 082D2A38 000031d2 SScrServer::OnScriptFinished () 09 08:51:55.763 01d910 Inf2 SrvPBXCtl 082D2A38 000031d2 SScrServer::EventScriptFinished () 09 08:51:55.763 01da1c Inf2 SrvPBXCtl 08233668 000031d2 SScriptFsm::ActionOnScriptFinished () Link to comment Share on other sites More sharing options...
Tom Wellige Posted May 9, 2023 #12 Share Posted May 9, 2023 Der Fehler tritt in der "db.Open sDsn" Zeile auf. Wie gesagt, leider gibt es dazu im Augenblick keine ordentliche Fehlermeldung im Trace. Es gibt aber natürlich trotzdem einige Ansatzpunkte: Hat der Windows Benutzer unter dem der SwyxServer Dienst läuft (typischerweise "SwyxServiceAccount") vollen read/write Zugriff auf die "c:\GSE\plzDB.mdb" Datei ? Da es sich um eine Access "Datenbank" handelt: Access darf nicht gestartet sein, wenn Du versuchst vom Call Routing aus darauf zuzugreifen. Wenn Du die Möglichkeit hast, solltest Du die Datenbank auf alle Fälle in einen echten SQL Server umziehen. Dort kann eine Datenbank von mehreren Seiten gleichzeitig verwendet werden. Und ganz wichtig: wenn das Problem erstmal gelöst ist, musst Du noch weiteren Code (z.B. in den Start Block) einfügen: ' CursorTypeEnum Values Const adOpenForwardOnly = 0 Const adOpenKeyset = 1 Const adOpenDynamic = 2 Const adOpenStatic = 3 ' LockTypeEnum Values Const adLockReadOnly = 1 Const adLockPessimistic = 2 Const adLockOptimistic = 3 Const adLockBatchOptimistic = 4 ' CommandTypeEnum Values Const adCmdUnknown = &H0008 Const adCmdText = &H0001 Const adCmdTable = &H0002 Const adCmdStoredProc = &H0004 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now