i have call center using avaya system need manage system application that's developed there dll called devlink have 4 events
devlink_comms_operational
devlink_comms_noresponse
devlink_comms_rejected
devlink_comms_missedpackets
the first event
devlink_comms_operational
meen connection establish
when click button connect
procedure tfrmmain.btnconnectclick(sender: tobject); var hevent:integer; vpass,vaddress:pchar; begin frmsetup.tblconnections begin first; while not eof begin if fieldbyname('ipenabled').asinteger=1 begin vpass:=pchar(fieldbyname('ippassword').asstring); vaddress:=pchar(fieldbyname('ipaddress').asstring); dlopen(fnexthandle, vaddress,vpass, nil, nil,handlecommsevent); edit; fieldbyname('pbxh').asinteger:=fnexthandle; post; hevent := createevent(nil, false, false, nil); try waitforsingleobject(hevent, 10000); if (locate('pbxh',fnexthandle,[]))and(fieldbyname('connected').asinteger=1) else logaddline(fnexthandle,'no responce'); closehandle(hevent); inc(fnexthandle); end; end; next; end; end; end; we note dlopen method take ip of system , password , event fire test dlopen
always appear message of event devlink_comms_noresponse no response
need know error ip , password correct. there handlecommsevent
procedure handlecommsevent(pbxh: longint; comms_status: dword; parm1: dword);stdcall; stdcall; begin //4 cases event of dlopen logaddline(pbxh,'handlecommsevent happend'); case comms_status of devlink_comms_operational: begin dlregistertype2calldeltas(pbxh, handleevent); logaddline(pbxh,'connected done'); if frmsetup.tblconnections.locate('pbxh',pbxh,[]) begin frmsetup.tblconnections.edit; frmsetup.tblconnections.fieldbyname('connected').asinteger:=1; frmsetup.tblconnections.post; end; end; devlink_comms_noresponse: begin logaddline(pbxh,'connected noresponse there problem in network '); if frmsetup.tblconnections.locate('pbxh',pbxh,[]) begin frmsetup.tblconnections.edit; frmsetup.tblconnections.fieldbyname('pbxh').asinteger:=pbxh; frmsetup.tblconnections.fieldbyname('connected').asinteger:=0; frmsetup.tblconnections.post; end; end ; devlink_comms_rejected: begin logaddline(pbxh,'connected rejected,password incorrect'); if frmsetup.tblconnections.locate('pbxh',pbxh,[]) begin frmsetup.tblconnections.edit; frmsetup.tblconnections.fieldbyname('pbxh').asinteger:=pbxh; frmsetup.tblconnections.fieldbyname('connected').asinteger:=0; frmsetup.tblconnections.post; end; end; // case of packets generated ip office system unit ,but not recieved devlink devlink_comms_missedpackets: begin logaddline(pbxh,'connected missedpackets ,packets generated ip office system unit ,but not recieved devlink '); end; //case of no response from system unit end; end; if 1 need more info , details i'm ready. message of no response appear
for more details
devlink
unit udevlink; {**************************************************************************} { delphi unit devlink (c) 2001 avaya global sme solutions } { contents:- } { ip office devlink dll provides interface managing } { ip office product ranges windows pc } {**************************************************************************} interface uses windows, sysutils , classes, ufrmmain,strutils,ustrings; const devlink_success = 0; devlink_unspecifiedfail = 1; devlink_licencenotfound = 2; const devlink_comms_operational = 0; devlink_comms_noresponse = 1; devlink_comms_rejected = 2; devlink_comms_missedpackets = 3; type tcalllogevent = procedure(pbxh: longint; info: pchar); stdcall; type tcommsevent = procedure(pbxh: longint; comms_status: dword; parm1: dword); stdcall; function dlopen(pbxh: longint; pbx_address: pchar; pbx_password: pchar; reserved1: pchar; reserved2: pchar; cb: tcommsevent): longint; stdcall; function dlclose(pbxh: thandle): longint; stdcall; function dlregistertype2calldeltas(pbxh: longint; cb: tcalllogevent): longint; stdcall; implementation function dlopen; external 'devlink.dll'; function dlclose; external 'devlink.dll'; function dlregistertype2calldeltas; external 'devlink.dll'; end.
your db management manipulating db cursor while iterating same cursor. there no need locate() record actively processing.
your call dlopen() should more this, based on delphi example provided in official avaya devlink api documentation (which assume have read):
var hevent: thandle; status: dword; starting: boolean; procedure handlecommsevent(pbxh: longint; comms_status: dword; parm1: dword); stdcall; begin //4 cases event of dlopen logaddline(pbxh, 'handlecommsevent happend'); case comms_status of devlink_comms_operational, devlink_comms_noresponse, devlink_comms_rejected: begin if starting begin status := comms_status; setevent(hevent); end; end; // case of packets generated ip office system unit ,but not recieved devlink devlink_comms_missedpackets: begin logaddline(pbxh,'connected missedpackets ,packets generated ip office system unit ,but not recieved devlink '); end; //case of no response from system unit end; end; procedure tfrmmain.btnconnectclick(sender: tobject); var vpass, vaddress: string; begin hevent := createevent(nil, true, false, nil); try frmsetup.tblconnections begin first; while not eof begin if fieldbyname('ipenabled').asinteger = 1 begin vpass := fieldbyname('ippassword').asstring; vaddress := fieldbyname('ipaddress').asstring; edit; fieldbyname('pbxh').asinteger := fnexthandle; fieldbyname('connected').asinteger := 0; post; status := devlink_comms_noresponse; starting := true; resetevent(hevent); dlopen(fnexthandle, pchar(vaddress), pchar(vpass), nil, nil, handlecommsevent); waitforsingleobject(hevent, 10000); starting := false; if status = devlink_comms_operational begin dlregistertype2calldeltas(fnexthandle, handleevent); logaddline(fnexthandle, 'connected done'); edit; fieldbyname('connected').asinteger := 1; post; end else begin dlclose(fnexthandle); case status of devlink_comms_noresponse: begin logaddline(fnexthandle, 'connected noresponse there problem in network '); end; devlink_comms_rejected: begin logaddline(fnexthandle, 'connected rejected,password incorrect'); end; end; end; end; inc(fnexthandle); end; next; end; closehandle(hevent); end; end;
Comments
Post a Comment