1. FreeSWITCH和CRM接口:
  2. 宁卫通信
  3. 软件下载
  4. 宁卫软件
  5. FreeSWITCH和CRM接口

FreeSWITCH和CRM接口

主要用于和第三方的CRM等进行通信的接口,底层采用FreeSWITCH和语音网关等对接,由NWAY_CRM_INTERFACE检测FreeSWITCH中的通信状态,并通过动态链接库、Restful接口将对应的信息状态发送给和本系统对接的CRM系统中。 功能: 1. 使用c++开发的状态采集器(对CRM来说则是服务端)可跨平台运行。 2. 使用动态库作为通信接口,可以异机与crm对接。 3. 使用tcp通信保证通信的可靠性和即时性。 4. 将动态库封装成为Restful接口,方便web直接连接与使用。 5. 采用的FreeSWITCH可以更可靠,更大并发地跑相关业务应用。 6. 更多有待于来电咨询。 参考动态库的头文件 #ifndef __NWAY_COM_CN_LIB_LPCC_H #define __NWAY_COM_CN_LIB_LPCC_H #define DllExport extern "C" __declspec(dllexport) #include "resource.h" // main symbols #ifdef __cplusplus extern "C" { #endif typedef void (__stdcall *CallBackEvent)(const char* call_event,const char* ext_id,const char* visitor_id, \ const char* from,const char* to ,const char* caller_id, int duration); typedef void (__stdcall *CallBackCdr)(int callid,const char* call_type ,int flag_id,const char* route, \ const char* time_start,const char* time_end,const char* cpn,const char* cdpn, int duration,const char* trunk_number, const char* record_file, const char* cdr_id); //连接到服务器 //返回值:0为成功 //ip 为ipv4的地址 //port 为端口 DllExport int __stdcall NWConnect(const char* ip, short port); //断开服务器连接 DllExport void __stdcall DisConnect(); //获取分机信息 //返回值:0为成功 //ext_number:传入的分机号 //staffid:返回的工号 //mobile:员工手机 //record:录音 //voicefile:语音文件 //call_direction:通话方向,in呼入,out呼出 /*state: //号码的状态,activeReady: 分机空闲 //Active: 摘机、振铃或通话中 //Block: 分机挂起(suspend) */ //trunk_number:中继号码 //other_leg_number:通话号码 //call_state: //呼叫时的状态,Talk: 通话中 //Progress: 摘机或通话挂起 //Wait: 呼叫方处于分机等待队列中 //disturb :是否免打扰 DllExport int __stdcall GetExtInfo(const char* ext_number, char* staffid,char* mobile, \ char* record,char* voicefile,char* call_direction,char* state,char* trunk_number, \ char* other_leg_number,char* call_state, char* disturb); /* 呼叫号码 返回值:0为成功 call_type:要呼的类型,0表示分机呼分机,1表示由分机呼外线 ext_number:分机号码 call_to_number:对方号码,手机号或另一个分机号 //res_state:呼叫返回值 废弃 res_text:如果呼叫失败,返回的字符串 */ DllExport int __stdcall CallDial(short call_type,const char* ext_number,const char* call_to_number, char* res_text); /* 获得当前通话 filename:由于多语音传输的问题,在这里就将一个外部文件名传入 返回值:0为成功 //文件内容,按行解析 from , to, ext_id,state, trunk, callid, direction 来源号码,被叫号码,分机号,状态,中继,内部呼叫id,方向 */ DllExport int __stdcall GetCalls(const char* filename); /* 获得设备信息 返回值:0为成功 res_text:如果获取失败的返回字符串 model:由设备决定 filename:由于要传多组数据,同时多语言支持,就写入文件中 文件格式 string, string, string 分机信息 lineid, id, '1' 中继信息 lineid, id, '2' 组信息 id, ext_id, '3' */ DllExport int __stdcall GetDevice(char* res_text,char* model,const char* filename); /* 设置免打扰 返回值:0成功 ext_id:分机号 disturb:yes设置,no解除免打扰 lineid: 从设备获取到的lineid res_text:当返回非0时返回的字符串 */ DllExport int __stdcall SetDisturb(const char* ext_id,const char* disturb,const char* lineid, char* res_text); /* 设置事件回调 返回值:0成功 eventcb:事件回调的函数指针 回送的信息 string event =1;事件 string ext_id=2; // 分机 string visitor_id =3 ;//网关中的来电编号 string from = 4; 主叫 string to = 5; 被叫 string callerid = 6; //网关中的呼叫编号 int32 duration = 7; 方向 */ DllExport int __stdcall SetEventCallBack(CallBackEvent eventcb); /* 设置CDR回调 返回值:0成功 cdrcb:CDR回调的函数指针 回送的信息 int32 callid = 1; string type=2; //IN(打入)/OU(打出)/FI(呼叫转移入)/FW(呼叫转移出)/LO(内部通话)/CB(双向外呼) int32 flag_id = 3;//来电标识号或者去电标识号,内部分机通话记录无此字段,标为0。 string route = 4;//IP(IP中继)/XO(模拟中继)/IC(内部)/OP(总机) string timeStart = 5; 开始时间 string timeEnd = 6; 结束时间 string CPN = 7; 主叫 string CDPN = 8; 被叫 int32 duration = 9; 时长 string trunk_number = 10; //路由所经过的中继 string recordfile = 11; //录音文件路径 string cdr_id = 12; */ DllExport int __stdcall SetCdrCallBack(CallBackCdr cdrcb); #ifdef __cplusplus } #endif #endif