日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發布時間:2023/12/29 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#实现IVR(基于东进的语音卡)-1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一年在公司做了一個小小的IVR項目.覺得這是一個和硬件驅動交互編程的不錯例子.
共享一下.也討論一下.
代碼:(這個是調用系統驅動的DLL)

using System;
using System.Text;
using DJVoiceCard.Lib;

namespace DJVoiceCard.DL
{
???
public class SysFunction
???
{
???????
系統操作#region 系統操作

???????
/**//// <summary>
???????
/// 初始化系統
???????
/// </summary>
???????
/// <returns></returns>

??????? public static bool SysInit(ref string sErr)
???????
{
???????????
try
???????????
{
??????????????? StringBuilder sSys_INC
= new StringBuilder("");
??????????????? StringBuilder sPrompt_INC
= new StringBuilder("Prompt.ini");
???????????????
int iSysInit = ISUP_Lib.DJISUP_InitSystem();
???????????????
int iCardInit = DJFunction.DJSys_EnableCard(sSys_INC, sPrompt_INC);
???????????????
bool iPromptInit = DJFunction.DJSys_EnableDtmfSend();
???????????????
if (iSysInit == 1)
???????????????
{
???????????????????
if (iCardInit == 0)
???????????????????
{
???????????????????????
if (iPromptInit)
???????????????????????
{
???????????????????????????
return true;
??????????????????????? }

???????????????????????
else
???????????????????????
{
??????????????????????????? sErr
= "未能加載聲音文件" + iPromptInit.ToString();
???????????????????????????
return false;
??????????????????????? }

??????????????????? }

???????????????????
else
???????????????????
{
??????????????????????? sErr
= iCardInit.ToString();
???????????????????????
return false;
??????????????????? }

??????????????? }

???????????????
else
???????????????
{
??????????????????? sErr
= iSysInit.ToString();
???????????????????
return false;
??????????????? }

??????????? }

???????????
catch (Exception ex)
???????????
{
??????????????? sErr
= ex.Message;
??????????? }

???????????
return false;
??????? }


???????
/**//// <summary>
???????
/// 退出系統
???????
/// </summary>

??????? public static void SysExit()
???????
{
??????????? DJFunction.DJSys_DisableCard();
??????????? ISUP_Lib.DJISUP_ExitSystem();
??????? }


???????
#endregion


???????
中繼通道操作#region 中繼通道操作

???????
/**//// <summary>
???????
/// 獲取中繼通道總數
???????
/// </summary>
???????
/// <returns></returns>

??????? public static int iTrkTotal()
???????
{
???????????
return DJFunction.DJTrk_GetTotalTrunkNum();
??????? }


???????
/**//// <summary>
???????
/// 信道狀態;
???????
/// </summary>
???????
/// <param name="PCM_NO"></param>
???????
/// <param name="Relay_NO"></param>
???????
/// <returns></returns>

??????? public static int iRaleyStetes(byte PCM_NO, byte Relay_NO)
???????
{
???????????
return ISUP_Lib.DJISUP_GetChnState(PCM_NO, Relay_NO);
??????? }



???????
/**//// <summary>
???????
/// 循環刷新緩存;
???????
/// </summary>

??????? public static void Push_GerEvent()
???????
{
???????????
try
???????????
{
??????????????? ISUP_Lib.DJISUP_GetEvent();
??????????????? DJFunction.DJSys_PushPlay();
??????????? }

???????????
catch(Exception Ex)
???????????
{
??????????????
??????????? }

??????? }


???????
/**//// <summary>
???????
/// 獲得中繼號
???????
/// </summary>
???????
/// <param name="iTrunkID"></param>
???????
/// <returns></returns>

??????? public static int iPCMID(int iTrunkID)
???????
{
???????????
return DJFunction.DJTrk_GetPcmID(iTrunkID);
??????? }


???????
/**//// <summary>
???????
/// 被叫號碼
???????
/// </summary>
???????
/// <param name="PCM_NO"></param>
???????
/// <param name="Relay_NO"></param>
???????
/// <returns></returns>

??????? public static TC_INI_TYPE GetCallNum(int PCM_NO, int Relay_NO)
???????
{
??????????? TC_INI_TYPE sReVal
= new TC_INI_TYPE();
??????????? ISUP_Lib.DJISUP_GetCalleeNum((
byte)PCM_NO, (byte)Relay_NO, ref sReVal);
???????????
return sReVal;
??????? }


???????
/**//// <summary>
???????
/// 主叫號碼
???????
/// </summary>
???????
/// <param name="PCM_NO"></param>
???????
/// <param name="Relay_NO"></param>
???????
/// <returns></returns>

??????? public static TC_INI_TYPE GetCallerNum(int PCM_NO, int Relay_NO)
???????
{
??????????? TC_INI_TYPE sReVal
= new TC_INI_TYPE();
??????????? ISUP_Lib.DJISUP_GetCallerNum((
byte)PCM_NO, (byte)Relay_NO, ref sReVal);
???????????
return sReVal;
??????? }


???????
/**//// <summary>
???????
/// 獲取用戶按鍵
???????
/// </summary>
???????
/// <param name="Relay_NO"></param>
???????
/// <returns></returns>

??????? public static StringBuilder GetUserKeyPress(int Relay_NO)
???????
{
???????????
return ISUP_Lib.DJTrk_GetDtmfCode(Relay_NO);
??????? }


???????
/**//// <summary>
???????
/// 設置中繼信道的狀態;
???????
/// </summary>
???????
/// <param name="iTrunkID"></param>
???????
/// <param name="States"></param>

??????? public static void SetRelayStates(int iTrunkID, int States)
???????
{
??????????? ISUP_Lib.DJISUP_SetChnState(((
byte)(iTrunkID / 30)), ((byte)(iTrunkID % 30)), (byte)States);
??????? }



???????
/**//// <summary>
???????
/// 呼出
???????
/// </summary>
???????
/// <param name="iTrunkID"></param>
???????
/// <param name="CalleeNum"></param>
???????
/// <param name="CallerNum"></param>
???????
/// <returns></returns>

??????? public static bool bCallOut(int iTrunkID, string CalleeNum, string CallerNum, ref string sErr)
???????
{
??????????? StringBuilder Callee
= new StringBuilder(CallerNum);
??????????? StringBuilder Caller
= new StringBuilder(CalleeNum);
???????????
if (iTrunkID != -1)
???????????
{
???????????????
bool bRel = ISUP_Lib.DJISUP_Callout(iTrunkID / 30, iTrunkID % 30, ref Callee, ref Caller);
???????????????
//sErr = Callee.ToString() + "||" + Caller.ToString()+"||"+iTrunkID.ToString();
??????????????? return bRel;
??????????? }

???????????
else
???????????
{
??????????????? sErr
= "NaN";
???????????????
return false;
??????????? }

??????? }


???????
/**//// <summary>
???????
/// string
???????
/// </summary>
???????
/// <param name="iTrunkID"></param>
???????
/// <param name="CalleeNum"></param>
???????
/// <param name="CallerNum"></param>
???????
/// <returns></returns>

??????? public static bool bCallOut(int iTrunkID, string CalleeNum, string CallerNum)
???????
{
???????????
char[] telNum = new char[120];
??????????? PR p
= new PR();
??????????? p.TelarrChar
= telNum;
??????????? telNum
= CalleeNum.ToCharArray();
???????????
byte[] _telNum = new byte[120];
??????????? _telNum
= Encoding.ASCII.GetBytes(telNum);


???????????
char[] CallNum = new char[120];
??????????? CallNum
= CallerNum.ToCharArray();
???????????
byte[] _CallNum = new byte[120];
??????????? p.CallarrChar
= CallNum;
??????????? _CallNum
= Encoding.ASCII.GetBytes(CallerNum);

???????????
if (iTrunkID != -1)
???????????
{
???????????????
return ISUP_Lib.DJISUP_Callout(iTrunkID / 30, iTrunkID % 30, ref CalleeNum, ref CallerNum);
??????????? }

???????????
else
???????????
{
???????????????
return false;
??????????? }

??????? }


???????
/**//// <summary>
???????
/// byte][
???????
/// </summary>
???????
/// <param name="iTrunkID"></param>
???????
/// <param name="CalleeNum"></param>
???????
/// <param name="CallerNum"></param>
???????
/// <returns></returns>

??????? public static bool bCallOut(int iTrunkID, byte[] CalleeNum, byte[] CallerNum)
???????
{
???????????
unsafe
???????????
{
???????????????
if (iTrunkID != -1)
???????????????
{
???????????????????
return ISUP_Lib.DJISUP_Callout(iTrunkID / 30, iTrunkID % 30, CalleeNum, CallerNum);
??????????????? }

???????????????
else
???????????????
{
???????????????????
return false;
??????????????? }

??????????? }

??????? }


???????
/**//// <summary>
???????
/// char *
???????
/// </summary>
???????
/// <param name="iTrunkID"></param>
???????
/// <param name="calleeNum"></param>
???????
/// <param name="callerNum"></param>
???????
/// <returns></returns>

??????? public static unsafe bool bCallOut(int iTrunkID, StringBuilder calleeNum, StringBuilder callerNum)
???????
{
???????????
unsafe
???????????
{
???????????????
if (iTrunkID != -1)
???????????????
{
???????????????????
return ISUP_Lib.DJISUP_Callout(iTrunkID / 30, iTrunkID % 30, calleeNum, callerNum);
??????????????? }

???????????????
else
???????????????
{
???????????????????
return false;
??????????????? }

??????????? }

??????? }

總結

以上是生活随笔為你收集整理的C#实现IVR(基于东进的语音卡)-1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。