uo_cc301.sru 60 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251
  1. $PBExportHeader$uo_cc301.sru
  2. forward
  3. global type uo_cc301 from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_cc301 from nonvisualobject
  7. event opendevice1 ( )
  8. event closedevice1 ( )
  9. event ue_event_message1 ( long messagenumber, unsignedlong wparam, long lparam )
  10. event startrecord1 ( )
  11. event stoprecord1 ( )
  12. event hook1 ( )
  13. event hangup1 ( )
  14. event opendoplay1 ( )
  15. event closedoplay1 ( )
  16. end type
  17. global uo_cc301 uo_cc301
  18. type prototypes
  19. Function long lstrcpy(ref string Destination, ref string Source) library "kernel32.dll" ALIAS FOR "lstrcpyansi"
  20. SUBROUTINE CopyMemory(long pDesc, ref BRIEVENT pSrc,ulong size) LIBRARY "kernel32" ALIAS FOR "RtlMoveMemory"
  21. SUBROUTINE CopyMemory(ref BRIEVENT pDesc, long pSrc,ulong size) LIBRARY "kernel32" ALIAS FOR "RtlMoveMemory"
  22. //接口函数列表
  23. //
  24. // 打开设备
  25. FUNCTION long QNV_OpenDevice(long uDevType,long uValue,string pValue) library "qnviccub.dll"
  26. // 关闭设备
  27. FUNCTION long QNV_CloseDevice(long uDevType,long uValue) library "qnviccub.dll"
  28. // set dev ctrl
  29. FUNCTION long QNV_SetDevCtrl(int nChannelID,long uCtrlType,long nValue) library "qnviccub.dll"
  30. // get dev ctrl
  31. FUNCTION long QNV_GetDevCtrl(int nChannelID,long uCtrlType) library "qnviccub.dll"
  32. // set param
  33. FUNCTION long QNV_SetParam(int nChannelID,long uParamType,long nValue) library "qnviccub.dll"
  34. // get param
  35. FUNCTION long QNV_GetParam(int nChannelID,long uParamType) library "qnviccub.dll"
  36. // play file
  37. FUNCTION long QNV_PlayFile(int nChannelID,long uPlayType,long nValue,long nValueEx,string pValue) library "qnviccub.dll"
  38. // play buf
  39. FUNCTION long QNV_PlayBuf(int nChannelID,long uPlayType,long nValue,long nValueEx,string pValue) library "qnviccub.dll"
  40. // play multifile
  41. FUNCTION long QNV_PlayMultiFile(int nChannelID,long uPlayType,long nValue,long nValueEx,string pValue) library "qnviccub.dll"
  42. // play string
  43. FUNCTION long QNV_PlayString(int nChannelID,long uPlayType,long nValue,long nValueEx,string pValue) library "qnviccub.dll"
  44. // record file
  45. FUNCTION long QNV_RecordFile(int nChannelID,long uRecordType,long nValue,long nValueEx,string pValue) library "qnviccub.dll"
  46. // record buf
  47. FUNCTION long QNV_RecordBuf(int nChannelID,long uRecordType,long nValue,long nValueEx,string pValue) library "qnviccub.dll"
  48. // conference
  49. FUNCTION long QNV_Conference(int nChannelID,long nConfID,long uConfType,long nValue, string pValue) library "qnviccub.dll"
  50. // broadcast
  51. FUNCTION long QNV_Broadcast(int nChannelID,long uBroadType,long nValue, string pValue) library "qnviccub.dll"
  52. // speech
  53. FUNCTION long QNV_Speech(int nChannelID,long uSpeechType,long nValue,string pValue) library "qnviccub.dll"
  54. // fax
  55. FUNCTION long QNV_Fax(int nChannelID,long uFaxType,long nValue,string pValue) library "qnviccub.dll"
  56. // event
  57. FUNCTION long QNV_Event(int nChannelID,long uEventType,long nValue,string pInValue,ref string pOutValue,long nBufSize) library "qnviccub.dll"
  58. // general
  59. FUNCTION long QNV_General(int nChannelID,long uGeneralType,long nValue,string pValue) library "qnviccub.dll"
  60. // pstn call log
  61. FUNCTION long QNV_CallLog(int nChannelID,long uLogType,ref string pValue,long nValue) library "qnviccub.dll"
  62. // devinfo
  63. FUNCTION long QNV_DevInfo(int nChannelID,long uDevInfoType) library "qnviccub.dll"
  64. // storage read write
  65. FUNCTION long QNV_Storage(int nDevID,long uOPType,long uSeek,string pPwd,ref string pValue,long nBufSize) library "qnviccub.dll"
  66. // tool
  67. FUNCTION long QNV_Tool(long uToolType,long nValue,ref string pInValue,ref string pInValueEx,ref string pOutValue,long nBufSize) library "qnviccub.dll"
  68. // remote
  69. FUNCTION long QNV_Remote(long uRemoteType,long nValue,ref string pInValue,ref string pInValueEx,ref string pOutValue,long nBufSize) library "qnviccub.dll"
  70. // CC ctrl
  71. FUNCTION long QNV_CCCtrl(long uCtrlType,ref string pInValue,long nValue) library "qnviccub.dll"
  72. // CC Call
  73. FUNCTION long QNV_CCCtrl_Call(long uCallType,long lHandle,ref string pInValue,long nValue) library "qnviccub.dll"
  74. // CC msg
  75. FUNCTION long QNV_CCCtrl_Msg(long uMsgType,ref string pDestCC,ref string pMsgValue,ref string pParam,long nReserv) library "qnviccub.dll"
  76. //
  77. // CC contact
  78. FUNCTION long QNV_CCCtrl_Contact(long uContactType,ref string pDestCC,ref string pValue) library "qnviccub.dll"
  79. //
  80. // CC contact info
  81. FUNCTION long QNV_CCCtrl_CCInfo(long uInfoType,ref string pDestCC,ref string pOutValue,long nBufSize) library "qnviccub.dll"
  82. //
  83. //远程C/S SOCKET
  84. //终端
  85. FUNCTION long QNV_Socket_Client(long uSktType,long nHandle,long nValue,ref string pInValue,long nInValueLen) library "qnviccub.dll"
  86. //服务器端
  87. FUNCTION long QNV_Socket_Server(long uSktType,long nValue,ref string pInValue,long nInValueLen) library "qnviccub.dll"
  88. //UDP模块
  89. FUNCTION long QNV_Socket_UDP(long uUDPType,long nValue,ref string pInAddr,ref string pInValue,long nInValueLen) library "qnviccub.dll"
  90. end prototypes
  91. type variables
  92. constant long WM_USER=1024
  93. //事件产生后保存的数据最大长度,需要保存即时消息400字节内容加附加信息最大在550左右
  94. constant long MAX_BRIEVENT_DATA =600
  95. /*
  96. global type BRIEVENT from structure
  97. character uVersion;//结构版本,保留
  98. character uReserv;//保留
  99. int uChannelID;//通道ID
  100. long lEventType;//事件类型ID 查看BRI_EVENT.lEventType Define
  101. long lEventHandle;//事件相关句柄
  102. long lResult;//事件相关数值
  103. long lParam;//保留,扩展时使用
  104. character szData[600];
  105. character szDataEx[32];
  106. end type
  107. */
  108. //////////////////////////////////////////////////////////////////////
  109. // BRI_EVENT.lEventType Define
  110. // 事件类型定义.同步与系统发出的窗口消息(请选择其中一种方式处理)
  111. ///////////////////////////////////////////////////////////////////////
  112. // 本地电话机摘机事件
  113. constant long BriEvent_PhoneHook =1
  114. // 本地电话机挂机事件
  115. constant long BriEvent_PhoneHang =2
  116. // 外线通道来电响铃事件
  117. // BRI_EVENT.lResult 为响铃次数
  118. // BRI_EVENT.szData[0]='0' 开始1秒响铃
  119. // BRI_EVENT.szData[0]='1' 为1秒响铃完成,开始4秒静音
  120. constant long BriEvent_CallIn =3
  121. // 得到来电号码
  122. // BRI_EVENT.lResult=0 呼入来电(正常呼入来电)
  123. // BRI_EVENT.lResult=1 呼入中第二次来电
  124. // BRI_EVENT.szData[0]='0' DTMF模式来电
  125. // BRI_EVENT.szData[0]='1' FSK模式来电
  126. // 该事件可能在响铃前,也可能在响铃后
  127. constant long BriEvent_GetCallID =4
  128. // 对方停止呼叫(产生一个未接电话)
  129. constant long BriEvent_StopCallIn =5
  130. // 调用开始拨号后,全部号码拨号结束
  131. constant long BriEvent_DialEnd =6
  132. // 播放文件结束事件
  133. // BRI_EVENT.lEventHandle 播放文件时返回的句柄ID
  134. constant long BriEvent_PlayFileEnd =7
  135. // 多文件连播结束事件
  136. //
  137. constant long BriEvent_PlayMultiFileEnd =8
  138. //播放字符结束
  139. constant long BriEvent_PlayStringEnd =9
  140. // 播放文件结束准备重复播放
  141. // BRI_EVENT.lEventHandle 播放文件时返回的句柄ID
  142. //
  143. constant long BriEvent_RepeatPlayFile =10
  144. // 给本地设备发送震铃信号时发送号码结束
  145. constant long BriEvent_SendCallIDEnd =11
  146. //给本地设备发送震铃信号时超时
  147. //默认响DEFAULT_RING_TIMEOUT(12)次后超时
  148. constant long BriEvent_RingTimeOut =12
  149. //正在内线震铃
  150. // BRI_EVENT.lResult 已经响铃的次数
  151. // BRI_EVENT.szData[0]='0' 开始一次响铃
  152. // BRI_EVENT.szData[0]='1' 一次响铃完成,准备静音
  153. constant long BriEvent_Ringing =13
  154. // 通话时检测到一定时间的静音.默认为5秒
  155. constant long BriEvent_Silence =14
  156. // 线路接通时收到DTMF码事件
  157. // 该事件不能区分通话中是本地话机按键还是对方话机按键触发
  158. constant long BriEvent_GetDTMFChar =15
  159. // 拨号后,被叫方摘机事件(该事件仅做参考,原因如下:)
  160. // 原因:
  161. // 该事件只适用于拨打是标准信号音的号码时,也就是拨号后带有标准回铃音的号码。
  162. // 如:当拨打的对方号码是彩铃(彩铃手机号)或系统提示音(179xx)都不是标准回铃音时该事件无效。
  163. //
  164. // 反极信号是模拟线路中唯一可靠的判断对方摘机的方法,只是一方面需要开通才有该功能,另一方面在有些地方,即使申请也未必受理,因为该功能原本是针对公用电话计费的。
  165. // 没有该功能,利用信号音做判断依据,但可靠性不能做到100%,尤其是在被叫方为彩铃时,检测率很低
  166. // 拥有反级服务方式一:向电信的PSTN线路申请开通,该方式操作性不强,原因如上所述
  167. // 拥有反级服务方式二:购买一个手机sim/3g卡,再购买一个带反级服务的sim/3g平台设备(200人民币左右),该设备会引出一个电话线接入到USB设备
  168. // BRI_EVENT.lResult : 0 为语音信号分析的结果
  169. // BRI_EVENT.lResult : 1 为反级检测的结果
  170. constant long BriEvent_RemoteHook =16
  171. // 挂机事件
  172. // 如果线路检测到被叫方摘机后,被叫方挂机时会触发该事件,不然被叫方挂机后就触发BriEvent_Busy事件
  173. // 该事件或者BriEvent_Busy的触发都表示PSTN线路已经被断开
  174. // 备注:该事件是根据线路的忙音信号检测,如果没有忙音就不会触发该事件
  175. // 如果有反级服务就为可靠提示
  176. // BRI_EVENT.lResult : 0 为语音信号分析的结果
  177. // BRI_EVENT.lResult : 1 为反级检测的结果
  178. constant long BriEvent_RemoteHang =17
  179. // 检测到忙音事件,表示PSTN线路已经被断开
  180. constant long BriEvent_Busy =18
  181. // 本地摘机后检测到拨号音
  182. constant long BriEvent_DialTone =19
  183. // 只有在本地话机摘机,没有调用软摘机时,检测到DTMF拨号
  184. constant long BriEvent_PhoneDial =20
  185. // 电话机拨号结束呼出事件。
  186. // 也就时电话机拨号后接收到标准回铃音或者15秒超时
  187. // BRI_EVENT.lResult=0 检测到回铃音// 注意:如果线路是彩铃是不会触发该类型
  188. // BRI_EVENT.lResult=1 拨号超时
  189. // BRI_EVENT.lResult=2 动态检测拨号码结束(根据中国大陆的号码规则进行智能分析,仅做参考)
  190. // BRI_EVENT.szData[0]='1' 软摘机拨号结束后回铃了
  191. // BRI_EVENT.szData[0]='0' 电话机拨号中回铃了
  192. constant long BriEvent_RingBack =21
  193. // MIC插入状态
  194. // 只适用具有该功能的设备
  195. constant long BriEvent_MicIn =22
  196. // MIC拔出状态
  197. // 只适用具有该功能的设备
  198. constant long BriEvent_MicOut =23
  199. // 拍插簧(Flash)完成事件,拍插簧完成后可以检测拨号音后进行二次拨号
  200. // BRI_EVENT.lResult=TEL_FLASH 用户使用电话机进行拍叉簧完成
  201. // BRI_EVENT.lResult=SOFT_FLASH 调用StartFlash函数进行拍叉簧完成
  202. constant long BriEvent_FlashEnd =24
  203. // 拒接完成
  204. constant long BriEvent_RefuseEnd =25
  205. // 语音识别完成
  206. constant long BriEvent_SpeechResult =26
  207. //PSTN线路断开,线路进入空闲状态
  208. //当前没有软摘机而且话机也没摘机
  209. constant long BriEvent_PSTNFree =27
  210. // 接收到对方准备发送传真的信号
  211. constant long BriEvent_RemoteSendFax =30
  212. // 接收传真完成
  213. constant long BriEvent_FaxRecvFinished =31
  214. // 接收传真失败
  215. constant long BriEvent_FaxRecvFailed =32
  216. // 发送传真完成
  217. constant long BriEvent_FaxSendFinished =33
  218. // 发送传真失败
  219. constant long BriEvent_FaxSendFailed =34
  220. // 启动声卡失败
  221. constant long BriEvent_OpenSoundFailed =35
  222. // 产生一个PSTN呼入/呼出日志
  223. constant long BriEvent_CallLog =36
  224. //检测到连续的静音
  225. //使用QNV_GENERAL_CHECKSILENCE启动后检测到设定的静音长度
  226. constant long BriEvent_RecvSilence =37
  227. //检测到连续的声音
  228. //使用QNV_GENERAL_CHECKVOICE启动后检测到设定的语音长度
  229. constant long BriEvent_RecvVoice =38
  230. //远程上传事件
  231. // BRI_EVENT.lResult 启动上传时返回的本次操作的句柄
  232. constant long BriEvent_UploadSuccess =50
  233. constant long BriEvent_UploadFailed =51
  234. // 远程连接已被断开
  235. constant long BriEvent_RemoteDisconnect =52
  236. //HTTP远程下载文件完成
  237. //BRI_EVENT.lResult 启动下载时返回的本次操作的句柄
  238. constant long BriEvent_DownloadSuccess =60
  239. constant long BriEvent_DownloadFailed =61
  240. //线路检测结果
  241. //BRI_EVENT.lResult 为检测结果信息
  242. //1:能软拨号
  243. //2:线路没接反
  244. //3:能软拨号而且线路没接反
  245. constant long BriEvent_CheckLine =70
  246. // 应用层调用软摘机/软挂机成功事件
  247. // BRI_EVENT.lResult=0 软摘机
  248. // BRI_EVENT.lResult=1 软挂机
  249. constant long BriEvent_EnableHook =100
  250. // 喇叭被打开或者/关闭
  251. // BRI_EVENT.lResult=0 关闭
  252. // BRI_EVENT.lResult=1 打开
  253. constant long BriEvent_EnablePlay =101
  254. // MIC被打开或者关闭
  255. // BRI_EVENT.lResult=0 关闭
  256. // BRI_EVENT.lResult=1 打开
  257. constant long BriEvent_EnableMic =102
  258. // 耳机被打开或者关闭
  259. // BRI_EVENT.lResult=0 关闭
  260. // BRI_EVENT.lResult=1 打开
  261. constant long BriEvent_EnableSpk =103
  262. // 电话机跟电话线(PSTN)断开/接通(DoPhone)
  263. // BRI_EVENT.lResult=0 断开
  264. // BRI_EVENT.lResult=1 接通
  265. constant long BriEvent_EnableRing =104
  266. // 修改输入的线路line通道
  267. // BRI_EVENT.lResult linein id值
  268. constant long BriEvent_SelectLineIn =105
  269. // 开始软件拨号
  270. // BRI_EVENT.szData 准备拨的号码
  271. constant long BriEvent_DoStartDial =106
  272. // 喇叭语音通道被选择
  273. // BRI_EVENT.lResult 选择的mux值
  274. constant long BriEvent_EnablePlayMux =107
  275. //改变设备控制状态
  276. constant long BriEvent_DevCtrl =110
  277. //硬解码来电
  278. constant long BriEvent_CallInEx =196
  279. // 重新打开设备成功
  280. // 保留
  281. constant long BriEvent_ReopenSucccess =197
  282. // 接收到来电号码,包括通话中FSK
  283. constant long BriEvent_RecvedFSK =198
  284. //设备错误
  285. //BRI_EVENT.lResult=3 表示设备可能被移除了
  286. //其它可以忽略不做处理
  287. constant long BriEvent_DevErr =199
  288. // CCCtrl Event
  289. // CC控制相关事件
  290. // BRI_EVENT.szData 保存消息相关信息
  291. // 消息内的参数和内容使用2个换行分隔
  292. // 每个参数使用1个换行分隔
  293. constant long BriEvent_CC_ConnectFailed =200//连接失败
  294. constant long BriEvent_CC_LoginFailed =201//登陆失败
  295. constant long BriEvent_CC_LoginSuccess =202//登陆成功
  296. constant long BriEvent_CC_SystemTimeErr =203//系统时间错误
  297. constant long BriEvent_CC_CallIn =204//有CC呼入请求
  298. constant long BriEvent_CC_CallOutFailed =205//呼叫失败
  299. constant long BriEvent_CC_CallOutSuccess =206//呼叫成功,正在呼叫
  300. constant long BriEvent_CC_Connecting =207//呼叫正在连接
  301. constant long BriEvent_CC_Connected =208//呼叫连通
  302. constant long BriEvent_CC_CallFinished =209//呼叫结束
  303. constant long BriEvent_CC_ReplyBusy =210//对方回复忙过来
  304. constant long BriEvent_CC_GetDTMF =211//接收到DTMF
  305. constant long BriEvent_CC_PlayFileEnd =212//播放文件结束
  306. constant long BriEvent_CC_RecvedMsg =220//接收到用户即时消息
  307. constant long BriEvent_CC_RecvedCmd =221//接收到用户自定义命令
  308. constant long BriEvent_CC_RegSuccess =225//注册CC成功
  309. constant long BriEvent_CC_RegFailed =226//注册CC失败
  310. constant long BriEvent_CC_RecvFileRequest =230//接收到用户发送的文件请求
  311. constant long BriEvent_CC_TransFileFinished =231//传输文件结束
  312. constant long BriEvent_CC_AddContactSuccess =240//增加好友成功
  313. constant long BriEvent_CC_AddContactFailed =241//增加好友失败
  314. constant long BriEvent_CC_InviteContact =242//接收到增加好好友邀请
  315. constant long BriEvent_CC_ReplyAcceptContact =243//对方回复同意为好友
  316. constant long BriEvent_CC_ReplyRefuseContact =244//对方回复拒绝为好友
  317. constant long BriEvent_CC_AcceptContactSuccess =245//接受好友成功
  318. constant long BriEvent_CC_AcceptContactFailed =246//接受好友失败
  319. constant long BriEvent_CC_RefuseContactSuccess =247//拒绝好友成功
  320. constant long BriEvent_CC_RefuseContactFailed =248//拒绝好友失败
  321. constant long BriEvent_CC_DeleteContactSuccess =249//删除好友成功
  322. constant long BriEvent_CC_DeleteContactFailed =250//删除好友失败
  323. constant long BriEvent_CC_ContactUpdateStatus =251//好友登陆状态改变
  324. constant long BriEvent_CC_ContactDownendStatus =252//获取到所有好友改变完成
  325. //c/s socket收发数据事件
  326. //终端接收到的事件
  327. constant long BriEvent_Socket_C_ConnectSuccess =300//连接成功
  328. constant long BriEvent_Socket_C_ConnectFailed =301//连接失败
  329. constant long BriEvent_Socket_C_ReConnect =302//开始重新连接
  330. constant long BriEvent_Socket_C_ReConnectFailed =303//重新连接失败
  331. constant long BriEvent_Socket_C_ServerClose =304//服务器断开连接
  332. constant long BriEvent_Socket_C_DisConnect =305//连接激活超时
  333. constant long BriEvent_Socket_C_RecvedData =306//接收到服务端发送过来的数据
  334. //
  335. //服务器端接收到的事件
  336. constant long BriEvent_Socket_S_NewLink =340//有新连接进入
  337. constant long BriEvent_Socket_S_DisConnect =341//终端连接激活超时
  338. constant long BriEvent_Socket_S_ClientClose =342//终端断开连接了
  339. constant long BriEvent_Socket_S_RecvedData =343//接收到终端发送过来的数据
  340. //
  341. //UDP事件
  342. constant long BriEvent_Socket_U_RecvedData =360//接收到UDP数据
  343. //
  344. constant long BriEvent_EndID =500//空ID
  345. ///////////////////////////////////////////////////////////////
  346. //消息定义说明
  347. //////////////////////////////////////////////////////////////
  348. //默认事件消息ID,如果有冲突可以使用QNV_EVENT_SETEVENTMSGID修改该消息回调值
  349. constant long BRI_EVENT_MESSAGE =WM_USER+2000
  350. //默认缓冲录音数据消息ID,如果有冲突可以使用QNV_RECORD_BUF_SETCBMSGID修改该消息回调值
  351. constant long BRI_RECBUF_MESSAGE =WM_USER+2001
  352. //
  353. //语音文件编码格式ID
  354. //除了BRI_WAV_FORMAT_PCM8K16B外,其它格式需要系统语音编码库支持
  355. //如果系统不支持在开始文件录音时将被返回BCERR_NOTSUPPORTFORMAT
  356. constant long BRI_WAV_FORMAT_DEFAULT =0 // BRI_AUDIO_FORMAT_PCM8K16B
  357. constant long BRI_WAV_FORMAT_ALAW8K =1 // 8k/s
  358. constant long BRI_WAV_FORMAT_ULAW8K =2 // 8k/s
  359. constant long BRI_WAV_FORMAT_IMAADPCM8K4B =3 // 4k/s
  360. constant long BRI_WAV_FORMAT_PCM8K8B =4 // 8k/s
  361. constant long BRI_WAV_FORMAT_PCM8K16B =5 //16k/s
  362. constant long BRI_WAV_FORMAT_MP38K8B =6 //~1.2k/s
  363. constant long BRI_WAV_FORMAT_MP38K16B =7 //~2.4k/s
  364. constant long BRI_WAV_FORMAT_TM8K1B =8 //~1.5k/s
  365. constant long BRI_WAV_FORMAT_GSM6108K =9 //~2.2k/s
  366. constant long BRI_WAV_FORMAT_END =255 //无效ID
  367. //保留最多256个
  368. ////////////////////////////////////////////////////////////
  369. //----------------------------------------------------------------------------------
  370. //设备信息
  371. constant long QNV_DEVINFO_GETCHIPTYPE =1//获取USB芯片模块类型
  372. constant long QNV_DEVINFO_GETCHIPS =2//获取USB模块数量,该值等于最后一个通道的DEVID+1
  373. constant long QNV_DEVINFO_GETTYPE =3//获取通道设备类型
  374. constant long QNV_DEVINFO_GETMODULE =4//获取通道功能模块
  375. constant long QNV_DEVINFO_GETCHIPCHID =5//获取通道所在USB芯片的中的传输ID(0或者1)
  376. constant long QNV_DEVINFO_GETSERIAL =6//获取通道序列号(0-n)
  377. constant long QNV_DEVINFO_GETCHANNELS =7//获取通道数量
  378. constant long QNV_DEVINFO_GETDEVID =8//获取通道所在的USB芯片ID(0-n)
  379. constant long QNV_DEVINFO_GETDLLVER =9//获取DLL版本号
  380. constant long QNV_DEVINFO_GETCHIPCHANNEL =10//获取该USB模块第一个传输ID所在的通道号
  381. constant long QNV_DEVINFO_GETCHANNELTYPE =11//通道线路接外线还是话机类型
  382. constant long QNV_DEVINFO_GETCHIPCHANNELS =12//获取该USB模块第二个传输ID所在的通道号
  383. constant long QNV_DEVINFO_FILEVERSION =20//获取DLL的文件版本
  384. //---------------------------------------------------------------------------------
  385. //参数类型列表
  386. //uParamType (可以使用API自动保存/读取)
  387. constant long QNV_PARAM_BUSY =1//检测到几个忙音回调
  388. constant long QNV_PARAM_DTMFLEVEL =2//dtmf检测时允许的性噪声比(0-5)
  389. constant long QNV_PARAM_DTMFVOL =3//dtmf检测时允许的能量(1-100)
  390. constant long QNV_PARAM_DTMFNUM =4//dtmf检测时允许的持续时间(2-10)
  391. constant long QNV_PARAM_DTMFLOWINHIGH =5//dtmf低频不能超过高频值(默认为7)
  392. constant long QNV_PARAM_DTMFHIGHINLOW =6//dtmf高频不能超过低频值(默认为5)
  393. constant long QNV_PARAM_DIALSPEED =7//拨号的DTMF长度(1ms-60000ms)
  394. constant long QNV_PARAM_DIALSILENCE =8//拨号时的间隔静音长度(1ms-60000ms)
  395. constant long QNV_PARAM_DIALVOL =9//拨号音量大小
  396. constant long QNV_PARAM_RINGSILENCE =10//来电不响铃多少时间超时算未接电话
  397. constant long QNV_PARAM_CONNECTSILENCE =11//通话时连续多少时间静音后回调
  398. constant long QNV_PARAM_RINGBACKNUM =12//拨几个数字以上后检测回铃开始有效//默认为2个,可起到忽略出局号码后检测的回铃音
  399. constant long QNV_PARAM_SWITCHLINEIN =13//自动切换LINEIN选择
  400. constant long QNV_PARAM_FLASHELAPSE =14//拍插簧间隔
  401. constant long QNV_PARAM_FLASHENDELAPSE =15//拍插簧后延迟一定时间再回调事件
  402. constant long QNV_PARAM_RINGELAPSE =16//内线震铃时时间长度
  403. constant long QNV_PARAM_RINGSILENCEELAPSE =17//内线震铃时静音长度
  404. constant long QNV_PARAM_RINGTIMEOUT =18//内线震铃时超时次数
  405. constant long QNV_PARAM_RINGCALLIDTYPE =19//内线震铃时发送号码的方式dtmf/fsk
  406. constant long QNV_PARAM_REFUSEELAPSE =20//拒接时间隔时间长度
  407. constant long QNV_PARAM_DIALTONETIMEOUT =21//检测拨号音超时
  408. constant long QNV_PARAM_MINCHKFLASHELAPSE =22//拍插簧检测时挂机至少的时间ms,挂机时间小于该值就不算拍插簧
  409. constant long QNV_PARAM_MAXCHKFLASHELAPSE =23//拍插簧检测时挂机最长的时间ms,挂机时间大于该值就不算拍插簧
  410. constant long QNV_PARAM_HANGUPELAPSE =24//检测电话机挂机时的至少时间长度ms,//建议挂机检测时间在拍插簧以上,避免发生挂机后又检测到拍插
  411. constant long QNV_PARAM_OFFHOOKELAPSE =25//检测电话机摘机时的至少时间长度ms
  412. constant long QNV_PARAM_RINGHIGHELAPSE =26//检测来电震铃时响铃的至少时间长度ms
  413. constant long QNV_PARAM_RINGLOWELAPSE =27//检测来电震铃时不响铃的至少时间长度ms
  414. constant long QNV_PARAM_SPEECHGENDER =30//语音设置性别
  415. constant long QNV_PARAM_SPEECHTHRESHOLD =31//语音识别门限
  416. constant long QNV_PARAM_SPEECHSILENCEAM =32//语音识别静音门限
  417. constant long QNV_PARAM_ECHOTHRESHOLD =33//回音抵消处理抵消门限参数
  418. constant long QNV_PARAM_ECHODECVALUE =34//回音抵消处理减少增益参数
  419. constant long QNV_PARAM_SIGSILENCEAM =35//信号音/线路通话分析的静音门限
  420. constant long QNV_PARAM_LINEINFREQ1TH =40//第一组线路双频模式信号音频率
  421. constant long QNV_PARAM_LINEINFREQ2TH =41//第二组线路双频模式信号音频率
  422. constant long QNV_PARAM_LINEINFREQ3TH =42//第三组线路双频模式信号音频率
  423. constant long QNV_PARAM_ADBUSYMINFREQ =45//检测忙音叠加时最小频率
  424. constant long QNV_PARAM_ADBUSYMAXFREQ =46//检测忙音叠加时最大频率
  425. //增益控制
  426. constant long QNV_PARAM_AM_MIC =50//MIC增益
  427. constant long QNV_PARAM_AM_SPKOUT =51//耳机spk增益
  428. constant long QNV_PARAM_AM_LINEIN =52//线路输入能量
  429. constant long QNV_PARAM_AM_LINEOUT =53//mic到线路能量+播放语音到到线路能量
  430. constant long QNV_PARAM_AM_DOPLAY =54//喇叭输出增益
  431. //
  432. constant long QNV_PARAM_CITYCODE =60//城市区号,适合中国大陆
  433. constant long QNV_PARAM_PROXYDIAL =61//代拨号
  434. constant long QNV_PARAM_FINDSVRTIMEOUT =70//设置自动CC搜索超时时间
  435. constant long QNV_PARAM_CONFJITTERBUF =71//会议交换的动态缓冲大小
  436. constant long QNV_PARAM_RINGTHRESHOLD =80//来电响铃信号分析门限
  437. constant long QNV_PARAM_DTMFCALLIDLEVEL =100//dtmf来电号码检测时允许的性噪声比(0-7)
  438. constant long QNV_PARAM_DTMFCALLIDNUM =101//dtmf来电号码检测时允许的持续时间(2-10)
  439. constant long QNV_PARAM_DTMFCALLIDVOL =102//dtmf来电号码检测时允许的能量要求
  440. //设备控制/状态
  441. //uCtrlType
  442. constant long QNV_CTRL_DOSHARE =1//设备共享模式
  443. constant long QNV_CTRL_DOHOOK =2//软件摘挂机控制
  444. constant long QNV_CTRL_DOPHONE =3//控制电话机是否可用,可控制话机震铃,实现硬拍插簧等
  445. constant long QNV_CTRL_DOPLAY =4//喇叭控制开关
  446. constant long QNV_CTRL_DOLINETOSPK =5//线路声音到耳机,用耳机通话时打开
  447. constant long QNV_CTRL_DOPLAYTOSPK =6//播放的语音到耳机
  448. constant long QNV_CTRL_DOMICTOLINE =7//MIC说话声到电话线
  449. constant long QNV_CTRL_ECHO =8//打开/关闭回音抵消
  450. constant long QNV_CTRL_RECVFSK =9//打开/关闭接收FSK来电号码
  451. constant long QNV_CTRL_RECVDTMF =10//打开/关闭接收DTMF
  452. constant long QNV_CTRL_RECVSIGN =11//打开/关闭信号音检测
  453. constant long QNV_CTRL_WATCHDOG =12//打开关闭看门狗
  454. constant long QNV_CTRL_PLAYMUX =13//选择到喇叭的语音通道 line1x/pcplay ch0/line2x/pcplay ch1
  455. constant long QNV_CTRL_PLAYTOLINE =14//播放的语音到line
  456. constant long QNV_CTRL_SELECTLINEIN =15//选择输入的线路line通道
  457. constant long QNV_CTRL_SELECTADCIN =16//选择输入的为线路还是MIC语音
  458. constant long QNV_CTRL_PHONEPOWER =17//打开/关闭给话机供电使能,如果不给话机供电,dophone切换后,话机将不可用,所有对话机的操作都无效
  459. constant long QNV_CTRL_RINGPOWER =18//内线震铃使能
  460. constant long QNV_CTRL_LEDPOWER =19//LED指示灯
  461. constant long QNV_CTRL_LINEOUT =20//线路输出使能
  462. constant long QNV_CTRL_SWITCHOUT =21//硬件回音抵消
  463. constant long QNV_CTRL_UPLOAD =22//打开/关闭设备数据上传功能,关闭后将接收不到设备语音数据
  464. constant long QNV_CTRL_DOWNLOAD =23//打开/关闭设备数据下载功能,关闭后将不能发送语音/拨号到设备
  465. constant long QNV_CTRL_POLARITY =24//开关级性反转摘机检测
  466. constant long QNV_CTRL_ADBUSY =25//是否打开检测忙音叠加时环境(只有在使用两路外线网关时由于同时挂机才会触发忙音被叠加的环境,普通用户不需要使用)
  467. constant long QNV_CTRL_RECVCALLIN =26//打开/关闭软解码来电
  468. constant long QNV_CTRL_READFRAMENUM =27//一次请求读取的USB帧数量,越大占用CPU越小,延迟也就越大,一帧为4ms,最大30帧,也就是设置范围为(1-30)
  469. constant long QNV_CTRL_DTMFCALLID =28//忽略/启用DTMF模式接收来电号码,默认是开启检测的
  470. //以下状态不能设置(set),只能获取(get)
  471. constant long QNV_CTRL_PHONE =30//电话机摘挂机状态
  472. constant long QNV_CTRL_MICIN =31//mic插入状态
  473. constant long QNV_CTRL_RINGTIMES =32//来电响铃的次数
  474. constant long QNV_CTRL_RINGSTATE =33//来电响铃状态,正在响还是不响
  475. //
  476. //放音控制
  477. //uPlayType
  478. constant long QNV_PLAY_FILE_START =1//开始播放文件
  479. constant long QNV_PLAY_FILE_SETCALLBACK =2//设置播放文件回调函数
  480. constant long QNV_PLAY_FILE_SETVOLUME =3//设置播放文件音量
  481. constant long QNV_PLAY_FILE_GETVOLUME =4//获取播放文件音量
  482. constant long QNV_PLAY_FILE_PAUSE =5//暂停播放文件
  483. constant long QNV_PLAY_FILE_RESUME =6//恢复播放文件
  484. constant long QNV_PLAY_FILE_ISPAUSE =7//检测是否已暂停播放
  485. constant long QNV_PLAY_FILE_SETREPEAT =8//设置是否循环播放
  486. constant long QNV_PLAY_FILE_ISREPEAT =9//检测是否在循环播放
  487. constant long QNV_PLAY_FILE_SEEKTO =11//跳转到某个时间(s)
  488. constant long QNV_PLAY_FILE_SETREPEATTIMEOUT =12//设置循环播放超时次数
  489. constant long QNV_PLAY_FILE_GETREPEATTIMEOUT =13//获取循环播放超时次数
  490. constant long QNV_PLAY_FILE_SETPLAYTIMEOUT =14//设置播放总共超时时长(s)
  491. constant long QNV_PLAY_FILE_GETPLAYTIMEOUT =15//获取播放总共超时时长
  492. constant long QNV_PLAY_FILE_TOTALLEN =16//总共时间(s)
  493. constant long QNV_PLAY_FILE_CURSEEK =17//当前播放的文件时间位置(s)
  494. constant long QNV_PLAY_FILE_ELAPSE =18//总共播放的时间(s),包括重复的,后退的,不包括暂停的时间
  495. constant long QNV_PLAY_FILE_ISPLAY =19//该句柄是否有效播放句柄
  496. constant long QNV_PLAY_FILE_ENABLEAGC =20//打开关闭自动增益
  497. constant long QNV_PLAY_FILE_ISENABLEAGC =21//检测是否打开自动增益
  498. constant long QNV_PLAY_FILE_STOP =22//停止播放指定文件
  499. constant long QNV_PLAY_FILE_GETCOUNT =23//获取正在文件播放的数量,可以用来检测如果没有了就可以关闭喇叭
  500. constant long QNV_PLAY_FILE_STOPALL =24//停止播放所有文件
  501. constant long QNV_PLAY_FILE_REMOTEBUFFERLEN =25//远程播放需要下载的缓冲长度
  502. constant long QNV_PLAY_FILE_REMOTEBUFFERSEEK =26//远程播放已经下载的缓冲长度
  503. //--------------------------------------------------------
  504. constant long QNV_PLAY_BUF_START =1//开始缓冲播放
  505. constant long QNV_PLAY_BUF_SETCALLBACK =2//设置缓冲播放回调函数
  506. constant long QNV_PLAY_BUF_SETWAVEFORMAT =3//设置缓冲播放语音的格式
  507. constant long QNV_PLAY_BUF_WRITEDATA =4//写缓冲数据
  508. constant long QNV_PLAY_BUF_SETVOLUME =5//设置音量
  509. constant long QNV_PLAY_BUF_GETVOLUME =6//获取音量
  510. constant long QNV_PLAY_BUF_SETUSERVALUE =7//设置用户自定义数据
  511. constant long QNV_PLAY_BUF_GETUSERVALUE =8//获取用户自定义数据
  512. constant long QNV_PLAY_BUF_ENABLEAGC =9//打开关闭自动增益
  513. constant long QNV_PLAY_BUF_ISENABLEAGC =10//检测是否打开了自动增益
  514. constant long QNV_PLAY_BUF_PAUSE =11//暂停播放文件
  515. constant long QNV_PLAY_BUF_RESUME =12//恢复播放文件
  516. constant long QNV_PLAY_BUF_ISPAUSE =13//检测是否已暂停播放
  517. constant long QNV_PLAY_BUF_STOP =14//停止缓冲播放
  518. constant long QNV_PLAY_BUF_FREESIZE =15//空闲字节
  519. constant long QNV_PLAY_BUF_DATASIZE =16//数据字节
  520. constant long QNV_PLAY_BUF_TOTALSAMPLES =17//总共播放的采样数
  521. constant long QNV_PLAY_BUF_SETJITTERBUFSIZE =18//设置动态缓冲长度,当缓冲数据播放为空后下次播放前缓冲内必须大于该长度的语音,可用在播放网络数据包,避免网络抖动
  522. constant long QNV_PLAY_BUF_GETJITTERBUFSIZE =19//获取动态缓冲长度
  523. constant long QNV_PLAY_BUF_GETCOUNT =20//获取正在缓冲播放的数量,可以用来检测如果没有了就可以关闭喇叭
  524. constant long QNV_PLAY_BUF_STOPALL =21//停止所有播放
  525. //-------------------------------------------------------
  526. constant long QNV_PLAY_MULTIFILE_START =1//开始多文件连续播放
  527. constant long QNV_PLAY_MULTIFILE_PAUSE =2//暂停多文件连续播放
  528. constant long QNV_PLAY_MULTIFILE_RESUME =3//恢复多文件连续播放
  529. constant long QNV_PLAY_MULTIFILE_ISPAUSE =4//检测是否暂停了多文件连续播放
  530. constant long QNV_PLAY_MULTIFILE_SETVOLUME =5//设置多文件播放音量
  531. constant long QNV_PLAY_MULTIFILE_GETVOLUME =6//获取多文件播放音量
  532. constant long QNV_PLAY_MULTIFILE_ISSTART =7//是否启动了多文件连续播放
  533. constant long QNV_PLAY_MULTIFILE_STOP =8//停止多文件连续播放
  534. constant long QNV_PLAY_MULTIFILE_STOPALL =9//停止全部多文件连续播放
  535. //--------------------------------------------------------
  536. constant long QNV_PLAY_STRING_INITLIST =1//初始化字符播放列表
  537. constant long QNV_PLAY_STRING_START =2//开始字符播放
  538. constant long QNV_PLAY_STRING_PAUSE =3//暂停字符播放
  539. constant long QNV_PLAY_STRING_RESUME =4//恢复字符播放
  540. constant long QNV_PLAY_STRING_ISPAUSE =5//检测是否暂停了字符播放
  541. constant long QNV_PLAY_STRING_SETVOLUME =6//设置字符播放音量
  542. constant long QNV_PLAY_STRING_GETVOLUME =7//获取字符播放音量
  543. constant long QNV_PLAY_STRING_ISSTART =8//是否启动了播放字符
  544. constant long QNV_PLAY_STRING_STOP =9//停止字符播放
  545. constant long QNV_PLAY_STRING_STOPALL =10//停止全部字符播放
  546. //--------------------------------------------------------
  547. //录音控制
  548. //uRecordType
  549. constant long QNV_RECORD_FILE_START =1//开始文件录音
  550. constant long QNV_RECORD_FILE_PAUSE =2//暂停文件录音
  551. constant long QNV_RECORD_FILE_RESUME =3//恢复文件录音
  552. constant long QNV_RECORD_FILE_ISPAUSE =4//检测是否暂停文件录音
  553. constant long QNV_RECORD_FILE_ELAPSE =5//获取已经录音的时间长度,单位(s)
  554. constant long QNV_RECORD_FILE_SETVOLUME =6//设置文件录音音量
  555. constant long QNV_RECORD_FILE_GETVOLUME =7//获取文件录音音量
  556. constant long QNV_RECORD_FILE_PATH =8//获取文件录音的路径
  557. constant long QNV_RECORD_FILE_STOP =9//停止某个文件录音
  558. constant long QNV_RECORD_FILE_STOPALL =10//停止全部文件录音
  559. constant long QNV_RECORD_FILE_COUNT =11//获取正在录音的数量
  560. constant long QNV_RECORD_FILE_SETROOT =20//设置默认录音目录
  561. constant long QNV_RECORD_FILE_GETROOT =21//获取默认录音目录
  562. //----------------------------------------------------------
  563. constant long QNV_RECORD_BUF_HWND_START =1//开始缓冲录音窗口回调
  564. constant long QNV_RECORD_BUF_HWND_STOP =2//停止某个缓冲录音窗口回调
  565. constant long QNV_RECORD_BUF_HWND_STOPALL =3//停止全部缓冲录音窗口回调
  566. constant long QNV_RECORD_BUF_CALLBACK_START =4//开始缓冲录音回调
  567. constant long QNV_RECORD_BUF_CALLBACK_STOP =5//停止某个缓冲录音回调
  568. constant long QNV_RECORD_BUF_CALLBACK_STOPALL =6//停止全部缓冲录音回调
  569. constant long QNV_RECORD_BUF_SETCBSAMPLES =7//设置回调采样数,每秒8K,如果需要20ms回调一次就设置为20*8=160,/默认为20ms回调一次
  570. constant long QNV_RECORD_BUF_GETCBSAMPLES =8//获取设置的回调采样数
  571. constant long QNV_RECORD_BUF_ENABLEECHO =9//打开关闭回调的语音是否经过回音抵消
  572. constant long QNV_RECORD_BUF_ISENABLEECHO =10//检测回调的语音回音抵消是否打开
  573. constant long QNV_RECORD_BUF_PAUSE =11//暂停缓冲录音
  574. constant long QNV_RECORD_BUF_ISPAUSE =12//检测是否暂停缓冲录音
  575. constant long QNV_RECORD_BUF_RESUME =13//恢复缓冲录音
  576. constant long QNV_RECORD_BUF_SETVOLUME =14//设置缓冲录音音量
  577. constant long QNV_RECORD_BUF_GETVOLUME =15//获取缓冲录音音量
  578. constant long QNV_RECORD_BUF_SETWAVEFORMAT =16//设置录音回调的语音编码格式ID,默认为BRI_WAV_FORMAT_PCM8K16B
  579. constant long QNV_RECORD_BUF_GETWAVEFORMAT =17//获取录音回调的语音编码格式ID
  580. constant long QNV_RECORD_BUF_GETCBMSGID =100//查询缓冲录音的窗口回调的消息ID,默认为BRI_RECBUF_MESSAGE
  581. constant long QNV_RECORD_BUF_SETCBMSGID =101//设置缓冲录音的窗口回调的消息ID,默认为BRI_RECBUF_MESSAGE
  582. //--------------------------------------------------------
  583. //会议控制
  584. //uConferenceType
  585. constant long QNV_CONFERENCE_CREATE =1//创建会议
  586. constant long QNV_CONFERENCE_ADDTOCONF =2//增加通道到某个会议
  587. constant long QNV_CONFERENCE_GETCONFID =3//获取某个通道的会议ID
  588. constant long QNV_CONFERENCE_SETSPKVOLUME =4//设置会议中某个通道放音音量
  589. constant long QNV_CONFERENCE_GETSPKVOLUME =5//获取会议中某个通道放音音量
  590. constant long QNV_CONFERENCE_SETMICVOLUME =6//设置会议中某个通道录音音量
  591. constant long QNV_CONFERENCE_GETMICVOLUME =7//获取会议中某个通道录音音量
  592. constant long QNV_CONFERENCE_PAUSE =8//暂停某个会议
  593. constant long QNV_CONFERENCE_RESUME =9//恢复某个会议
  594. constant long QNV_CONFERENCE_ISPAUSE =10//检测是否暂停了某个会议
  595. constant long QNV_CONFERENCE_ENABLESPK =11//打开关闭会议者听功能
  596. constant long QNV_CONFERENCE_ISENABLESPK =12//检测会议者听功能是否打开
  597. constant long QNV_CONFERENCE_ENABLEMIC =13//打开关闭会议者说功能
  598. constant long QNV_CONFERENCE_ISENABLEMIC =14//检测会议者说功能是否打开
  599. constant long QNV_CONFERENCE_ENABLEAGC =15//打开关闭自动增益
  600. constant long QNV_CONFERENCE_ISENABLEAGC =16//检测是否打开了自动增益
  601. constant long QNV_CONFERENCE_DELETECHANNEL =17//把通道从会议中删除
  602. constant long QNV_CONFERENCE_DELETECONF =18//删除一个会议
  603. constant long QNV_CONFERENCE_DELETEALLCONF =19//删除全部会议
  604. constant long QNV_CONFERENCE_GETCONFCOUNT =20//获取会议数量
  605. constant long QNV_CONFERENCE_SETJITTERBUFSIZE =21//设置会议动态缓冲长度
  606. constant long QNV_CONFERENCE_GETJITTERBUFSIZE =22//获取会议动态缓冲长度
  607. constant long QNV_CONFERENCE_RECORD_START =30//开始录音
  608. constant long QNV_CONFERENCE_RECORD_PAUSE =31//暂停录音
  609. constant long QNV_CONFERENCE_RECORD_RESUME =32//恢复录音
  610. constant long QNV_CONFERENCE_RECORD_ISPAUSE =33//检测是否暂停录音
  611. constant long QNV_CONFERENCE_RECORD_FILEPATH =34//获取录音文件路径
  612. constant long QNV_CONFERENCE_RECORD_ISSTART =35//检测会议是否已经启动了录音
  613. constant long QNV_CONFERENCE_RECORD_STOP =36//停止指定会议录音
  614. constant long QNV_CONFERENCE_RECORD_STOPALL =37//停止全部会议录音
  615. //--------------------------------------------------------
  616. //语音广播
  617. constant long QNV_BROADCAST_SEND_START =1//开始广播
  618. constant long QNV_BROADCAST_SEND_STOP =2//停止广播
  619. constant long QNV_BROADCAST_SEND_ADDADDR =3//增加目标地址
  620. constant long QNV_BROADCAST_SEND_DELETEADDR =4//删除目标地址
  621. constant long QNV_BROADCAST_SEND_PAUSE =5//暂停广播
  622. constant long QNV_BROADCAST_SEND_RESUME =6//恢复广播
  623. constant long QNV_BROADCAST_SEND_ISPAUSE =7//检测是否暂停了广播
  624. constant long QNV_BROADCAST_SEND_SETVOLUME =8//设置广播音量
  625. constant long QNV_BROADCAST_SEND_GETVOLUME =9//获取广播音量
  626. constant long QNV_BROADCAST_RECV_START =30//开始接收
  627. constant long QNV_BROADCAST_RECV_STOP =31//停止接收
  628. constant long QNV_BROADCAST_RECV_SETVOLUME =32//设置接收音量
  629. constant long QNV_BROADCAST_RECV_GETVOLUME =33//获取接收音量
  630. //
  631. //speech语音识别
  632. constant long QNV_SPEECH_CONTENTLIST =1//设置识别汉字内容列表
  633. constant long QNV_SPEECH_STARTSPEECH =2//开始识别
  634. constant long QNV_SPEECH_ISSPEECH =3//检测是否正在识别
  635. constant long QNV_SPEECH_STOPSPEECH =4//停止识别
  636. constant long QNV_SPEECH_GETRESULT =5//获取识别后的结果,使用返回地址方式
  637. constant long QNV_SPEECH_GETRESULTEX =6//获取识别后的结果,使用复制内存方式
  638. //------------------------------------------------------------
  639. //传真模块接口
  640. constant long QNV_FAX_LOAD =1//加载启动传真模块
  641. constant long QNV_FAX_UNLOAD =2//卸载传真模块
  642. constant long QNV_FAX_STARTSEND =3//开始发送传真
  643. constant long QNV_FAX_STOPSEND =4//停止发送传真
  644. constant long QNV_FAX_STARTRECV =5//开始接收传真
  645. constant long QNV_FAX_STOPRECV =6//停止接收传真
  646. constant long QNV_FAX_STOP =7//停止全部
  647. constant long QNV_FAX_PAUSE =8//暂停
  648. constant long QNV_FAX_RESUME =9//恢复
  649. constant long QNV_FAX_ISPAUSE =10//是否暂停
  650. constant long QNV_FAX_TYPE =11//传真状态是接受或者发送
  651. constant long QNV_FAX_TRANSMITSIZE =12//已经发送的图象数据大小
  652. constant long QNV_FAX_IMAGESIZE =13//总共需要发送图象数据大小
  653. constant long QNV_FAX_SAVESENDFILE =14//保存发送的传真图片
  654. //----------------------------------------------------------
  655. //函数event
  656. //ueventType
  657. constant long QNV_EVENT_POP =1//获取后自动删除当前事件,pValue->PBRI_EVENT
  658. constant long QNV_EVENT_POPEX =2//获取后自动删除当前事件,pValue->字符分隔格式:chid,type,handle,result,data
  659. constant long QNV_EVENT_TYPE =3//获取事件类型,获取后不会自动删除,获取成功后使用 QNV_GENERAL_EVENT_REMOVE删除该事件
  660. constant long QNV_EVENT_HANDLE =4//获取事件的句柄信息
  661. constant long QNV_EVENT_RESULT =5//获取事件数值
  662. constant long QNV_EVENT_PARAM =6//获取事件保留值
  663. constant long QNV_EVENT_DATA =7//获取事件数据
  664. constant long QNV_EVENT_DATAEX =8//获取事件附加数据
  665. constant long QNV_EVENT_REMOVE =20//删除最老的事件
  666. constant long QNV_EVENT_REMOVEALL =21//删除所有事件
  667. constant long QNV_EVENT_REGWND =30//注册接收消息的窗口句柄
  668. constant long QNV_EVENT_UNREGWND =31//删除接收消息的窗口句柄
  669. constant long QNV_EVENT_REGCBFUNC =32//注册事件回调函数()
  670. constant long QNV_EVENT_REGCBFUNCEX =33//注册事件回调函数(结构体方式)
  671. constant long QNV_EVENT_UNREGCBFUNC =34//删除事件回调函数
  672. constant long QNV_EVENT_GETEVENTMSGID =100//查询窗口回调的消息ID,默认为BRI_EVENT_MESSAGE
  673. constant long QNV_EVENT_SETEVENTMSGID =101//设置窗口回调的消息ID,默认为BRI_EVENT_MESSAGE
  674. //-----------------------------------------------------------
  675. //函数general
  676. //uGeneralType
  677. constant long QNV_GENERAL_STARTDIAL =1//开始拨号
  678. constant long QNV_GENERAL_SENDNUMBER =2//二次拨号
  679. constant long QNV_GENERAL_REDIAL =3//重拨最后一次呼叫的号码,程序退出后该号码被释放
  680. constant long QNV_GENERAL_STOPDIAL =4//停止拨号
  681. constant long QNV_GENERAL_ISDIALING =5//是否在拨号
  682. constant long QNV_GENERAL_STARTRING =10//phone口震铃
  683. constant long QNV_GENERAL_STOPRING =11//phone口震铃停止
  684. constant long QNV_GENERAL_ISRINGING =12//phone口是否在震铃
  685. constant long QNV_GENERAL_STARTFLASH =20//拍插簧
  686. constant long QNV_GENERAL_STOPFLASH =21//拍插簧停止
  687. constant long QNV_GENERAL_ISFLASHING =22//是否正在拍插簧
  688. constant long QNV_GENERAL_STARTREFUSE =30//拒接当前呼入
  689. constant long QNV_GENERAL_STOPREFUSE =31//终止拒接操作
  690. constant long QNV_GENERAL_ISREFUSEING =32//是否正在拒接当前呼入
  691. constant long QNV_GENERAL_GETCALLIDTYPE =50//获取本次呼入的来电号码类型
  692. constant long QNV_GENERAL_GETCALLID =51//获取本次呼入的来电号码
  693. constant long QNV_GENERAL_GETTELDIALCODE =52//获取本次电话机拨出的号码,return buf
  694. constant long QNV_GENERAL_GETTELDIALCODEEX =53//获取本次电话机拨出的号码,outbuf
  695. constant long QNV_GENERAL_RESETTELDIALBUF =54//清空电话拨的号码缓冲
  696. constant long QNV_GENERAL_GETTELDIALLEN =55//电话机已拨的号码长度
  697. constant long QNV_GENERAL_STARTSHARE =60//启动设备共享服务
  698. constant long QNV_GENERAL_STOPSHARE =61//停止设备共享服务
  699. constant long QNV_GENERAL_ISSHARE =62//是否启用设备共享服务模块
  700. constant long QNV_GENERAL_ENABLECALLIN =70//禁止/启用外线呼入
  701. constant long QNV_GENERAL_ISENABLECALLIN =71//外线是否允许呼入
  702. constant long QNV_GERERAL_ISLINEHOOK =72//外线是否摘机状态(电话机摘机并连着line或者有软摘机都表示摘机状态)
  703. constant long QNV_GENERAL_ISLINEFREE =73//外线是否空闲(没有摘机并且没有来电表示空闲)
  704. constant long QNV_GENERAL_RESETRINGBACK =80//复位检测到的回铃,重新启动检测
  705. constant long QNV_GENERAL_CHECKCHANNELID =81//检测通道ID是否合法
  706. constant long QNV_GENERAL_CHECKDIALTONE =82//检测摘机后是否检测到拨号音了
  707. constant long QNV_GENERAL_CHECKSILENCE =83//检测线路静音
  708. constant long QNV_GENERAL_CHECKVOICE =84//检测线路声音
  709. constant long QNV_GENERAL_CHECKLINESTATE =85//检测线路状态(是否可正常拨号/是否接反)
  710. constant long QNV_GENERAL_SETUSERVALUE =90//用户自定义通道数据,系统退出后自动释放
  711. constant long QNV_GENERAL_SETUSERSTRING =91//用户自定义通道字符,系统退出后自动释放
  712. constant long QNV_GENERAL_GETUSERVALUE =92//获取用户自定义通道数据
  713. constant long QNV_GENERAL_GETUSERSTRING =93//获取用户自定义通道字符
  714. constant long QNV_GENERAL_USEREVENT =99//发送用户自定义事件
  715. //初始化通道INI文件参数
  716. constant long QNV_GENERAL_READPARAM =100//读取ini文件进行全部参数初始化
  717. constant long QNV_GENERAL_WRITEPARAM =101//把参数写入到ini文件
  718. //
  719. //call log
  720. constant long QNV_CALLLOG_BEGINTIME =1//获取呼叫开始时间
  721. constant long QNV_CALLLOG_RINGBACKTIME =2//获取回铃时间
  722. constant long QNV_CALLLOG_CONNECTEDTIME =3//获取接通时间
  723. constant long QNV_CALLLOG_ENDTIME =4//获取结束时间
  724. constant long QNV_CALLLOG_CALLTYPE =5//获取呼叫类型/呼入/呼出
  725. constant long QNV_CALLLOG_CALLRESULT =6//获取呼叫结果
  726. constant long QNV_CALLLOG_CALLID =7//获取号码
  727. constant long QNV_CALLLOG_CALLRECFILE =8//获取录音文件路径
  728. constant long QNV_CALLLOG_DELRECFILE =9//删除录音文件,要删除前必须先停止录音
  729. constant long QNV_CALLLOG_RESET =20//复位所有状态
  730. constant long QNV_CALLLOG_AUTORESET =21//自动复位
  731. //
  732. //工具函数,跟设备无关
  733. //uToolType
  734. constant long QNV_TOOL_PSTNEND =1//检测PSTN号码是否已经结束
  735. constant long QNV_TOOL_CODETYPE =2//判断号码类型(内地手机/固话)
  736. constant long QNV_TOOL_LOCATION =3//获取号码所在地信息
  737. constant long QNV_TOOL_DISKFREESPACE =4//获取该硬盘剩余空间(M)
  738. constant long QNV_TOOL_DISKTOTALSPACE =5//获取该硬盘总共空间(M)
  739. constant long QNV_TOOL_DISKLIST =6//获取硬盘列表
  740. constant long QNV_TOOL_RESERVID1 =7//保留ID1
  741. constant long QNV_TOOL_RESERVID2 =8//保留ID2
  742. constant long QNV_TOOL_CONVERTFMT =9//转换语音文件格式
  743. constant long QNV_TOOL_SELECTDIRECTORY =10//选择目录
  744. constant long QNV_TOOL_SELECTFILE =11//选择文件
  745. constant long QNV_TOOL_CONVERTTOTIFF =12//转换图片到传真tiff格式,必须先启动传真模块,支持格式:(*.doc,*.htm,*.html,*.mht,*.jpg,*.pnp.....)
  746. constant long QNV_TOOL_APMQUERYSUSPEND =13//是否允许PC进入待机/休眠,打开USB设备后才能使用
  747. constant long QNV_TOOL_SLEEP =14//让调用该方法的线程等待N毫秒
  748. constant long QNV_TOOL_SETUSERVALUE =15//保存用户自定义信息
  749. constant long QNV_TOOL_GETUSERVALUE =16//读取用户自定义信息
  750. constant long QNV_TOOL_SETUSERVALUEI =17//保存用户自定义信息
  751. constant long QNV_TOOL_GETUSERVALUEI =18//读取用户自定义信息
  752. constant long QNV_TOOL_ISFILEEXIST =20//检测本地文件是否存在
  753. constant long QNV_TOOL_FSKENCODE =21//FSK编码
  754. constant long QNV_TOOL_WRITELOG =22//写文件日志->userlog目录
  755. //------------------------------------------------------
  756. //存储操作
  757. constant long QNV_STORAGE_PUBLIC_READ =1//读取共享区域数据
  758. constant long QNV_STORAGE_PUBLIC_READSTR =2//读取共享区域字符串数据,读到'\0'自动结束
  759. constant long QNV_STORAGE_PUBLIC_WRITE =3//写入共享区域数据
  760. constant long QNV_STORAGE_PUBLIC_SETREADPWD =4//设置读取共享区域数据的密码
  761. constant long QNV_STORAGE_PUBLIC_SETWRITEPWD =5//设置写入共享区域数据的密码
  762. constant long QNV_STORAGE_PUBLIC_GETSPACESIZE =6//获取存储空间长度
  763. //---以下为内部使用接口
  764. constant long QNV_STORAGE_GLOBALINFO_READ =11//读取
  765. constant long QNV_STORAGE_GLOBALINFO_READSTR =12//读取字符串
  766. constant long QNV_STORAGE_GLOBALINFO_WRITE =13//写入
  767. constant long QNV_STORAGE_GLOBALINFO_SETREADPWD =14//设置读取区域数据的密码
  768. constant long QNV_STORAGE_GLOBALINFO_SETWRITEPWD =15//设置写入区域数据的密码
  769. constant long QNV_STORAGE_GLOBALINFO_GETSPACESIZE =16//获取存储空间长度
  770. constant long QNV_STORAGE_PRIVATEINFO_READ =21//读取
  771. constant long QNV_STORAGE_PRIVATEINFO_READSTR =22//读取字符串
  772. constant long QNV_STORAGE_PRIVATEINFO_WRITE =23//写入
  773. constant long QNV_STORAGE_PRIVATEINFO_SETREADPWD =24//设置读取区域数据的密码
  774. constant long QNV_STORAGE_PRIVATEINFO_SETWRITEPWD =25//设置写入区域数据的密码
  775. constant long QNV_STORAGE_PRIVATEINFO_GETSPACESIZE=26//获取存储空间长度
  776. constant long QNV_STORAGE_OEMINFO_READ =31//读取
  777. constant long QNV_STORAGE_OEMINFO_READSTR =32//读取字符串
  778. constant long QNV_STORAGE_OEMINFO_WRITE =33//写入
  779. constant long QNV_STORAGE_OEMINFO_SETREADPWD =34//设置读取区域数据的密码
  780. constant long QNV_STORAGE_OEMINFO_SETWRITEPWD =35//设置写入区域数据的密码
  781. constant long QNV_STORAGE_OEMINFO_GETSPACESIZE =36//获取存储空间长度
  782. constant long QNV_STORAGE_DEVINFO_READ =41//读取
  783. constant long QNV_STORAGE_DEVINFO_READSTR =42//读取字符串
  784. constant long QNV_STORAGE_DEVINFO_WRITE =43//写入
  785. constant long QNV_STORAGE_DEVINFO_SETREADPWD =44//设置读取区域数据的密码
  786. constant long QNV_STORAGE_DEVINFO_SETWRITEPWD =45//设置写入区域数据的密码
  787. constant long QNV_STORAGE_DEVINFO_GETSPACESIZE =46//获取存储空间长度
  788. //--------------------------------------------------------------------------------------
  789. //远程文件操作
  790. //RemoteType
  791. constant long QNV_REMOTE_UPLOAD_START =1//上传文件到WEB服务器(http协议)
  792. constant long QNV_REMOTE_UPLOAD_DATA =2//上传字符数据到WEB服务器(send/post)(保留)
  793. constant long QNV_REMOTE_UPLOAD_STOP =3//上传文件到WEB服务器(http协议)
  794. constant long QNV_REMOTE_UPLOAD_LOG =4//重新上传以前没有成功的记录
  795. constant long QNV_REMOTE_UPLOAD_TOTALSIZE =5//获取需要上传的总共长度
  796. constant long QNV_REMOTE_UPLOAD_TRANSIZE =6//获取已经上传的长度
  797. constant long QNV_REMOTE_UPLOAD_CLEARLOG =7//删除所有未成功的日志
  798. constant long QNV_REMOTE_UPLOAD_COUNT =8//上传文件到WEB服务器(http协议)
  799. constant long QNV_REMOTE_UPLOAD_STOPALL =9//上传文件到WEB服务器(http协议)
  800. constant long QNV_REMOTE_DOWNLOAD_START =20//开始下载远程文件
  801. constant long QNV_REMOTE_DOWNLOAD_STOP =21//停止下载远程文件
  802. constant long QNV_REMOTE_DOWNLOAD_TOTALSIZE =22//下载的总共长度
  803. constant long QNV_REMOTE_DOWNLOAD_TRANSIZE =23//已经下载的长度
  804. constant long QNV_REMOTE_DOWNLOAD_COUNT =24//下载远程文件
  805. constant long QNV_REMOTE_DOWNLOAD_STOPALL =25//下载远程文件
  806. constant long QNV_REMOTE_SETCOOKIE =40//设置HTTP连接的COOKIE
  807. //------------------------------------------------------
  808. //CC控制
  809. constant long QNV_CCCTRL_SETLICENSE =1//设置license
  810. constant long QNV_CCCTRL_SETSERVER =2//设置服务器IP地址
  811. constant long QNV_CCCTRL_LOGIN =3//登陆
  812. constant long QNV_CCCTRL_LOGOUT =4//退出
  813. constant long QNV_CCCTRL_ISLOGON =5//是否登陆成功了
  814. constant long QNV_CCCTRL_REGCC =6//注册CC号码
  815. //
  816. //语音
  817. constant long QNV_CCCTRL_CALL_START =1//呼叫CC
  818. constant long QNV_CCCTRL_CALL_VOIP =2//VOIP代拨固话
  819. constant long QNV_CCCTRL_CALL_STOP =3//停止呼叫
  820. constant long QNV_CCCTRL_CALL_ACCEPT =4//接听来电
  821. constant long QNV_CCCTRL_CALL_BUSY =5//发送忙提示
  822. constant long QNV_CCCTRL_CALL_REFUSE =6//拒接
  823. constant long QNV_CCCTRL_CALL_STARTPLAYFILE =7//播放文件
  824. constant long QNV_CCCTRL_CALL_STOPPLAYFILE =8//停止播放文件
  825. constant long QNV_CCCTRL_CALL_STARTRECFILE =9//开始文件录音
  826. constant long QNV_CCCTRL_CALL_STOPRECFILE =10//停止文件录音
  827. constant long QNV_CCCTRL_CALL_HOLD =11//保持通话,不影响播放文件
  828. constant long QNV_CCCTRL_CALL_UNHOLD =12//恢复通话
  829. constant long QNV_CCCTRL_CALL_SWITCH =13//呼叫转移到其它CC
  830. constant long QNV_CCCTRL_CALL_CONFHANDLE =20//获取呼叫句柄所在的会议句柄
  831. //
  832. //消息/命令
  833. constant long QNV_CCCTRL_MSG_SENDMSG =1//发送消息
  834. constant long QNV_CCCTRL_MSG_SENDCMD =2//发送命令
  835. //
  836. //
  837. //好友
  838. constant long QNV_CCCTRL_CONTACT_ADD =1//增加好友
  839. constant long QNV_CCCTRL_CONTACT_DELETE =2//删除好友
  840. constant long QNV_CCCTRL_CONTACT_ACCEPT =3//接受好友
  841. constant long QNV_CCCTRL_CONTACT_REFUSE =4//拒绝好友
  842. constant long QNV_CCCTRL_CONTACT_GET =5//获取好友状态
  843. //
  844. //
  845. //好友信息/自己的信息
  846. constant long QNV_CCCTRL_CCINFO_OWNERCC =1//获取本人登陆的CC
  847. constant long QNV_CCCTRL_CCINFO_NICK =2//获取CC的昵称,如果没有输入CC就表示获取本人的昵称
  848. //
  849. //------------------------------------------------------------
  850. //socket 终端控制
  851. //内部使用接口
  852. constant long QNV_SOCKET_CLIENT_CONNECT =1//连接到服务器
  853. constant long QNV_SOCKET_CLIENT_DISCONNECT =2//断开服务器
  854. constant long QNV_SOCKET_CLIENT_STARTRECONNECT =3//自动重连服务器
  855. constant long QNV_SOCKET_CLIENT_STOPRECONNECT =4//停止自动重连服务器
  856. constant long QNV_SOCKET_CLIENT_ISCONNECTED =5//检测是否已经连接到服务器了
  857. constant long QNV_SOCKET_CLIENT_SENDDATA =6//立即发送数据
  858. constant long QNV_SOCKET_CLIENT_APPENDDATA =7//追加发送数据到队列,如果可以发送就立即发送
  859. //socket 服务器端控制
  860. //内部使用接口
  861. //UDP模块
  862. constant long QNV_SOCKET_UDP_OPEN =1//打开UDP模块
  863. constant long QNV_SOCKET_UDP_CLOSE =2//关闭UDP模块
  864. constant long QNV_SOCKET_UDP_ISOPEN =3//是否打开了UDP模块
  865. constant long QNV_SOCKET_UDP_SENDDATA =4//向目标地址/端口发送数据
  866. //
  867. //操作记录
  868. string US_MESSAGE
  869. STRING US_COMMINGPHONE
  870. end variables
  871. forward prototypes
  872. public subroutine appendstatus (string szstatus)
  873. public subroutine opendoplay ()
  874. public subroutine startrecord ()
  875. public subroutine stoprecord ()
  876. public subroutine closedevice ()
  877. public subroutine closedoplay ()
  878. public subroutine hangup ()
  879. public subroutine hook ()
  880. public function integer opendevice (long handle)
  881. public subroutine uf_event_message (long messagenumber, unsignedlong wparam, long lparam)
  882. end prototypes
  883. event opendevice1();//打开设备
  884. if QNV_OpenDevice(0,0,"") <= 0 then
  885. AppendStatus("打开设备失败")
  886. else
  887. AppendStatus("打开设备成功")
  888. string ls;
  889. QNV_Event(0,QNV_EVENT_REGWND,handle(parent),"",ls,0);//获取第1个通道的事件回调
  890. //QNV_Event(1,QNV_EVENT_REGWND,handle(parent),"",ls,0);//如果有多路一起使用就需要注册使用的通道ID
  891. end if
  892. end event
  893. event closedevice1();//关闭设备
  894. QNV_CloseDevice(0,0);
  895. AppendStatus("关闭设备")
  896. end event
  897. event ue_event_message1(long messagenumber, unsignedlong wparam, long lparam);
  898. CHOOSE CASE MessageNumber
  899. CASE BRI_EVENT_MESSAGE
  900. //lparam 为结构体地址//http://topic.csdn.net/t/20060223/14/4572978.html
  901. string ls_tmp2;
  902. BRIEVENT e;
  903. CopyMemory(e,lparam,652);//sizeof(e)
  904. CHOOSE CASE e.lEventType
  905. CASE BriEvent_PhoneHook
  906. AppendStatus("本地话机摘机");
  907. CASE BriEvent_PhoneHang
  908. AppendStatus("本地话机挂机");
  909. CASE BriEvent_CallIn
  910. AppendStatus("来电响铃");
  911. CASE BriEvent_GetCallID
  912. AppendStatus("得到来电号码");
  913. AppendStatus(e.szData);
  914. CASE BriEvent_PhoneDial
  915. AppendStatus("话机拨号");
  916. AppendStatus(e.szData);
  917. CASE BriEvent_BUSY
  918. AppendStatus("线路忙");
  919. CASE BriEvent_RemoteHang
  920. AppendStatus("对方挂机,线路断开");
  921. CASE BriEvent_StopCallIn
  922. AppendStatus("停止呼入,产生未接电话...");
  923. CASE ELSE
  924. AppendStatus("其它事件,查看事件定义."+string(e.lEventType));
  925. END CHOOSE
  926. END CHOOSE
  927. end event
  928. event startrecord1();//开始录音
  929. //AppendStatus("录音失败 c:\a.wav");
  930. long lRet;
  931. string ls_tmp2;
  932. lRet=QNV_RecordFile(0,QNV_RECORD_FILE_START,0,0,"c:\a.wav");
  933. ls_tmp2=string(lRet);
  934. AppendStatus(ls_tmp2);
  935. if lRet <=0 then
  936. AppendStatus("录音失败 c:\a.wav.");
  937. else
  938. AppendStatus("开始录音 c:\a.wav");
  939. end if
  940. end event
  941. event stoprecord1();//停止录音
  942. QNV_RecordFile(0,QNV_RECORD_FILE_STOPALL,0,0,"");
  943. AppendStatus("停止录音");
  944. end event
  945. event hook1();//摘机
  946. QNV_SetDevCtrl(0,QNV_CTRL_DOHOOK,1);
  947. end event
  948. event hangup1();//挂机
  949. QNV_SetDevCtrl(0,QNV_CTRL_DOHOOK,0);
  950. end event
  951. event opendoplay1();//打开喇叭
  952. QNV_SetDevCtrl(0,QNV_CTRL_DOPLAY,1);
  953. end event
  954. event closedoplay1();//关闭喇叭
  955. QNV_SetDevCtrl(0,QNV_CTRL_DOPLAY,0);
  956. end event
  957. public subroutine appendstatus (string szstatus);//US_MESSAGE=string(today() , "HH-MM-SS")+": "+szStatus+char(13)+char(10)+US_MESSAGE;
  958. //w_main_scware.mle_1.text = US_MESSAGE
  959. return
  960. end subroutine
  961. public subroutine opendoplay ();//打开喇叭
  962. QNV_SetDevCtrl(0,QNV_CTRL_DOPLAY,1);
  963. end subroutine
  964. public subroutine startrecord ();//开始录音
  965. //AppendStatus("录音失败 c:\a.wav");
  966. long lRet;
  967. string ls_tmp2;
  968. lRet=QNV_RecordFile(0,QNV_RECORD_FILE_START,0,0,"c:\a.wav");
  969. ls_tmp2=string(lRet);
  970. AppendStatus(ls_tmp2);
  971. if lRet <=0 then
  972. AppendStatus("录音失败 c:\a.wav.");
  973. else
  974. AppendStatus("开始录音 c:\a.wav");
  975. end if
  976. end subroutine
  977. public subroutine stoprecord ();//停止录音
  978. QNV_RecordFile(0,QNV_RECORD_FILE_STOPALL,0,0,"");
  979. AppendStatus("停止录音");
  980. end subroutine
  981. public subroutine closedevice ();//关闭设备
  982. QNV_CloseDevice(0,0);
  983. AppendStatus("关闭设备")
  984. end subroutine
  985. public subroutine closedoplay ();//关闭喇叭
  986. QNV_SetDevCtrl(0,QNV_CTRL_DOPLAY,0);
  987. end subroutine
  988. public subroutine hangup ();//挂机
  989. QNV_SetDevCtrl(0,QNV_CTRL_DOHOOK,0);
  990. end subroutine
  991. public subroutine hook ();//摘机
  992. QNV_SetDevCtrl(0,QNV_CTRL_DOHOOK,1);
  993. end subroutine
  994. public function integer opendevice (long handle);//打开设备
  995. integer i, cnt
  996. if QNV_OpenDevice(0,0,"") <= 0 then
  997. AppendStatus("打开设备失败")
  998. else
  999. AppendStatus("打开设备成功")
  1000. string ls;
  1001. // QNV_Event(0,QNV_EVENT_REGWND,handle,"",ls,0);//获取第1个通道的事件回调
  1002. //QNV_Event(1,QNV_EVENT_REGWND,handle(parent),"",ls,0);//如果有多路一起使用就需要注册使用的通道ID
  1003. // QNV_Event(0,QNV_EVENT_REGWND,handle ,"",ls,0);
  1004. // MessageBox('handle ' , String(handle))
  1005. cnt = QNV_DevInfo(0,QNV_DEVINFO_GETCHANNELS)
  1006. //i = 0
  1007. for i = 1 to cnt
  1008. QNV_Event(i - 1,QNV_EVENT_REGWND,handle,"",ls,0);
  1009. next
  1010. end if
  1011. return cnt
  1012. end function
  1013. public subroutine uf_event_message (long messagenumber, unsignedlong wparam, long lparam);//String us_commingphone
  1014. CHOOSE CASE message.number
  1015. CASE UO_cc301.BRI_EVENT_MESSAGE
  1016. string ls_tmp2;
  1017. BRIEVENT e;
  1018. // lparam - 2 内存复制时,指针存在偏移;
  1019. CopyMemory(e,lparam - 2 ,652);//sizeof(e)
  1020. CHOOSE CASE e.lEventType
  1021. CASE UO_cc301.BriEvent_PhoneHook
  1022. //MessageBox('电话提示',"本地话机摘机");
  1023. US_COMMINGPHONE = ""
  1024. CASE UO_cc301.BriEvent_PhoneHang
  1025. //MessageBox('电话提示',"本地话机挂机");
  1026. US_COMMINGPHONE = ""
  1027. CASE UO_cc301.BriEvent_CallIn
  1028. //MessageBox('电话提示',"来电响铃");
  1029. CASE UO_cc301.BriEvent_GetCallID
  1030. Blob lb_phone
  1031. US_COMMINGPHONE = ""
  1032. lb_phone = Blob(e.szData)
  1033. US_COMMINGPHONE = String(lb_phone ,EncodingUTF8!)
  1034. // 来电弹出客户信息功能入口
  1035. s_edit_index_tran s_tran //翻页功能窗口 传递参数使用
  1036. s_tran.if_retrieve_all = TRUE //是否一次RETRIEVE所有行
  1037. s_tran.work_mode = 0 //0-单纯编辑模式, 1-选择模式
  1038. s_tran.arg_pkid = 0 //目标定位PKID (备用)
  1039. s_tran.arg_string_code = '' //查询列部分内容,用于初步筛选
  1040. s_tran.b_string = ''
  1041. //window main
  1042. string ls_WindowName
  1043. ls_WindowName = "w_cust_crm"
  1044. w_cust_crm crm
  1045. s_tran.b_string = 'PHONE'
  1046. s_tran.d_string = US_COMMINGPHONE
  1047. // 弹出窗口,显示来电信息
  1048. OpenWithParm(crm ,s_tran)
  1049. CASE UO_cc301.BriEvent_PhoneDial
  1050. // AppendStatus("话机拨号");
  1051. // AppendStatus(e.szData);
  1052. CASE UO_cc301.BriEvent_BUSY
  1053. // AppendStatus("线路忙");
  1054. CASE UO_cc301.BriEvent_RemoteHang
  1055. // AppendStatus("对方挂机,线路断开");
  1056. US_COMMINGPHONE = ""
  1057. CASE UO_cc301.BriEvent_StopCallIn
  1058. //AppendStatus("停止呼入,产生未接电话...");
  1059. US_COMMINGPHONE = ""
  1060. CASE ELSE
  1061. //AppendStatus("其它事件,查看事件定义."+String(e.lEventType));
  1062. END CHOOSE
  1063. END CHOOSE
  1064. end subroutine
  1065. on uo_cc301.create
  1066. call super::create
  1067. TriggerEvent( this, "constructor" )
  1068. end on
  1069. on uo_cc301.destroy
  1070. TriggerEvent( this, "destructor" )
  1071. call super::destroy
  1072. end on