现在的位置: 首页 > 综合 > 正文

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

2013年10月28日 ⁄ 综合 ⁄ 共 5590字 ⁄ 字号 评论关闭

1using System;
  2using System.Collections.Generic;
  3using System.Text;
  4using System.Runtime.InteropServices;
  5
  6namespace DJVoiceCard.Lib
  7{
  8    public struct TC_INI_TYPE
  9    {
 10        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
 11        public byte[] bCallNum;
 12        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
 13        public byte[] bCalleeNum;
 14    }

 15    public struct FL_PA
 16    {
 17        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
 18        public byte[] bFilePath;
 19        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
 20        public byte[] bVoiceFile;
 21    }

 22    public class ISUP_Lib
 23    {
 24        /// <summary>
 25        /// 
 26        /// </summary>
 27        /// <param name="mo_num">本机内的PCM逻辑编号,从0开始</param>
 28        /// <param name="dt_num">PCM内的中继通道号,0-29</param>
 29        /// <param name="state">本中继通道要采取的动作 </param>
 30        /// <param name="Param1"></param>
 31        /// <param name="Param2"></param>
 32        /// <param name="Param3"></param>
 33        /// <param name="Param4"></param>

 34        [DllImport("TCISUP.dll", CharSet = CharSet.Auto)]
 35        public static extern void DJISUP_SetChnState(byte mo_num, byte dt_num, byte state);
 36
 37        /// <summary>
 38        /// 七号信令系统接口初始化,在应用程序初始化时调用。
 39        /// 调用本函数,首先检查在本机内是否已经启动了七号信令链路的处理程序CCS7SERVER.EXE;
 40        /// 如果已经运行,则初始化本程序和CCS7SERVER.EXE之间的接口,以便能够通过CCS7SERVER.EXE来收发有关七号信令的信息包。
 41        /// 本函数应在DJSys_EnableCard之前调用
 42        /// </summary>
 43        /// <returns>1● 初始化成功;-1● 没有七号信令处理程序CCS7SERVER运行,或者在读取TC-NO7.INI时发生错误。</returns>

 44        [DllImport("TCISUP.dll", CharSet = CharSet.Auto)]
 45        public static extern int DJISUP_InitSystem();
 46
 47
 48
 49        /// <summary>
 50        /// 本函数在程序退出时调用,用以释放调用初始化函数DJISUP_InitSystem时所分配的内存。
 51        /// </summary>

 52        [DllImport("TCISUP.dll", CharSet = CharSet.Auto)]
 53        public static extern void DJISUP_ExitSystem();
 54
 55
 56        /// <summary>
 57        /// 中继通道(mo_num,dt_num)的当前状态,可能的返回值是:
 58        /// #define ISUP_CH_FREE                          1      // 空闲状态
 59        /// #define ISUP_CH_WAIT_RELEASE            2      // DLL等待应用程序同步释放资源
 60        /// #define ISUP_CH_LOCAL_BLOCK             3      // 本地闭塞状态
 61        /// #define ISUP_CH_REMOTE_BLOCK          4      // 远端闭塞状态
 62        /// #define ISUP_CH_LOCAL_AND_REMOTE_BLOCK 5      //本地和远端锁闭状态
 63        /// #define ISUP_CH_UNAVIABLE               6      // 不可用态(网络不通等原因导致)
 64        /// #define ISUP_CALLER_WAIT_ANM          7      //被叫闲,等待被叫应答
 65        /// #define ISUP_CALLER_CONNECT        8      // 去话连通状态
 66        /// #define ISUP_CALLEE_RECV_IAM           9      // 呼叫到达,接收全地址
 67        /// #define ISUP_CALLEE_CONNECT            10     // 摘机,来话连通
 68        /// #define ISUP_CH_LOCAL_SUSPEND 11     // 本地暂停
 69        /// #define ISUP_CH_REMOTE_SUSPEND     12     // 远端暂停
 70        /// 注意:
 71        /// 应用层程序应循环调用该函数,并根据取得的状态采取相应的动作。
 72        /// </summary>
 73        /// <param name="mo_num">本机内的PCM逻辑编号,从0开始</param>
 74        /// <param name="dt_num">PCM内的中继通道号,0-29</param>
 75        /// <returns></returns>

 76        [DllImport("TCISUP.dll", CharSet = CharSet.Auto)]
 77        public static extern int DJISUP_GetChnState(byte PCM_NO, byte Relay_NO);
 78
 79        /// <summary>
 80        /// 获取呼出的主叫号码
 81        /// ref 参数所指的就是呼出主叫号码
 82        /// </summary>
 83        /// <param name="PCM_NO"></param>
 84        /// <param name="Relay_NO"></param>
 85        /// <param name="Call_NO"></param>

 86        [DllImport("TCISUP.dll", CharSet = CharSet.Auto)]
 87        public static extern void DJISUP_GetCallerNum(byte PCM_NO, byte Relay_NO, ref TC_INI_TYPE Call_NO);
 88
 89        /// <summary>
 90        ///  呼叫到达时,用本函数来取得被叫号码。
 91        /// 当函数返回后,在call_id所指向的字符串数组中,存放有已经收到的号码。
 92        /// 注意,call_id所指向的字符串数组必须事先分配好空间。
 93        /// </summary>
 94        /// <param name="PCM_NO"></param>
 95        /// <param name="Relay_NO"></param>
 96        /// <param name="Callee_NO"></param>

 97        [DllImport("TCISUP.dll", CharSet = CharSet.Auto)]
 98        public static extern void DJISUP_GetCalleeNum(byte PCM_NO, byte Relay_NO, ref TC_INI_TYPE Callee_NO);
 99
100
101        /// <summary>
102        /// 处理中继通道的事件,改变中继通道的状态。
103        /// 此函数要在主流程的大循环中调用,一般同函数DJSys_PushPlay放在一起。
104        /// 通过本函数,系统的状态才能发生变迁。
105        /// </summary>

106        [DllImport("TCISUP.dll", CharSet = CharSet.Auto)]
107        public static extern void DJISUP_GetEvent();
108
109        /// <summary>
110        /// 维持文件录音和文件放音连续的函数。
111        /// 要求应用程序必须在小于4秒钟内调用本函数一次(允许多次)。
112        /// 在数字中继卡的底层驱动程序中,对每个语音通道开辟了64K的缓冲区。
113        /// 当进行文件方式的录音或放音时,不断的调用函数DJSys_PushPlay可以保证缓冲区的更新。
114        /// </summary>

115        [DllImport("Tce1_32.dll", CharSet = CharSet.Auto)]
116        public static extern void DJSys_PushPlay();
117
118
119        /// <summary>
120        /// 获取Dtmf号码
121        /// </summary>
122        /// <param name="trunkID"></param>
123        /// <returns></returns>

124        [DllImport("Tce1_32.dll", CharSet = CharSet.Ansi)]
125        public  static extern StringBuilder DJTrk_GetDtmfCode(int trunkID);
126
127
128        /// <summary>
129        /// 对某一个中继通道启动一次呼出
130        /// </summary>
131        /// <param name="nPCM">本机内的PCM逻辑编号,从0开始</param>
132        /// <param name="nCHN">PCM内的中继通道号,0-29</param>
133        /// <param name="szCalleeNumber">呼出时的被叫号码</param>
134        /// <param name="szCallerNumber">呼出时的主叫号码</param>
135        /// <returns></returns>
136        /// 

137        //[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]

抱歉!评论已关闭.