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相关推荐

  1. C#实现IVR(基于东进的语音卡)-5

        /**//// <summary>     /// 语音资源操作类型     /// </summary>     public enum VoiceOperatorT ...

  2. C#实现IVR(基于东进的语音卡)-1

    上一年在公司做了一个小小的IVR项目.觉得这是一个和硬件驱动交互编程的不错例子. 共享一下.也讨论一下. 代码:(这个是调用系统驱动的DLL) using System; using System.T ...

  3. Delphi之东进数字语音卡(SS1)可复用源码

    Delphi之东进数字语音卡(SS1)可复用源码 作者:成晓旭 Blog:http://blog.csdn.net/cxxsoft (声明:欢迎转载,请保证文章的完整性) 由于工作原因,本人将不在从事 ...

  4. Delphi之东进模拟语音卡(D160A)可复用源码

    Delphi之东进模拟语音卡(D160A)可复用源码 作者:成晓旭 Blog:http://blog.csdn.net/cxxsoft (声明:欢迎转载,请保证文章的完整性) 设计简介: 1.   将 ...

  5. Delphi之东进数字语音卡(SS1)可复用源码 1

    Delphi之东进数字语音卡(SS1)

  6. Delphi之东进模拟语音卡(D160A)可复用源码(转)

    计 简介: 1.   将卡.通道分别单独进行设计与封装. 2.   所有的外部操作接口都封装在卡类这一类. 3.   在我的项目中,在卡类这一级还增加了适配器或者代理,分别实现了Adapter或Pro ...

  7. 东进语音卡 java_东进语音卡的声音文件格式

    转自东进论坛 语音卡只支持8K8bit a-law 单声道的 PCM.wave.mp3,您的立体声的mp3需要转换成单声道,8k 8bit的才能播放 问:怎么样把wav格式的文件转换成东进卡能播放的格 ...

  8. 企业级:基于语音卡呼叫中心系统 CTI语音服务器,电话排队系统,电话转接系统,电话录音系统

    <CTI通讯接口软件D081A>用  户  手  册 语音服务器软件源代码+用户手册+数据结构+开发文档 有需要的给我留言! 我的QQ  7732 4199  本系统基本上可以适用于 有语 ...

  9. 基于STM32电子钟语音报时

    基于STM32电子钟语音报时 1.硬件平台 CPU:STM32F103ZE 屏幕:3.5寸TFTLCD屏 语音播报: VS1053 SD卡.外扩Sram 2.功能实现   本示例主要设计两个界面:时间 ...

最新文章

  1. 实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化
  2. Linux学习之获取帮助
  3. HDU 1301 Jungle Roads(裸最小生成树)
  4. 深度学习在推荐领域的应用
  5. list mybatis批量保存_mybatis 批量将list数据插入到数据库的实现
  6. C++11新特性之lambda表达式
  7. 【CHM】.chm文件无法正常显示的解决方案
  8. 如何在请求转发的时候对url解码_Java技术分享:Forward和Redirect这两种转发方式的区别...
  9. 【转】python开发大全、系列文章、精品教程
  10. sklearn 特征降维利器 —— PCA TSNE
  11. 安卓手机内存满了,4个方法教你释放空间
  12. 精品H5小游戏源码-免费下载
  13. 【Android工具】更新QMD音乐下载软件,MP3音乐下载器
  14. 1179. 重新格式化部门表
  15. 【LVGL】animation动画路径方式介绍
  16. python中average什么意思,Python3——numpy中mean和average的区别
  17. Unity打包后窗口在PC端不按照设置的大小显示
  18. swift语言前景_swift语言从天而降,作为ios程序猿,我们如果面对?
  19. python+selenium环境安装及配置以及示例
  20. 怎么快速学习Python

热门文章

  1. EEG脑电信号常用处理方法
  2. 数据结构 图定义和实现查询最短路径
  3. 【操作系统 - 2】时间片轮转RR进程调度算法
  4. 月报|公众号 7 月文章汇总
  5. c语言中voild和int,C++的new和malloc
  6. 不做经营,一切为0(四)
  7. 谷歌地图Api部分使用
  8. 安装包制作软件 Inno Setup 5.5.4 汉化版(简体中文定制版)
  9. [高数]2023武忠祥第四章例12
  10. 夺命雷公狗---Smarty NO:04 设计篇2 变量调节器