我正在尝试使我的devlink C ++示例与我的AVAYA IP500一起使用,并且连接似乎正常工作,DLOpen函数运行良好,并且回调函数也被调用,但是当我调用DLRegisterType2CallDeltas获取事件日志时,它将返回0(DEVLINK_SUCCESS),并且永远不会调用回调函数。
如您所见,控制台中从不显示消息“已检测到事件”,我也在该行中设置了断点,而没有任何操作。
我具有有效的CTI Pro许可证,并配置了我的PC TAPI服务提供商
请帮助。
这是devlink.h代码
#ifndef _DEVLINK_H_
#define _DEVLINK_H_
typedef char TEXT;
#define DEVLINK_SUCCESS 0
#define DEVLINK_UNSPECIFIEDFAIL 1
#define DEVLINK_LICENCENOTFOUND 2
#define DEVLINK_COMMS_OPERATIONAL 0
#define DEVLINK_COMMS_NORESPONSE 1
#define DEVLINK_COMMS_REJECTED 2
#define DEVLINK_COMMS_MISSEDPACKETS 3
#ifdef __cplusplus
extern "C"
{
#endif
typedef void (CALLBACK * DLCALLLOGEVENT)(
DWORD pbxh,
TEXT * info
);
typedef void (CALLBACK * DLCOMMSEVENT)(
DWORD pbxh,
DWORD comms_state,
DWORD parm1
);
LONG PASCAL DLOpen(DWORD pbxh
, TEXT * pbx_address
, TEXT * pbx_password
, TEXT * reserved1
, TEXT * reserved2
, DLCOMMSEVENT cb
);
LONG PASCAL DLClose(DWORD pbxh);
LONG PASCAL DLRegisterType2CallDeltas(DWORD pbxh, DLCALLLOGEVENT cb);
#ifdef __cplusplus
};
#endif
#endif // _DEVLINK_H_
这是我的主要代码
#include "pch.h"
#include <windows.h>
#include <stdio.h>
#include "devlink.h"
HANDLE hEvent;
DWORD dwCommsEvent;
BOOL bStarting;
void CALLBACK HandleDelta2Event(DWORD pbxh, char* switchInfo)
{
printf("An event has been detected\n");
}
void CALLBACK HandleCommsEvent(DWORD pbxh, DWORD comms_evt, DWORD parm1)
{
printf("event: %d - %d\n", comms_evt, parm1);
switch (comms_evt)
{
case DEVLINK_COMMS_OPERATIONAL:
// we are working fine ... fall through
case DEVLINK_COMMS_NORESPONSE:
// system not found (initial connection),
// or network connection lost (rebooted ?)
// fall through ...
case DEVLINK_COMMS_REJECTED:
// incorrect system password speciffied
if (bStarting)
{
dwCommsEvent = comms_evt;
SetEvent(hEvent);
}
else
{
}
break;
case DEVLINK_COMMS_MISSEDPACKETS:
// Indicates that system is under heavy load.
// IP Office always priorities data routing
// and call handling above CTI events
// (parm1 contains nnumber of packets missed)
break;
}
}
int main(int argc, char* argv[])
{
bool enter = false;
long res;
printf("connecting...");
bStarting = TRUE;
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
char swp[] = "[My IP500 IP]";
char pw[] = "[Security user password]";
DLOpen(0, swp, pw, NULL, NULL, HandleCommsEvent);
dwCommsEvent = DEVLINK_COMMS_NORESPONSE;
WaitForSingleObject(hEvent, 10000); // 10 seconds
bStarting = FALSE;
if (dwCommsEvent == DEVLINK_COMMS_OPERATIONAL)
{
printf("Connected OK\n");
printf("Waiting for event\n");
while (!enter)
{
res = DLRegisterType2CallDeltas(0, HandleDelta2Event);
printf("Code: %d\n", res);
}
}
else
{
printf("Error connecting to IP Office\n");
}
DLClose(0);
CloseHandle(hEvent);
return 0;
}
我的输出如下所示
connecting...event:0 - 0
event: 3 - -1
Connected OK
Waiting for event
code: 0
code: 0
code: 0
code: 0
code: 0
... keeps forever
event: 1 - 0
event: 0 - 0
event: 3 - -1
code: 0
code: 0
code: 0
code: 0
code: 0
... keeps forever