using System; using HDL_ON; using HDL_ON.DAL.Server; using System.Threading; using System.Collections.Generic; using HDL_ON.UI.UI2.PersonalCenter.PirDevice; using HDL_ON.Entity; #if __IOS__ using Shared.IOS.ESVideoOnSDK; using Shared.IOS.LCVideoOnSDK; using UIKit; using Foundation; #else using Android.Content; #endif namespace Shared { /// /// 丰林可视对讲 /// public class ESOnVideo { /// /// /// private static ESOnVideo m_Current = null; /// /// /// public static ESOnVideo Current { get { if (m_Current == null) { m_Current = new ESOnVideo(); } return m_Current; } } /// /// 门口机、丰林小区信息和房间信息等参数 /// public ESVideoInfo esVideoInfo; /// /// 暂时没用 /// public void InitESVideoSDK() { //ESVideo. } /// /// 监控页面 /// /// public void ShowESVideoMonitor(ESVideoInfo mESVideoInfo, string interphoneType) { this.esVideoInfo = mESVideoInfo; int roomID = 0; int.TryParse(mESVideoInfo.roomno, out roomID); #if __IOS__ if (interphoneType == InterphoneType.IMOUVISIAL.ToString()) { //乐橙可视对讲 //1.初始化LCOpenSDK_Api LCApiKit.SharedInstance().IsChinaMainland = OnAppConfig.Instance.RequestHttpsHost.Contains("china");//如果域名包含china,则SDK 使用乐橙的中国大陆(正式)域名 LCApiKit.SharedInstance().InitSDKOpenApi(mESVideoInfo.Lc_AccessToken); LCApiKit.SharedInstance().CurrentDevicePlayToken = mESVideoInfo.Lc_PlayToken; LCApiKit.SharedInstance().CurrentDeviceId = mESVideoInfo.Lc_DeviceId; LCApiKit.SharedInstance().CurrentDeviceName = mESVideoInfo.DeviceName; LCApiKit.SharedInstance().CurrentPsk = mESVideoInfo.Lc_DeviceId; //2.调整监视页面 LCOnMonitorViewController vc = new LCOnMonitorViewController(); mOnLCCallDelegate = new OnLCCallDelegate(this); vc.MLCCallDelegate = mOnLCCallDelegate; //vc.MLCCallDelegate = new OnLCCallDelegate(this); Shared.Application.currentVC.NavigationController.PushViewController(vc, true); } else if(interphoneType == InterphoneType.FLVI.ToString()) { ESOnMonitorViewController vc = new ESOnMonitorViewController(); vc.MESVideoID = mESVideoInfo.ESVideoUUID; vc.MESRoomID = roomID; vc.DeviceName = mESVideoInfo.DeviceName; //vc.RoomName = mESVideoInfo.RoomName; //vc.MESCallDelegate = new OnESCallDelegate(this); Shared.Application.currentVC.NavigationController.PushViewController(vc, true); }else if (interphoneType == InterphoneType.HDL.ToString()) { //HDLLinphone 狄耐克 HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo); } else { HDLUtils.WriteLine("未对接,不支持监视"); } #else Intent intent = null; if (interphoneType == InterphoneType.IMOUVISIAL.ToString()) { intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.LeChengVideoActivity)); intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID); intent.PutExtra("uuid", mESVideoInfo.uuid); intent.PutExtra("DeviceName", mESVideoInfo.DeviceName); intent.PutExtra("cmtID", mESVideoInfo.cmtID); intent.PutExtra("roomno", mESVideoInfo.roomno); intent.PutExtra("unitno", mESVideoInfo.unitno); intent.PutExtra("HomeID", PirSend.HomeId); intent.PutExtra("callId", mESVideoInfo.callId); intent.PutExtra("Type", 0); //=========乐橙========== intent.PutExtra("AccessToken", mESVideoInfo.Lc_AccessToken); intent.PutExtra("DeviceId", mESVideoInfo.Lc_DeviceId); intent.PutExtra("Location", OnAppConfig.Instance.RequestHttpsHost.Contains("china") ? 0 : 1);//如果域名包含china,则是国内账号); intent.PutExtra("PlayToken", mESVideoInfo.Lc_PlayToken); intent.PutExtra("Psk", mESVideoInfo.Lc_Psk); Shared.Application.Activity.StartActivity(intent); } else if (interphoneType == InterphoneType.FLVI.ToString()) { intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.VideoActivity)); intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID); intent.PutExtra("uuid", mESVideoInfo.uuid); intent.PutExtra("DeviceName", mESVideoInfo.DeviceName); intent.PutExtra("cmtID", mESVideoInfo.cmtID); intent.PutExtra("roomno", mESVideoInfo.roomno); intent.PutExtra("unitno", mESVideoInfo.unitno); intent.PutExtra("HomeID", PirSend.HomeId); intent.PutExtra("callId", mESVideoInfo.callId); intent.PutExtra("Type", 0); //=========乐橙========== intent.PutExtra("AccessToken", mESVideoInfo.Lc_AccessToken); intent.PutExtra("DeviceId", mESVideoInfo.Lc_DeviceId); intent.PutExtra("Location", OnAppConfig.Instance.RequestHttpsHost.Contains("china") ? 0 : 1);//如果域名包含china,则是国内账号); intent.PutExtra("PlayToken", mESVideoInfo.Lc_PlayToken); intent.PutExtra("Psk", mESVideoInfo.Lc_Psk); Shared.Application.Activity.StartActivity(intent); } else if (interphoneType == InterphoneType.HDL.ToString()) { //HDLLinphone 狄耐克 HDLLinphone.Current.ShowESVideoMonitor(mESVideoInfo); } else { HDLUtils.WriteLine("未对接,不支持监视"); } #endif } /// /// 被呼叫页面 /// /// public void ShowESvideoVideoIntercom(ESVideoInfo mESVideoInfo, string interphoneType) { this.esVideoInfo = mESVideoInfo; int roomID = 0; int.TryParse(mESVideoInfo.roomno, out roomID); #if __IOS__ if (interphoneType == InterphoneType.IMOUVISIAL.ToString()) { //乐橙可视对讲 //1.初始化LCOpenSDK_Api LCApiKit.SharedInstance().IsChinaMainland = OnAppConfig.Instance.RequestHttpsHost.Contains("china");//如果域名包含china,则SDK 使用乐橙的中国大陆(正式)域名 LCApiKit.SharedInstance().InitSDKOpenApi(mESVideoInfo.Lc_AccessToken); //2021-05-18 目前推送的PlayToken;有问题会导致SDK崩溃,暂时不传 //LCApiKit.SharedInstance().CurrentDevicePlayToken = mESVideoInfo.Lc_PlayToken; LCApiKit.SharedInstance().CurrentDeviceId = mESVideoInfo.Lc_DeviceId; LCApiKit.SharedInstance().CurrentDeviceName = mESVideoInfo.DeviceName; LCApiKit.SharedInstance().CurrentPsk = mESVideoInfo.Lc_DeviceId; //2.跳转乐橙呼叫页面 LCOnIntercomViewController vc = new LCOnIntercomViewController(); mOnLCCallDelegate = new OnLCCallDelegate(this); vc.MLCCallDelegate = mOnLCCallDelegate; //vc.MLCCallDelegate = new OnLCCallDelegate(this); Shared.Application.currentVC.NavigationController.PushViewController(vc, true); } else if (interphoneType == InterphoneType.EZVIZ.ToString()) { //萤石猫眼呼叫 //初始化萤石云SDK,中文国内key、英文海外key 开发者账号使用应用包名申请的APPKEY,不同包名应用需配置不同的APPKEY EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b"); //1.设置所需河东的AccessToken和RefreshToken、域名地址 EZSDK.IOS.EZSDK.SharedInstance().SetHDlAccessToken(UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken); EZSDK.IOS.EZSDK.SharedInstance().SetRequestHttpsHostAndPlatform(OnAppConfig.Instance.RequestHttpsHost, 1, mESVideoInfo.HomeId); //2.设置萤石子账号的AccessToken到SDK EZSDK.IOS.EZSDK.SharedInstance().SetEZAccessToken(mESVideoInfo.Lc_AccessToken); //3.打开视频播放页面 EZSDK.IOS.EZSDK.SharedInstance().PlayWithDeviceSerial(mESVideoInfo.DeviceSerial); } else if (interphoneType == InterphoneType.HDL.ToString()) { //HDL Linphone 狄耐克 } else if (interphoneType == InterphoneType.FLVI.ToString()) { ESOnIntercomViewController vc = new ESOnIntercomViewController(); vc.MESVideoID = mESVideoInfo.ESVideoUUID; vc.MESRoomID = roomID; vc.DeviceName = mESVideoInfo.DeviceName; //vc.RoomName = mESVideoInfo.RoomName; //vc.MESCallDelegate = new OnESCallDelegate(this); mOnESCallDelegate = new OnESCallDelegate(this); vc.MESCallDelegate = mOnESCallDelegate; Shared.Application.currentVC.NavigationController.PushViewController(vc, true); }else{ HDLUtils.WriteLine("未支持的可视对讲类型"); } #else #region Android 处理 Intent intent = null; if (interphoneType == InterphoneType.IMOUVISIAL.ToString()) { //待删减不必要参数 intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.LeChengVideoActivity)); intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID); intent.PutExtra("uuid", mESVideoInfo.uuid); intent.PutExtra("DeviceName", mESVideoInfo.DeviceName); intent.PutExtra("cmtID", mESVideoInfo.cmtID); intent.PutExtra("roomno", mESVideoInfo.roomno); intent.PutExtra("unitno", mESVideoInfo.unitno); intent.PutExtra("HomeID", PirSend.HomeId); intent.PutExtra("callId", mESVideoInfo.callId); intent.PutExtra("Type", 1); //=========乐橙========== intent.PutExtra("AccessToken", mESVideoInfo.Lc_AccessToken); intent.PutExtra("DeviceId", mESVideoInfo.Lc_DeviceId); intent.PutExtra("Location", OnAppConfig.Instance.RequestHttpsHost.Contains("china") ? 0 : 1);//如果域名包含china,则是国内账号); intent.PutExtra("PlayToken", mESVideoInfo.Lc_PlayToken); intent.PutExtra("Psk", mESVideoInfo.Lc_Psk); Shared.Application.Activity.StartActivity(intent); } else if (interphoneType == InterphoneType.EZVIZ.ToString()) { ((BaseActivity)Shared.Application.Activity).SetCamera(b => { if (b) { intent = new Android.Content.Intent(); var bundle = new Android.OS.Bundle(); //传递name参数为tinyphp bundle.PutString("EzChildAccessToken", mESVideoInfo.Lc_AccessToken); bundle.PutString("HdlToken", UserInfo.Current.LoginTokenString); bundle.PutString("Url", OnAppConfig.Instance.RequestHttpsHost); bundle.PutString("EzvizAppKey", "1aa98a90489b4838b966b57018b4b04b"); bundle.PutInt("Platform", 1); bundle.PutString("HomeId", mESVideoInfo.HomeId); bundle.PutString("DeviceSerial", mESVideoInfo.DeviceSerial); intent.PutExtras(bundle); intent.SetComponent(new Android.Content.ComponentName(Shared.Application.Activity, "com.videogo.MainActivity")); Shared.Application.Activity.StartActivity(intent); } }); return; } else if (interphoneType == InterphoneType.HDL.ToString()) { //HDL Linphone 狄耐克 } else if (interphoneType == InterphoneType.FLVI.ToString()) { //待删减不必要参数 intent = new Intent(Shared.Application.Activity, typeof(HDL_ON_Android.VideoActivity)); intent.PutExtra("ESVideoUUID", mESVideoInfo.ESVideoUUID); intent.PutExtra("uuid", mESVideoInfo.uuid); intent.PutExtra("DeviceName", mESVideoInfo.DeviceName); intent.PutExtra("cmtID", mESVideoInfo.cmtID); intent.PutExtra("roomno", mESVideoInfo.roomno); intent.PutExtra("unitno", mESVideoInfo.unitno); intent.PutExtra("HomeID", PirSend.HomeId); intent.PutExtra("callId", mESVideoInfo.callId); intent.PutExtra("Type", 1); //=========乐橙========== intent.PutExtra("AccessToken", mESVideoInfo.Lc_AccessToken); intent.PutExtra("DeviceId", mESVideoInfo.Lc_DeviceId); intent.PutExtra("Location", OnAppConfig.Instance.RequestHttpsHost.Contains("china") ? 0 : 1);//如果域名包含china,则是国内账号); intent.PutExtra("PlayToken", mESVideoInfo.Lc_PlayToken); intent.PutExtra("Psk", mESVideoInfo.Lc_Psk); Shared.Application.Activity.StartActivity(intent); } else { HDLUtils.WriteLine("未支持的可视对讲类型"); } #endregion #endif } #region 动作回调和原生交互,提交记录到云端 /// /// 判断callId是否为空 /// /// bool CheckESVideoInfoIsNullOrEmpty() { return (esVideoInfo == null || string.IsNullOrEmpty(esVideoInfo.callId)); } /// /// 接听 /// void AnswerAction() { //Utlis.WriteLine("AnswerAction"); if (CheckESVideoInfoIsNullOrEmpty()) return; new Thread(() => { var requestJson = HttpUtil.GetSignRequestJson(esVideoInfo); var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Answer, requestJson); if (revertObj.Code == StateCode.SUCCESS) { //Utlis.WriteLine("POST 接听成功"); } else { Utlis.WriteLine("POST 接听失败 code: " + revertObj.Code); } }) { IsBackground = false }.Start(); } /// /// 挂断 /// /// void HangUpAction(int callDuration) { //Utlis.WriteLine("HangUpAction :" + callDuration); if (CheckESVideoInfoIsNullOrEmpty()) return; new Thread(() => { Dictionary dic = new Dictionary(); dic.Add("callId", esVideoInfo.callId); dic.Add("callDuration", callDuration); var requestJson = HttpUtil.GetSignRequestJson(dic); var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_HangUp, requestJson); if (revertObj.Code == StateCode.SUCCESS) { //Utlis.WriteLine("POST 挂断成功"); } else { Utlis.WriteLine("POST 挂断失败 code: " + revertObj.Code); } }) { IsBackground = false }.Start(); } /// /// 拒接 /// void RejectCallAction() { //Utlis.WriteLine("RejectCallAction"); if (CheckESVideoInfoIsNullOrEmpty()) return; new Thread(() => { Dictionary dic = new Dictionary(); dic.Add("callId", esVideoInfo.callId); var requestJson = HttpUtil.GetSignRequestJson(dic); var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Reject, requestJson); if (revertObj.Code == StateCode.SUCCESS) { //Utlis.WriteLine("POST 拒接成功"); } else { Utlis.WriteLine("POST 拒接失败 code: " + revertObj.Code); } }) { IsBackground = false }.Start(); } /// /// 截图成功 /// void ScreenshotSuccessfulAction(byte[] dataBytes) { //Utlis.WriteLine("ScreenshotSuccessfulAction"); if (CheckESVideoInfoIsNullOrEmpty()) return; new Thread(() => { //var imageName = Guid.NewGuid().ToString(); Dictionary dic = new Dictionary(); dic.Add("callId", esVideoInfo.callId); dic.Add("images", dataBytes); #if __IOS__ dic.Add("imagesName", "_IOS.jpg"); #else dic.Add("imagesName", "_Android.jpg"); #endif var requestJson = HttpUtil.GetSignRequestJson(dic); var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Screenshot, requestJson); if (revertObj.Code == StateCode.SUCCESS) { //Utlis.WriteLine("POST 截图上传成功"); } else { Utlis.WriteLine("POST 截图上传失败 code: " + revertObj.Code); } }) { IsBackground = false }.Start(); } DateTime UnlockDateTime = DateTime.MinValue; /// /// 开锁成功 /// void UnlockAction() { //Utlis.WriteLine("UnlockAction"); if (CheckESVideoInfoIsNullOrEmpty()) return; //3S内不允许触发第二次 if (UnlockDateTime.AddSeconds(3) > DateTime.Now) { Utlis.WriteLine("3S内不允许触发第二次"); //丰林SDKbug,呼叫的时候开锁成功会有2次回调, return; } UnlockDateTime = DateTime.Now; new Thread(() => { Dictionary dic = new Dictionary(); dic.Add("callId", esVideoInfo.callId); var requestJson = HttpUtil.GetSignRequestJson(dic); var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_FL_Unlock, requestJson); if (revertObj.Code == StateCode.SUCCESS) { //Utlis.WriteLine("POST 开锁成功"); } else { Utlis.WriteLine("POST 开锁失败 code: " + revertObj.Code); } }) { IsBackground = false }.Start(); } #endregion #region 王赢新接听和开锁接口 /// /// 开锁 /// void HDLUnlockAction() { //Utlis.WriteLine("UnlockAction"); if (esVideoInfo == null) return; new Thread(() => { Dictionary dic = new Dictionary(); dic.Add("deviceId", esVideoInfo.Lc_DeviceId);//设备id dic.Add("callId", esVideoInfo.callId); var requestJson = HttpUtil.GetSignRequestJson(dic); var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_VideoDevice_OpenDoorbell, requestJson); if (revertObj.Code == StateCode.SUCCESS) { Application.RunOnMainThread(() => { #if __IOS__ //和原生监控界面交互、发送开锁成功通知 NSNotificationCenter.DefaultCenter.PostNotificationName("lcCallDelegateOpenDoorSuccess", null); #endif }); } else { Utlis.WriteLine("POST 开锁失败 code: " + revertObj.Code); } }) { IsBackground = false }.Start(); } /// /// 更改通话状态 /// void HDLUpdateCallStatus(CallStatusType callStatusType, InterphoneType interphoneType, int callDuration = 0) { if (CheckESVideoInfoIsNullOrEmpty()) return; new Thread(() => { Dictionary dic = new Dictionary(); dic.Add("callId", esVideoInfo.callId);//呼叫id dic.Add("callStatus", callStatusType.ToString());//可用值:MISSED,RECEIVED,REJECT dic.Add("interphoneTypeEnum", interphoneType.ToString());//可用值:FLVI,IMOUVISIAL if (callStatusType == CallStatusType.RECEIVED && callDuration > 0) { dic.Add("callDuration", callDuration);//通话时长(秒) } var requestJson = HttpUtil.GetSignRequestJson(dic); var revertObj = HttpUtil.RequestHttpsPostFroHome(NewAPI.API_POST_VideoDevice_UpdateCallStatus, requestJson); if (revertObj.Code == StateCode.SUCCESS) { } else { Utlis.WriteLine("POST 更新状态失败 code: " + revertObj.Code); } }) { IsBackground = false }.Start(); } #endregion #if __IOS__ #region OnESCallDelegate /////// /////// OnESCallDelegate 继承响应事件 /////// OnESCallDelegate mOnESCallDelegate; /// /// iOS原生委托事件 /// public class OnESCallDelegate : ESCallDelegate { /// /// ESOnVideo /// [Weak] ESOnVideo _ESOnVideo; /// /// 初始化 /// /// 呼叫相关的参数 public OnESCallDelegate(ESOnVideo mESOnVideo) { _ESOnVideo = mESOnVideo; } /// /// 接听 /// public override void OnAnswerAction() { _ESOnVideo.AnswerAction(); } /// /// 挂断 /// /// public override void OnHangUpAction(int callDuration) { _ESOnVideo.HangUpAction(callDuration); } /// /// 拒接 /// public override void OnRejectCallAction() { _ESOnVideo.RejectCallAction(); } /// /// 截图成功 /// /// public override void OnScreenshotSuccessfulAction(UIImage image) { //NSData imageData = UIImagePNGRepresentation(image); UIImage NSData imageData = image.AsPNG(); byte[] dataBytes = new byte[imageData.Length]; System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, dataBytes, 0, Convert.ToInt32(imageData.Length)); //image.g _ESOnVideo.ScreenshotSuccessfulAction(dataBytes); } /// /// 开锁成功 /// public override void OnUnlockAction() { _ESOnVideo.UnlockAction(); } } #endregion #region OnLCCallDelegate /////// /////// OnLCCallDelegate 继承响应事件 /////// OnLCCallDelegate mOnLCCallDelegate; /// /// /// public class OnLCCallDelegate : LCCallDelegate { [Weak] ESOnVideo _ESOnVideo; public OnLCCallDelegate(ESOnVideo mESOnVideo) { _ESOnVideo = mESOnVideo; } /// /// 接听 /// public override void OnAnswerAction() { _ESOnVideo.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.IMOUVISIAL); } /// /// 挂断 /// /// public override void OnHangUpAction(int callDuration) { _ESOnVideo.HDLUpdateCallStatus(CallStatusType.RECEIVED, InterphoneType.IMOUVISIAL, callDuration); } /// /// 拒接 /// public override void OnRejectCallAction() { _ESOnVideo.HDLUpdateCallStatus(CallStatusType.REJECT, InterphoneType.IMOUVISIAL); } /// /// 截图成功 /// /// public override void OnScreenshotSuccessfulAction(UIImage image) { ////NSData imageData = UIImagePNGRepresentation(image); UIImage //NSData imageData = image.AsPNG(); //byte[] dataBytes = new byte[imageData.Length]; //System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, dataBytes, 0, Convert.ToInt32(imageData.Length)); ////image.g ////_ESOnVideo.ScreenshotSuccessfulAction(dataBytes); } /// /// 开锁成功 /// public override void OnUnlockAction() { _ESOnVideo.HDLUnlockAction(); } } #endregion #endif ///// ///// 测试方法 ///// ///// //public void Test(bool isMonitor = true) //{ // ESVideoInfo eSVideoInfo = new ESVideoInfo() // { // DeviceName = "室外机88", // ESVideoUUID = "JJY000019VPLLF", // }; // if (isMonitor) // { // ShowESVideoMonitor(eSVideoInfo, ""); // } // else // { // eSVideoInfo.callId = "88888"; // ShowESvideoVideoIntercom(eSVideoInfo, ""); // } //} } /// /// 可视对讲参数对象(仅在最后一步跳转到activity时才调用,为了做兼容这里都数据有点乱,以后有时间再理顺思路优化) /// public class ESVideoInfo { /// /// 室外机的UUID /// 例:JJY000007FSEYX /// public string ESVideoUUID = string.Empty; /// /// 室外机的名称 /// 例:室外机 /// public string DeviceName = "室外机"; /// /// 丰林请求的唯一id /// public string uuid = string.Empty; /// /// 丰林社区id /// public string cmtID = string.Empty; /// /// 丰林房间号 /// public string roomno = string.Empty; /// /// 丰林楼栋号 /// public string unitno = string.Empty; ///// ///// 丰林住宅Id ///// //public string HomeID= string.Empty; /// /// 呼叫记录Id /// public string callId = string.Empty; //========================大华========================== /// /// 账号accessToken /// 萤石子账号Token也共用这个字段 /// public string Lc_AccessToken = string.Empty; /// /// 设备序列号,通讯必要字段 /// public string Lc_DeviceId = string.Empty; /// /// 备注??? /// public string Lc_Psk = string.Empty; /// /// 预览画面必须使用 /// public string Lc_PlayToken = string.Empty; /// /// 账号标记:0国内,1国外;国内国外访问都地址不一样 /// public int Lc_Location = 0; //========================萤石云猫眼========================== /// /// 住宅Id /// public string HomeId = string.Empty; /// /// 设备序列号 /// public string DeviceSerial = string.Empty; //========================HDL SIP========================== /// /// 设备sip账号 interphoneType是HDL时才会有值 /// public string deviceSipAccount; } /// /// 通话状态类型 /// public enum CallStatusType { /// /// 未接 /// MISSED, /// /// 已接听 /// RECEIVED, /// /// 拒接 /// REJECT, } /// /// 可视对讲设备平台类型 /// public enum InterphoneType { /// /// 丰林平台 /// FLVI, /// /// 大华可视对讲平台 /// IMOUVISIAL, /// /// 萤石猫眼呼叫 /// EZVIZ, /// /// 狄耐克 HDL Linphone /// HDL, } }