Connect Avaya System With My System Using Delphi Programming? -


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