C#实现IVR(基于东进的语音卡)-3
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                C#实现IVR(基于东进的语音卡)-3
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                
                            
                            
                            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??????? /// 初始化東進(jìn)七號(hào)信令中繼語(yǔ)音卡的硬件
12??????? /// </summary>
13??????? /// <param name="sIncFileName">INI系統(tǒng)配置文件名</param>
14??????? /// <param name="sVoiceIncFileName">提示音對(duì)照表文件名,一般使用PROMPT.INI</param>
15??????? /// <returns>0,成功;其他:-12,在讀取INI文件時(shí)錯(cuò)誤;
16??????? /// -17,打開(kāi)驅(qū)動(dòng)程序的設(shè)備文件時(shí)錯(cuò)誤[驅(qū)動(dòng)程序名為:DJPCI-東進(jìn)七號(hào)信令中繼語(yǔ)音卡,NT;DJPCI2K 東進(jìn)七號(hào)信令中繼語(yǔ)音卡,2000];
17??????? /// -18,檢查硬件失敗;
18??????? /// -19,讀取提示音文件時(shí)失敗;
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??????? /// 結(jié)束所有中繼語(yǔ)音卡的操作, 釋放API所占用的資源, 復(fù)位中繼語(yǔ)音卡的狀態(tài), 應(yīng)該在程序結(jié)束前調(diào)用。
25??????? /// 由于同DJSys_EnableCard類似的原因,當(dāng)調(diào)用本函數(shù)之后,你就不能再調(diào)用其他的有關(guān)數(shù)字中繼卡的函數(shù)。
26??????? /// 只有DJSys_EnableCard函數(shù)成功后,才能調(diào)用本函數(shù),并且要求成對(duì)出現(xiàn)。
27??????? /// </summary>
28??????? [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
29??????? public static extern void DJSys_DisableCard();
30
31??????? /**//// <summary>
32??????? /// 得到系統(tǒng)內(nèi)中繼通道總數(shù);
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??????? /// 維持文件錄音和文件放音連續(xù)的函數(shù)。
41??????? /// 要求應(yīng)用程序必須在小于4秒鐘內(nèi)調(diào)用本函數(shù)一次(允許多次)。
42??????? /// 在數(shù)字中繼卡的底層驅(qū)動(dòng)程序中,對(duì)每個(gè)語(yǔ)音通道開(kāi)辟了64K的緩沖區(qū)。
43??????? /// 當(dāng)進(jìn)行文件方式的錄音或放音時(shí),不斷的調(diào)用函數(shù)DJSys_PushPlay可以保證緩沖區(qū)的更新。
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">中繼通道號(hào);</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??????? /// 根據(jù)中繼通道號(hào),來(lái)斷開(kāi)本中繼通道與用戶通道之間的雙向連通,對(duì)應(yīng)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??????? /// 使能發(fā)送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??????? /// 取用戶通道總數(shù)。如果是一片D161A/D081A卡,本函數(shù)返回16/8,依次類推。
74??????? /// 函數(shù)返回:● 系統(tǒng)內(nèi)的用戶通道數(shù)
75??????? /// </summary>
76??????? /// <returns> 系統(tǒng)內(nèi)的用戶通道數(shù)</returns>
77??????? [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
78??????? public static extern int DJUser_GetTotalUserNum();
79
80??????? /**//// <summary>
81??????? /// 搜索一個(gè)空閑的語(yǔ)音通道
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??????? /// 播放語(yǔ)音文件
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??????? /// 建立放音語(yǔ)音通道到中繼通道的連通。本函數(shù)在本質(zhì)上是一個(gè)中繼通道去聽(tīng)語(yǔ)音通道。
100??????? /// 當(dāng)中繼通道處于準(zhǔn)備好狀態(tài),語(yǔ)音通道已經(jīng)開(kāi)始操作(直接或間接調(diào)用過(guò)DJVoc_VoiceStart 函數(shù)),
101??????? /// 則可通過(guò)此函數(shù)將語(yǔ)音通道中的語(yǔ)音放給中繼通道上的電話用戶聽(tīng)。
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??????? ///? 對(duì)用戶模塊饋電,這是系統(tǒng)的初始狀態(tài),當(dāng)userID越界時(shí),調(diào)用DJSYS_GetErrCode得到_ERR_InvalidID。
111??????? /// 只有在直流電源正常工作狀態(tài)下,用戶通道才能正常操作,系統(tǒng)啟動(dòng)后缺省為開(kāi)電源。
112??????? /// 如果你正常的接入電源,則調(diào)用完本函數(shù)后,與該userID相連的電話機(jī)將會(huì)處于有饋電的狀態(tài),拿起話機(jī)聽(tīng)筒,在電話機(jī)上按鍵,會(huì)聽(tīng)到按鍵的聲音。
113??????? /// 當(dāng)該用戶通道插入的是中繼模塊,用來(lái)接入模擬電話線時(shí),調(diào)用本函數(shù),相當(dāng)于電話機(jī)摘機(jī)。
114??????? /// 由于這是系統(tǒng)的缺省狀態(tài),所以,如果是中繼模塊,在初始化時(shí),需要將所有的中繼模塊掛機(jī),這可以通過(guò)調(diào)用函數(shù)DJUser_SetPowerOFF來(lái)完成。
115??????? /// </summary>
116??????? /// <param name="userID">用戶通道號(hào)</param>
117??????? [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
118??????? public static extern void DJUser_SetPowerON(int userID);
119
120??????? /**//// <summary>
121??????? /// 允許用戶通道在摘機(jī)時(shí)自動(dòng)送撥號(hào)音,這是系統(tǒng)的缺省工作方式。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID.
122??????? /// 當(dāng)處于使能方式時(shí),用戶通道所連接的電話機(jī)摘機(jī)后,系統(tǒng)自動(dòng)送撥號(hào)音,如果按下電話機(jī)上的按鍵,會(huì)自動(dòng)停止撥號(hào)音;
123??????? /// 電話機(jī)掛機(jī),也自動(dòng)停止撥號(hào)音。
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??????? ///? 對(duì)給定的語(yǔ)音通道循環(huán)播放系統(tǒng)提示音
131??????? /// 函數(shù)返回:1● 操作成功;0 ● 操作失敗,調(diào)用DJSys_GetErrCode函數(shù)將返回失敗原因;
132??????? /// </summary>
133??????? /// <param name="voiceID">語(yǔ)音通道號(hào)</param>
134??????? /// <param name="voiceName">系統(tǒng)提示音名字</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??????? /// 搜索返回一個(gè)空閑的用于放音的語(yǔ)音通道
141??????? /// </summary>
142??????? /// <returns></returns>
143??????? [DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
144??????? public static extern int DJVoc_SearchFreeVoiceChannelForPlay();
145
146??????? /**//// <summary>
147??????? /// 檢查是否正在對(duì)用戶模塊振鈴。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID
148??????? /// 函數(shù)返回:
149??????? /// 1● 正在振鈴
150??????? /// 0● 非振鈴
151??????? /// </summary>
152??????? /// <param name="userID"> 用戶通道號(hào)</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??????? /// 使用戶通道開(kāi)始振鈴。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID。
159??????? /// 調(diào)用本函數(shù),將會(huì)對(duì)用戶模塊所連接的電話機(jī)振鈴,該振鈴是斷續(xù)的振鈴聲,由底層驅(qū)動(dòng)程序來(lái)控制振鈴的時(shí)間間隔.
160??????? /// 函數(shù)返回
161??????? /// 1● 操作成功
162??????? /// 0● 操作失敗,調(diào)用DJSys_GetErrCode()將返回失敗原因
163??????? ///? 如果要使電話機(jī)振鈴,必須正確的接入外接電源和鈴流源。
164??????? /// </summary>
165??????? /// <param name="userID"> 用戶通道號(hào)</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??????? /// 停止用戶模塊的振鈴。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID。
172??????? /// 函數(shù)返回:
173??????? /// 1● 操作成功
174??????? /// 0● 操作失敗,調(diào)用DJSys_GetErrCode()將返回失敗原因
175??????? /// </summary>
176??????? /// <param name="userID">用戶通道號(hào)</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??????? /// 斷開(kāi)放音語(yǔ)音通道和用戶通道之間的聯(lián)接
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??????? /// 復(fù)位用戶DTMF撥號(hào)信息,撥號(hào)位數(shù)置 0,DTMF緩沖區(qū)清空。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID。
191??????? /// 參考函數(shù)DJUser_GetDialCode的功能描述。
192??????? /// 函數(shù)返回:
193??????? /// 1● 操作成功
194??????? /// 0● 操作失敗,調(diào)用DJSys_GetErrCode()將返回失敗原因
195??????? /// </summary>
196??????? /// <param name="userID">用戶通道號(hào)</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方式聯(lián)接在本通道上的用戶通道號(hào)。
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??????? ///? 取得給本通道放音的語(yǔ)音通道號(hào),如果沒(méi)有放音通道與本中繼通道相連,返回-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??????? ///? 斷開(kāi)中繼通道和放音語(yǔ)音通道的連通。
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??????? ///? 清空系統(tǒng)的DTMF緩沖區(qū),如果在緩沖區(qū)中有DTMF按鍵的值,將會(huì)丟失
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??????? /// 檢查該語(yǔ)音通道的語(yǔ)音操作是否結(jié)束,即錄放音是否到達(dá)指定的大小。
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??????? /// 停止文件放音。多次調(diào)用本函數(shù)沒(méi)有影響
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??????? /// 得到當(dāng)前軟件開(kāi)發(fā)系統(tǒng)的安裝目錄。該目錄等于INI配置文件中的InstallDir的設(shè)置。
253??????? /// </summary>
254??????? /// <returns></returns>
255??????? //[DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
256??????? //public static extern byte[]? DJSys_GetInstallDir();
257??????? /**//// <summary>
258??????? /// 得到當(dāng)前軟件開(kāi)發(fā)系統(tǒng)的安裝目錄。該目錄等于INI配置文件中的InstallDir的設(shè)置。
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??????? /// 開(kāi)始放音
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??????? /// 增加索引放音文件。失敗的可能原因有文件不存在,或者文件索引數(shù)組已滿(最多100個(gè))。
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??????? /// 開(kāi)始一次文件索引放音。
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??????? ///? 停止索引文件放音。該函數(shù)停止指定中繼通道的索引文件放音,使用DJVoc_StartIndexPlayFile函數(shù)進(jìn)行多文件放音結(jié)束,一定要調(diào)用該函數(shù)來(lái)停止放音
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??????? /// 檢查索引文件放音是否結(jié)束,并維護(hù)索引文件放音的持續(xù)。當(dāng)進(jìn)行索引文件放音時(shí),必須調(diào)用該函數(shù),以保證索引文件放音的連續(xù)性
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}
 
                            
                        
                        
                        ? 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??????? /// 初始化東進(jìn)七號(hào)信令中繼語(yǔ)音卡的硬件
12??????? /// </summary>
13??????? /// <param name="sIncFileName">INI系統(tǒng)配置文件名</param>
14??????? /// <param name="sVoiceIncFileName">提示音對(duì)照表文件名,一般使用PROMPT.INI</param>
15??????? /// <returns>0,成功;其他:-12,在讀取INI文件時(shí)錯(cuò)誤;
16??????? /// -17,打開(kāi)驅(qū)動(dòng)程序的設(shè)備文件時(shí)錯(cuò)誤[驅(qū)動(dòng)程序名為:DJPCI-東進(jìn)七號(hào)信令中繼語(yǔ)音卡,NT;DJPCI2K 東進(jìn)七號(hào)信令中繼語(yǔ)音卡,2000];
17??????? /// -18,檢查硬件失敗;
18??????? /// -19,讀取提示音文件時(shí)失敗;
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??????? /// 結(jié)束所有中繼語(yǔ)音卡的操作, 釋放API所占用的資源, 復(fù)位中繼語(yǔ)音卡的狀態(tài), 應(yīng)該在程序結(jié)束前調(diào)用。
25??????? /// 由于同DJSys_EnableCard類似的原因,當(dāng)調(diào)用本函數(shù)之后,你就不能再調(diào)用其他的有關(guān)數(shù)字中繼卡的函數(shù)。
26??????? /// 只有DJSys_EnableCard函數(shù)成功后,才能調(diào)用本函數(shù),并且要求成對(duì)出現(xiàn)。
27??????? /// </summary>
28??????? [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
29??????? public static extern void DJSys_DisableCard();
30
31??????? /**//// <summary>
32??????? /// 得到系統(tǒng)內(nèi)中繼通道總數(shù);
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??????? /// 維持文件錄音和文件放音連續(xù)的函數(shù)。
41??????? /// 要求應(yīng)用程序必須在小于4秒鐘內(nèi)調(diào)用本函數(shù)一次(允許多次)。
42??????? /// 在數(shù)字中繼卡的底層驅(qū)動(dòng)程序中,對(duì)每個(gè)語(yǔ)音通道開(kāi)辟了64K的緩沖區(qū)。
43??????? /// 當(dāng)進(jìn)行文件方式的錄音或放音時(shí),不斷的調(diào)用函數(shù)DJSys_PushPlay可以保證緩沖區(qū)的更新。
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">中繼通道號(hào);</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??????? /// 根據(jù)中繼通道號(hào),來(lái)斷開(kāi)本中繼通道與用戶通道之間的雙向連通,對(duì)應(yīng)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??????? /// 使能發(fā)送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??????? /// 取用戶通道總數(shù)。如果是一片D161A/D081A卡,本函數(shù)返回16/8,依次類推。
74??????? /// 函數(shù)返回:● 系統(tǒng)內(nèi)的用戶通道數(shù)
75??????? /// </summary>
76??????? /// <returns> 系統(tǒng)內(nèi)的用戶通道數(shù)</returns>
77??????? [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
78??????? public static extern int DJUser_GetTotalUserNum();
79
80??????? /**//// <summary>
81??????? /// 搜索一個(gè)空閑的語(yǔ)音通道
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??????? /// 播放語(yǔ)音文件
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??????? /// 建立放音語(yǔ)音通道到中繼通道的連通。本函數(shù)在本質(zhì)上是一個(gè)中繼通道去聽(tīng)語(yǔ)音通道。
100??????? /// 當(dāng)中繼通道處于準(zhǔn)備好狀態(tài),語(yǔ)音通道已經(jīng)開(kāi)始操作(直接或間接調(diào)用過(guò)DJVoc_VoiceStart 函數(shù)),
101??????? /// 則可通過(guò)此函數(shù)將語(yǔ)音通道中的語(yǔ)音放給中繼通道上的電話用戶聽(tīng)。
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??????? ///? 對(duì)用戶模塊饋電,這是系統(tǒng)的初始狀態(tài),當(dāng)userID越界時(shí),調(diào)用DJSYS_GetErrCode得到_ERR_InvalidID。
111??????? /// 只有在直流電源正常工作狀態(tài)下,用戶通道才能正常操作,系統(tǒng)啟動(dòng)后缺省為開(kāi)電源。
112??????? /// 如果你正常的接入電源,則調(diào)用完本函數(shù)后,與該userID相連的電話機(jī)將會(huì)處于有饋電的狀態(tài),拿起話機(jī)聽(tīng)筒,在電話機(jī)上按鍵,會(huì)聽(tīng)到按鍵的聲音。
113??????? /// 當(dāng)該用戶通道插入的是中繼模塊,用來(lái)接入模擬電話線時(shí),調(diào)用本函數(shù),相當(dāng)于電話機(jī)摘機(jī)。
114??????? /// 由于這是系統(tǒng)的缺省狀態(tài),所以,如果是中繼模塊,在初始化時(shí),需要將所有的中繼模塊掛機(jī),這可以通過(guò)調(diào)用函數(shù)DJUser_SetPowerOFF來(lái)完成。
115??????? /// </summary>
116??????? /// <param name="userID">用戶通道號(hào)</param>
117??????? [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
118??????? public static extern void DJUser_SetPowerON(int userID);
119
120??????? /**//// <summary>
121??????? /// 允許用戶通道在摘機(jī)時(shí)自動(dòng)送撥號(hào)音,這是系統(tǒng)的缺省工作方式。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID.
122??????? /// 當(dāng)處于使能方式時(shí),用戶通道所連接的電話機(jī)摘機(jī)后,系統(tǒng)自動(dòng)送撥號(hào)音,如果按下電話機(jī)上的按鍵,會(huì)自動(dòng)停止撥號(hào)音;
123??????? /// 電話機(jī)掛機(jī),也自動(dòng)停止撥號(hào)音。
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??????? ///? 對(duì)給定的語(yǔ)音通道循環(huán)播放系統(tǒng)提示音
131??????? /// 函數(shù)返回:1● 操作成功;0 ● 操作失敗,調(diào)用DJSys_GetErrCode函數(shù)將返回失敗原因;
132??????? /// </summary>
133??????? /// <param name="voiceID">語(yǔ)音通道號(hào)</param>
134??????? /// <param name="voiceName">系統(tǒng)提示音名字</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??????? /// 搜索返回一個(gè)空閑的用于放音的語(yǔ)音通道
141??????? /// </summary>
142??????? /// <returns></returns>
143??????? [DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
144??????? public static extern int DJVoc_SearchFreeVoiceChannelForPlay();
145
146??????? /**//// <summary>
147??????? /// 檢查是否正在對(duì)用戶模塊振鈴。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID
148??????? /// 函數(shù)返回:
149??????? /// 1● 正在振鈴
150??????? /// 0● 非振鈴
151??????? /// </summary>
152??????? /// <param name="userID"> 用戶通道號(hào)</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??????? /// 使用戶通道開(kāi)始振鈴。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID。
159??????? /// 調(diào)用本函數(shù),將會(huì)對(duì)用戶模塊所連接的電話機(jī)振鈴,該振鈴是斷續(xù)的振鈴聲,由底層驅(qū)動(dòng)程序來(lái)控制振鈴的時(shí)間間隔.
160??????? /// 函數(shù)返回
161??????? /// 1● 操作成功
162??????? /// 0● 操作失敗,調(diào)用DJSys_GetErrCode()將返回失敗原因
163??????? ///? 如果要使電話機(jī)振鈴,必須正確的接入外接電源和鈴流源。
164??????? /// </summary>
165??????? /// <param name="userID"> 用戶通道號(hào)</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??????? /// 停止用戶模塊的振鈴。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID。
172??????? /// 函數(shù)返回:
173??????? /// 1● 操作成功
174??????? /// 0● 操作失敗,調(diào)用DJSys_GetErrCode()將返回失敗原因
175??????? /// </summary>
176??????? /// <param name="userID">用戶通道號(hào)</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??????? /// 斷開(kāi)放音語(yǔ)音通道和用戶通道之間的聯(lián)接
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??????? /// 復(fù)位用戶DTMF撥號(hào)信息,撥號(hào)位數(shù)置 0,DTMF緩沖區(qū)清空。當(dāng)userID越界時(shí),返回 0,同時(shí)置ErrCode=_ERR_InvalidID。
191??????? /// 參考函數(shù)DJUser_GetDialCode的功能描述。
192??????? /// 函數(shù)返回:
193??????? /// 1● 操作成功
194??????? /// 0● 操作失敗,調(diào)用DJSys_GetErrCode()將返回失敗原因
195??????? /// </summary>
196??????? /// <param name="userID">用戶通道號(hào)</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方式聯(lián)接在本通道上的用戶通道號(hào)。
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??????? ///? 取得給本通道放音的語(yǔ)音通道號(hào),如果沒(méi)有放音通道與本中繼通道相連,返回-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??????? ///? 斷開(kāi)中繼通道和放音語(yǔ)音通道的連通。
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??????? ///? 清空系統(tǒng)的DTMF緩沖區(qū),如果在緩沖區(qū)中有DTMF按鍵的值,將會(huì)丟失
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??????? /// 檢查該語(yǔ)音通道的語(yǔ)音操作是否結(jié)束,即錄放音是否到達(dá)指定的大小。
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??????? /// 停止文件放音。多次調(diào)用本函數(shù)沒(méi)有影響
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??????? /// 得到當(dāng)前軟件開(kāi)發(fā)系統(tǒng)的安裝目錄。該目錄等于INI配置文件中的InstallDir的設(shè)置。
253??????? /// </summary>
254??????? /// <returns></returns>
255??????? //[DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
256??????? //public static extern byte[]? DJSys_GetInstallDir();
257??????? /**//// <summary>
258??????? /// 得到當(dāng)前軟件開(kāi)發(fā)系統(tǒng)的安裝目錄。該目錄等于INI配置文件中的InstallDir的設(shè)置。
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??????? /// 開(kāi)始放音
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??????? /// 增加索引放音文件。失敗的可能原因有文件不存在,或者文件索引數(shù)組已滿(最多100個(gè))。
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??????? /// 開(kāi)始一次文件索引放音。
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??????? ///? 停止索引文件放音。該函數(shù)停止指定中繼通道的索引文件放音,使用DJVoc_StartIndexPlayFile函數(shù)進(jìn)行多文件放音結(jié)束,一定要調(diào)用該函數(shù)來(lái)停止放音
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??????? /// 檢查索引文件放音是否結(jié)束,并維護(hù)索引文件放音的持續(xù)。當(dāng)進(jìn)行索引文件放音時(shí),必須調(diào)用該函數(shù),以保證索引文件放音的連續(xù)性
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}
總結(jié)
以上是生活随笔為你收集整理的C#实现IVR(基于东进的语音卡)-3的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: SMB2协议介绍
- 下一篇: 腾讯、阿里面试题 了解B+树吗?
