专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Open API

云通信平台C#平台的VOIP接口初识教程

发布时间:2011-07-03 06:57:27 文章来源:www.iduyao.cn 采编人员:星星草
云通讯平台C#平台的VOIP接口初识教程
最近公司项目要用到VOIP网络通话功能和IM即时通信功能,公司的领导为我们提供了云通讯这个平台,让我们使用这个平台进行开发,但让我纳闷的是这个平台只有android和ios手机平台sdk,唯独没有windows phone 平台,而我是开发windows phone 平台,我心里就有点失落,后来,我联系了云通讯平台的商务,他回答是目前因为没有市场需求,还不打算开发这个平台,还需要等待。从那以后,我一直关注云通讯这个平台,希望有惊喜出现,可是没有。突然有一天,云通讯的技术人员在群里提供了一份C#的demo,我心里有点惊喜,我想,C#平台应该和windows phone 平台差不多吧,都是C#语言,于是,我下载下来研究了一下,并把使用的教程分享一下给大家。
首先,我打开了这个C# 平台的demo,发现还是第一个测试版本,有些功能还没有,但VOIP功能已经有了,我研究一下VOIP功能使用C#是如何实现的。这个项目的基本工程结构如下:

图1

其中那个CCPAppClient文件应该是与平台有关的接口方法类存放的地方了,打开它,看了一下CCPCall类,其中说明了与平台连接的状态,还有平台提供的相关功能,以及账号登陆成功与否的判断。代码如下:
private CCPCall()
{
cf.onConnected = onConnected;
cf.onConnectError = onConnectError;
cf.onIncomingCallReceived = onIncomingCallReceived;
cf.onCallProceeding = onCallProceeding;
cf.onCallAlerting = onCallAlerting;
cf.onCallAnswered = onCallAnswered;
cf.onMakeCallFailed = onMakeCallFailed;
cf.onCallPaused = onCallPaused;
cf.onCallPausedByRemote = onCallPausedByRemote;
cf.onCallReleased = onCallReleased;
cf.onCallTransfered = onCallTransfered;
cf.onDtmfReceived = onDtmfReceived;
cf.onLogInfo = onLogInfo;
cf.onResumed = onResumed;
cf.onNotifyGeneralEvent = onNotifyGeneralEvent;
cf.onRecordVoiceCallStatus = onRecordVoiceCallStatus;
cf.onCallMediaUpdateRequest = onCallMediaUpdateRequest;
cf.onCallMediaUpdateResponse = onCallMediaUpdateResponse;
cf.onFirewallPolicyEnabled = onFirewallPolicyEnabled;
cf.onRemoteVideoRatio = onRemoteVideoRatio;

//即时消息
cf.onReceiveInstanceMessage = onReceiveInstanceMessage;
cf.onSendInstanceMessage = onSendInstanceMessage;
cf.onDownloadAttached = onDownloadAttached;
cf.onConfirmInstanceMessage = onConfirmInstanceMessage;
cf.onRateOfProgressAttachMsgs = onRateOfProgressAttachMsgs;
cf.onRecordingTimeOut = onRecordingTimeOut;
cf.onFinishedPlaying = onFinishedPlaying;
cf.onRecordingAmplitude = onRecordingAmplitude;

//实时对讲
cf.onReceiveInterphoneMsg = onReceiveInterphoneMsg;
cf.onInterphoneState = onInterphoneState;
cf.onInterphoneExit = onInterphoneExit;
cf.onControlMicState = onControlMicState;
cf.onReleaseMicState = onReleaseMicState;
cf.onInterphoneMembers = onInterphoneMembers;

//双向回呼
cf.onCallBack = onCallBack;

//多人聊天室
cf.onReceiveChatroomMsg = onReceiveChatroomMsg;
cf.onChatroomState = onChatroomState;
cf.onChatroomExit = onChatroomExit;
cf.onChatrooms = onChatrooms;
cf.onChatroomMembers = onChatroomMembers;
cf.onChatroomInviteMembers = onChatroomInviteMembers;
cf.onChatroomRemoveMember = onChatroomRemoveMember;
cf.onChatroomDismiss = onChatroomDismiss;

//检查版本更新
cf.onCheckVersion = onCheckVersion;
cf.onDownloadUpdateFiles = onDownloadUpdateFiles;
cf.onRateOfProgressDownloadUpdateFiles = onRateOfProgressDownloadUpdateFiles;

//检测网络状态
cf.onCheckNetStat = onCheckNetStat;
cf.onRateOfCheckNetStat = onRateOfCheckNetStat;

//发送下行短信
cf.onSendSMS = onSendSMS;

//视频会议
cf.onReceiveVideoConferenceMsg = onReceiveVideoConferenceMsg;
cf.onVideoConferenceState = onVideoConferenceState;
cf.onVideoConferenceExit = onVideoConferenceExit;
cf.onVideoConferences = onVideoConferences;
cf.onVideoConferenceMembers = onVideoConferenceMembers;
cf.onVideoConferenceRemoveMember = onVideoConferenceRemoveMember;
cf.onVideoConferenceDismiss = onVideoConferenceDismiss;
cf.onSwitchRealScreenToVoip = onSwitchRealScreenToVoip;
cf.onSendLocalPortrait = onSendLocalPortrait;
cf.onGetPortraitsFromVideoConference = onGetPortraitsFromVideoConference;
cf.onDownloadVideoConferencePortraits = onDownloadVideoConferencePortraits;

//NativeMethods.CCPsetLogLevel(5);
initCCPRet = NativeMethods.CCPinit(ref cf);
//int ret = NativeMethods.CCPsetRing(System.Windows.Forms.Application.StartupPath+@"/ring.wav");
//ret = NativeMethods.CCPsetRingback(System.Windows.Forms.Application.StartupPath+@"/ringback.wav");
configInfo.readConfigFile();
}

这些代码的提供与Rest API中的CCPCall类相似,于是,我就明白了这个类是供应用程序调用的接口类。接着,我找了一下配置文件,在config文件下,这个配置是ini格式,与Rest API的配置文件格式不一样,但配置的条件是一样,还是那主账号,子账号之类的东西,如图2所示:

图2

这里有些纳闷,那个setting.ini文件是干嘛用的,打开来什么代码都没有,不管它,先配置好,运行一下,结果,弹出登录界面,如果已经配置好账号,它就会显示主账号和token,在下拉框可以选择子帐号进行登陆测试。如图3:

图3

进入后,我看到了主界面,在左侧有功能菜单选择,由于功能不完善,这里只选择网络电话进行测试,理解一下它的实现。如下图4:

图4

在网络电话的左边面板,看到了VOIP电话和落地电话两个功能。在这里只测试VOIP功能,先来看看代码是,如下:
private void voipcall_btn_Click(object sender, EventArgs e)
{
string calledvoip = calledvoip_comboBox.Text;
if (calledvoip.Length == 0)
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 正式开始学习云计算解决办法

    正式开始学习云计算 RT 我是学JAVA的 由于工作需要开始学习云计算 谢谢各位大神帮助 以下是我的观点 云计...

  • 关于云技术,该如何解决

    关于云技术 谁能给我讲讲云计算到底是嘛东西 ------解决方案-------------------- 云计算(英语:cloud computing),是一种基于互联网...

  • 基于命令行的API函数解释执行工具,该如何解决

    基于命令行的API函数解释执行工具 求:基于命令行的API函数解释执行工具。 也就是能执行API函数的外部CMD命令。 如果没有这样...

  • webAPI和socket相比?该怎么处理

    webAPI和socket相比? 现在各大网站都提供其webAPI给开发者开发应用,如微博API等。但webAPI大多需要授权,而且有些功能还会根据授权的...

  • Facebook开放构架,平台圈地竞争升级解决思路

    Facebook开放构架,平台圈地竞争升级 12月13日,Facebook宣布将把开发平台架构开放给其它社交网站: Facebook 资深平台经理Ami Vora日...

  • 计算机视觉的课程安排,该怎么解决

    计算机视觉的课程安排 我想问一下计算机视觉的研究方向的课程安排有哪些???要详细一点的,谢谢各位了!!! ------解决方案---------------...

  • 求FaceBook开发实例解决办法

    求FaceBook开发实例 rt 对OpenAPI开发不了解,想了解一下…… 不知道怎么入手了解。所以想要个实例看看。 ------解决方案--------...

  • opengl要用到几个库解决办法

    opengl要用到几个库 学过opengl的同学们,我刚上手不久,对许多函数还不是很了解,不知道用GL做一些图形程序时要用到哪些库。起初我只...

  • opengl图形旋转与放缩有关问题

    opengl图形旋转与放缩问题 下面是程序代码的一部分,运行结果是图形不能实现绕形心旋转, 请高手指点一下: // Begin a new triangle ...

  • ~注册facebook API key的有关问题.

    ~~~~~注册facebook API key的问题..... 我的一个桌面应用程序,需要向facebook上面上传图片。是不是需要先注册api key才能访问face...

热门推荐: