Захват событий в классическом ASP (vbscript) - возможно ли это? - PullRequest
1 голос
/ 20 июля 2010

Мы только что приобрели некоторое программное обеспечение, которое предоставляет API в нашей телефонной системе, позволяя нам набирать номер, зависать и т. Д. Этот API был разработан для использования на стороне клиента (Internet Explorer / ActiveX).Мы хотим использовать эту сторону сервера и выполнять команды набора с помощью ajax-вызова классического сценария ASP.

Базовый 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")

до события "initialized"случилось.Есть ли способ в классическом ASP ждать, пока событие не сработает, прежде чем выполнять какой-либо код?

Ответы [ 3 ]

1 голос
/ 23 июля 2010

оказывается, что это просто невозможно в ASP. Нет выставленного свойства, которое говорит, что компонент инициализирован, только инициализированное событие, которое запускается. К сожалению, ASP не может обнаружить события. Разработчик предложил обернуть их компонент в новую DLL, которая заботится об управлении событиями, но у меня нет ресурсов для этого. Они обещали истинную возможность работы на стороне сервера в будущей версии программного обеспечения

1 голос
/ 26 апреля 2011

Не самое изящное из решений, но вы можете перехватить ошибки, затем зациклить и повторить попытку вызова, если он не удастся, затем повторите попытку - вы можете поставить в цикл паузу, чтобы дать процессу возможность завершиться.Вы также можете установить ограничение на количество попыток, чтобы оно в конечном итоге сдалось и не попадало в бесконечный цикл.Что-то вроде (не завершено или не проверено):

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
0 голосов
/ 21 июля 2010

Я ничего не знаю об этом компоненте, поэтому следующее предполагает некоторые догадки.

1) Если у компонента есть свойство отслеживать, когда он инициализируется, вы можете проверить это и, как только он будет инициализирован,вызовите метод MakeCall.

2) Я предполагаю, что компонент имеет событие OnInitializedComplete (или что-то в этом роде), если это так, напишите свой код на стороне сервера в JScript и назначьте функцию для события.*

...