C#实现IVR(基于东进的语音卡)-3
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Runtime.InteropServices;
5
6 namespace DJVoiceCard.Lib
7 {
8 public class DJFunction
9 {
10 /**//// <summary>
11 /// 初始化东进七号信令中继语音卡的硬件
12 /// </summary>
13 /// <param name="sIncFileName">INI系统配置文件名</param>
14 /// <param name="sVoiceIncFileName">提示音对照表文件名,一般使用PROMPT.INI</param>
15 /// <returns>0,成功;其他:-12,在读取INI文件时错误;
16 /// -17,打开驱动程序的设备文件时错误[驱动程序名为:DJPCI-东进七号信令中继语音卡,NT;DJPCI2K 东进七号信令中继语音卡,2000];
17 /// -18,检查硬件失败;
18 /// -19,读取提示音文件时失败;
19 /// </returns>
20 [DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
21 public static extern int DJSys_EnableCard(StringBuilder sIncFileName, StringBuilder sVoiceIncFileName);
22
23 /**//// <summary>
24 /// 结束所有中继语音卡的操作, 释放API所占用的资源, 复位中继语音卡的状态, 应该在程序结束前调用。
25 /// 由于同DJSys_EnableCard类似的原因,当调用本函数之后,你就不能再调用其他的有关数字中继卡的函数。
26 /// 只有DJSys_EnableCard函数成功后,才能调用本函数,并且要求成对出现。
27 /// </summary>
28 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
29 public static extern void DJSys_DisableCard();
30
31 /**//// <summary>
32 /// 得到系统内中继通道总数;
33 /// </summary>
34 /// <returns></returns>
35 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
36 public static extern int DJTrk_GetTotalTrunkNum();
37
38
39 /**//// <summary>
40 /// 维持文件录音和文件放音连续的函数。
41 /// 要求应用程序必须在小于4秒钟内调用本函数一次(允许多次)。
42 /// 在数字中继卡的底层驱动程序中,对每个语音通道开辟了64K的缓冲区。
43 /// 当进行文件方式的录音或放音时,不断的调用函数DJSys_PushPlay可以保证缓冲区的更新。
44 /// </summary>
45 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
46 public static extern void DJSys_PushPlay();
47
48 /**//// <summary>
49 /// 获得PCM中继ID
50 /// </summary>
51 /// <param name="trunkID">中继通道号;</param>
52 /// <returns></returns>
53 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
54 public static extern int DJTrk_GetPcmID(int trunkID);
55
56
57 /**//// <summary>
58 /// 根据中继通道号,来断开本中继通道与用户通道之间的双向连通,对应DJExg_SetLinkTrunkAndUser
59 /// </summary>
60 /// <param name="trunkID"></param>
61 /// <returns></returns>
62 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
63 public static extern bool DJExg_ClearLinkTrunkAndUserByTrunk(int trunkID);
64
65 /**//// <summary>
66 /// 使能发送DTMF的功能。
67 /// </summary>
68 /// <returns></returns>
69 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
70 public static extern bool DJSys_EnableDtmfSend();
71
72 /**//// <summary>
73 /// 取用户通道总数。如果是一片D161A/D081A卡,本函数返回16/8,依次类推。
74 /// 函数返回:● 系统内的用户通道数
75 /// </summary>
76 /// <returns> 系统内的用户通道数</returns>
77 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
78 public static extern int DJUser_GetTotalUserNum();
79
80 /**//// <summary>
81 /// 搜索一个空闲的语音通道
82 /// </summary>
83 /// <param name="trunkID"></param>
84 /// <param name="IsForTrunk"></param>
85 /// <returns></returns>
86 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
87 public static extern int DJVoc_SFVC_ForPlay_New(int trunkID, bool IsForTrunk);
88
89 /**//// <summary>
90 /// 播放语音文件
91 /// </summary>
92 /// <param name="voiceID"></param>
93 /// <param name="voiceName"></param>
94 /// <returns></returns>
95 [DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
96 public static extern bool DJVoc_PlayPromptFile(int voiceID,byte[] voiceName);
97
98 /**//// <summary>
99 /// 建立放音语音通道到中继通道的连通。本函数在本质上是一个中继通道去听语音通道。
100 /// 当中继通道处于准备好状态,语音通道已经开始操作(直接或间接调用过DJVoc_VoiceStart 函数),
101 /// 则可通过此函数将语音通道中的语音放给中继通道上的电话用户听。
102 /// </summary>
103 /// <param name="trunkID"></param>
104 /// <param name="voiceID"></param>
105 /// <returns></returns>
106 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
107 public static extern bool DJExg_SetLinkPlayVoiceToTrunk(int trunkID, int voiceID);
108
109 /**//// <summary>
110 /// 对用户模块馈电,这是系统的初始状态,当userID越界时,调用DJSYS_GetErrCode得到_ERR_InvalidID。
111 /// 只有在直流电源正常工作状态下,用户通道才能正常操作,系统启动后缺省为开电源。
112 /// 如果你正常的接入电源,则调用完本函数后,与该userID相连的电话机将会处于有馈电的状态,拿起话机听筒,在电话机上按键,会听到按键的声音。
113 /// 当该用户通道插入的是中继模块,用来接入模拟电话线时,调用本函数,相当于电话机摘机。
114 /// 由于这是系统的缺省状态,所以,如果是中继模块,在初始化时,需要将所有的中继模块挂机,这可以通过调用函数DJUser_SetPowerOFF来完成。
115 /// </summary>
116 /// <param name="userID">用户通道号</param>
117 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
118 public static extern void DJUser_SetPowerON(int userID);
119
120 /**//// <summary>
121 /// 允许用户通道在摘机时自动送拨号音,这是系统的缺省工作方式。当userID越界时,返回 0,同时置ErrCode=_ERR_InvalidID.
122 /// 当处于使能方式时,用户通道所连接的电话机摘机后,系统自动送拨号音,如果按下电话机上的按键,会自动停止拨号音;
123 /// 电话机挂机,也自动停止拨号音。
124 /// </summary>
125 /// <param name="userID"></param>
126 /// <returns></returns>
127 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
128 public static extern bool DJUser_EnableDialSound(int userID);
129 /**//// <summary>
130 /// 对给定的语音通道循环播放系统提示音
131 /// 函数返回:1● 操作成功;0 ● 操作失败,调用DJSys_GetErrCode函数将返回失败原因;
132 /// </summary>
133 /// <param name="voiceID">语音通道号</param>
134 /// <param name="voiceName">系统提示音名字</param>
135 /// <returns></returns>
136 [DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
137 public static extern bool DJVoc_LoopPlayPromptFile(int voiceID, StringBuilder voiceName);
138
139 /**//// <summary>
140 /// 搜索返回一个空闲的用于放音的语音通道
141 /// </summary>
142 /// <returns></returns>
143 [DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
144 public static extern int DJVoc_SearchFreeVoiceChannelForPlay();
145
146 /**//// <summary>
147 /// 检查是否正在对用户模块振铃。当userID越界时,返回 0,同时置ErrCode=_ERR_InvalidID
148 /// 函数返回:
149 /// 1● 正在振铃
150 /// 0● 非振铃
151 /// </summary>
152 /// <param name="userID"> 用户通道号</param>
153 /// <returns></returns>
154 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
155 public static extern bool DJUser_RingDetect(int userID);
156
157 /**//// <summary>
158 /// 使用户通道开始振铃。当userID越界时,返回 0,同时置ErrCode=_ERR_InvalidID。
159 /// 调用本函数,将会对用户模块所连接的电话机振铃,该振铃是断续的振铃声,由底层驱动程序来控制振铃的时间间隔.
160 /// 函数返回
161 /// 1● 操作成功
162 /// 0● 操作失败,调用DJSys_GetErrCode()将返回失败原因
163 /// 如果要使电话机振铃,必须正确的接入外接电源和铃流源。
164 /// </summary>
165 /// <param name="userID"> 用户通道号</param>
166 /// <returns></returns>
167 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
168 public static extern bool DJUser_StartRing(int userID);
169
170 /**//// <summary>
171 /// 停止用户模块的振铃。当userID越界时,返回 0,同时置ErrCode=_ERR_InvalidID。
172 /// 函数返回:
173 /// 1● 操作成功
174 /// 0● 操作失败,调用DJSys_GetErrCode()将返回失败原因
175 /// </summary>
176 /// <param name="userID">用户通道号</param>
177 /// <returns></returns>
178 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
179 public static extern bool DJUser_StopRing(int userID);
180
181 /**//// <summary>
182 /// 断开放音语音通道和用户通道之间的联接
183 /// </summary>
184 /// <param name="userID"></param>
185 /// <returns></returns>
186 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
187 public static extern bool DJExg_ClearLinkPlayVoiceFromUser(int userID);
188
189 /**//// <summary>
190 /// 复位用户DTMF拨号信息,拨号位数置 0,DTMF缓冲区清空。当userID越界时,返回 0,同时置ErrCode=_ERR_InvalidID。
191 /// 参考函数DJUser_GetDialCode的功能描述。
192 /// 函数返回:
193 /// 1● 操作成功
194 /// 0● 操作失败,调用DJSys_GetErrCode()将返回失败原因
195 /// </summary>
196 /// <param name="userID">用户通道号</param>
197 /// <returns></returns>
198 ///
199 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
200 public static extern bool DJUser_InitDialBuf(int userID);
201
202
203 /**//// <summary>
204 /// 得用LINK方式联接在本通道上的用户通道号。
205 /// </summary>
206 /// <param name="trunkID"></param>
207 /// <returns></returns>
208 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
209 public static extern int DJTrk_GetConnectUserID(int trunkID);
210
211 /**//// <summary>
212 /// 取得给本通道放音的语音通道号,如果没有放音通道与本中继通道相连,返回-1
213 /// </summary>
214 /// <param name="trunkID"></param>
215 /// <returns></returns>
216 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
217 public static extern int DJTrk_GetTrunkPlayID(int trunkID);
218
219
220 /**//// <summary>
221 /// 断开中继通道和放音语音通道的连通。
222 /// </summary>
223 /// <param name="trunkID"></param>
224 /// <returns></returns>
225 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
226 public static extern bool DJExg_ClearLinkPlayVoiceFromTrunk(int trunkID);
227
228 /**//// <summary>
229 /// 清空系统的DTMF缓冲区,如果在缓冲区中有DTMF按键的值,将会丢失
230 /// </summary>
231 /// <param name="trunkID"></param>
232 /// <returns></returns>
233 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
234 public static extern bool DJTrk_InitDtmfBuf(int trunkID);
235
236 /**//// <summary>
237 /// 检查该语音通道的语音操作是否结束,即录放音是否到达指定的大小。
238 /// </summary>
239 /// <param name="voiceChannelID"></param>
240 /// <returns></returns>
241 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
242 public static extern bool DJVoc_CheckVoiceEnd(int voiceChannelID);
243
244 /**//// <summary>
245 /// 停止文件放音。多次调用本函数没有影响
246 /// </summary>
247 /// <param name="trunkID"></param>
248 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
249 public static extern void DJVoc_StopPlayFile(int trunkID);
250
251 /**//// <summary>
252 /// 得到当前软件开发系统的安装目录。该目录等于INI配置文件中的InstallDir的设置。
253 /// </summary>
254 /// <returns></returns>
255 //[DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
256 //public static extern byte[] DJSys_GetInstallDir();
257 /**//// <summary>
258 /// 得到当前软件开发系统的安装目录。该目录等于INI配置文件中的InstallDir的设置。
259 /// </summary>
260 /// <returns></returns>
261 [DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
262 public static extern StringBuilder DJSys_GetInstallDir();
263
264 /**//// <summary>
265 /// 放音
266 /// </summary>
267 /// <param name="trunkID"></param>
268 /// <param name="FileName"></param>
269 /// <returns></returns>
270 [DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
271 public static extern bool DJVoc_PlayFile(int trunkID, byte[] FileName);
272 /**//// <summary>
273 /// 开始放音
274 /// </summary>
275 /// <param name="voiceChannelID"></param>
276 /// <returns></returns>
277 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
278 public static extern int DJVoc_VoiceStart(int voiceChannelID);
279 /**//// <summary>
280 /// 初始化中继通道索引放音
281 /// </summary>
282 /// <param name="trunkID">中继通道</param>
283 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
284 public static extern void DJVoc_InitIndexPlayFile(int trunkID);
285
286 /**//// <summary>
287 /// 增加索引放音文件。失败的可能原因有文件不存在,或者文件索引数组已满(最多100个)。
288 /// </summary>
289 /// <param name="trunkID">中继通道</param>
290 /// <param name="FileName">文件路径</param>
291 /// <returns></returns>
292 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
293 public static extern bool DJVoc_AddIndexPlayFile(int trunkID, byte[] FileName);
294
295
296 /**//// <summary>
297 /// 开始一次文件索引放音。
298 /// </summary>
299 /// <param name="trunkID">中继通道</param>
300 /// <returns></returns>
301 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
302 public static extern bool DJVoc_StartIndexPlayFile(int trunkID);
303
304
305 /**//// <summary>
306 /// 停止索引文件放音。该函数停止指定中继通道的索引文件放音,使用DJVoc_StartIndexPlayFile函数进行多文件放音结束,一定要调用该函数来停止放音
307 ///
308 /// </summary>
309 /// <param name="trinkID"></param>
310 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
311 public static extern void DJVoc_StopIndexPlayFile(int trinkID);
312
313 /**//// <summary>
314 /// 检查索引文件放音是否结束,并维护索引文件放音的持续。当进行索引文件放音时,必须调用该函数,以保证索引文件放音的连续性
315 /// </summary>
316 /// <param name="trunkID"></param>
317 /// <returns></returns>
318 [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
319 public static extern bool DJVoc_CheckIndexPlayEnd(int trunkID);
320 }
321}
C#实现IVR(基于东进的语音卡)-3相关推荐
- C#实现IVR(基于东进的语音卡)-5
/**//// <summary> /// 语音资源操作类型 /// </summary> public enum VoiceOperatorT ...
- C#实现IVR(基于东进的语音卡)-1
上一年在公司做了一个小小的IVR项目.觉得这是一个和硬件驱动交互编程的不错例子. 共享一下.也讨论一下. 代码:(这个是调用系统驱动的DLL) using System; using System.T ...
- Delphi之东进数字语音卡(SS1)可复用源码
Delphi之东进数字语音卡(SS1)可复用源码 作者:成晓旭 Blog:http://blog.csdn.net/cxxsoft (声明:欢迎转载,请保证文章的完整性) 由于工作原因,本人将不在从事 ...
- Delphi之东进模拟语音卡(D160A)可复用源码
Delphi之东进模拟语音卡(D160A)可复用源码 作者:成晓旭 Blog:http://blog.csdn.net/cxxsoft (声明:欢迎转载,请保证文章的完整性) 设计简介: 1. 将 ...
- Delphi之东进数字语音卡(SS1)可复用源码 1
Delphi之东进数字语音卡(SS1)
- Delphi之东进模拟语音卡(D160A)可复用源码(转)
计 简介: 1. 将卡.通道分别单独进行设计与封装. 2. 所有的外部操作接口都封装在卡类这一类. 3. 在我的项目中,在卡类这一级还增加了适配器或者代理,分别实现了Adapter或Pro ...
- 东进语音卡 java_东进语音卡的声音文件格式
转自东进论坛 语音卡只支持8K8bit a-law 单声道的 PCM.wave.mp3,您的立体声的mp3需要转换成单声道,8k 8bit的才能播放 问:怎么样把wav格式的文件转换成东进卡能播放的格 ...
- 企业级:基于语音卡呼叫中心系统 CTI语音服务器,电话排队系统,电话转接系统,电话录音系统
<CTI通讯接口软件D081A>用 户 手 册 语音服务器软件源代码+用户手册+数据结构+开发文档 有需要的给我留言! 我的QQ 7732 4199 本系统基本上可以适用于 有语 ...
- 基于STM32电子钟语音报时
基于STM32电子钟语音报时 1.硬件平台 CPU:STM32F103ZE 屏幕:3.5寸TFTLCD屏 语音播报: VS1053 SD卡.外扩Sram 2.功能实现 本示例主要设计两个界面:时间 ...
最新文章
- 实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化
- Linux学习之获取帮助
- HDU 1301 Jungle Roads(裸最小生成树)
- 深度学习在推荐领域的应用
- list mybatis批量保存_mybatis 批量将list数据插入到数据库的实现
- C++11新特性之lambda表达式
- 【CHM】.chm文件无法正常显示的解决方案
- 如何在请求转发的时候对url解码_Java技术分享:Forward和Redirect这两种转发方式的区别...
- 【转】python开发大全、系列文章、精品教程
- sklearn 特征降维利器 —— PCA TSNE
- 安卓手机内存满了,4个方法教你释放空间
- 精品H5小游戏源码-免费下载
- 【Android工具】更新QMD音乐下载软件,MP3音乐下载器
- 1179. 重新格式化部门表
- 【LVGL】animation动画路径方式介绍
- python中average什么意思,Python3——numpy中mean和average的区别
- Unity打包后窗口在PC端不按照设置的大小显示
- swift语言前景_swift语言从天而降,作为ios程序猿,我们如果面对?
- python+selenium环境安装及配置以及示例
- 怎么快速学习Python