2010-07-20 24 views
1

我們剛剛購買了一些軟件,爲我們的電話系統提供了一個API,允許我們撥打,掛斷等。該API被設計爲用於客戶端(Internet Explorer/ActiveX)。我們希望使用這個服務器端,並通過對傳統ASP腳本的ajax調用來執行撥號命令。傳統ASP(vbscript)中的事件捕獲 - 這可能嗎?

用於初始化組件的基本VBScript如下:

<% 
set objPhone = server.createobject("XariosPhoneManager.PhoneManager") 
objPhone.RemoteHost = "192.168.0.17" 
objPhone.RemotePort = "2001" 
objPhone.OAIPassword = "" 
objPhone.Extension = "1000" 
objPhone.Initialise() 
set objPhone = nothing 
%> 

,但我不能把撥號命令

objPhone.MakeCall("1001") 

,直到「初始化」事件已經發生。在執行某些代碼之前,傳統ASP有沒有辦法等待事件觸發?

回答

1

事實證明,它根本不可能在ASP中。沒有顯示組件被初始化的屬性,只是觸發的初始化事件。不幸的是ASP不能檢測事件。開發人員建議將他們的組件封裝在一個處理事件管理的新DLL中,但我沒有資源去做。他們承諾在未來版本的軟件中具有真正的服務器功能

0

我對這個組件一無所知,所以下面涉及一些猜測。

1)如果組件有一個屬性用於跟蹤它的初始化時間,那麼可以檢查它,一旦它被初始化,就調用MakeCall方法。

2)我在猜測組件有一個OnInitializedComplete事件(或類似的東西),如果是這樣,請用JScript編寫服務器端代碼並​​爲該事件分配一個函數。

+0

事實證明,它根本不可能在ASP中。沒有顯示組件被初始化的屬性,只是觸發的初始化事件。不幸的是ASP不能檢測事件。開發人員建議將他們的組件封裝在一個處理事件管理的新DLL中,但我沒有資源去做。他們承諾在未來版本的軟件中具有真正的服務器功能。 – 2010-07-23 17:01:41

1

不是最優雅的解決方案,但您可以捕獲錯誤,然後循環並在失敗時重新嘗試呼叫,然後再次嘗試 - 您可以暫停循環給予過程完成的機會。你也可以限制嘗試的次數,這樣它最終會放棄,而不會在無限循環中結束。像(不完整或測試):

numTries = 0 
processComplete = False 
Do Until processComplete or numTries>=10 
    On Error Resume Next 
    '## YOUR CODE TO CALL THE PROCESS HERE 
    On Error Goto 0 
    numTries=CDbl(numTries)+1 
Loop