C#实现IVR(基于东进的语音卡)-3
生活随笔
收集整理的這篇文章主要介紹了
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}
? 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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SMB2协议介绍
- 下一篇: C#实现IVR(基于东进的语音卡)-1