private void InsertScreenRecord(RecordInfoExt recordInfo) { try { if (Session == null) { return; } DatabaseInfo dbInfo = Session.DatabaseInfo; if (dbInfo == null) { return; } #region 创建记录信息字符串 string strInsertString = string.Empty; strInsertString += string.Format("c023{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "AS"); strInsertString += string.Format("c024{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "CHN"); strInsertString += string.Format("c022{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, 0); strInsertString += string.Format("c003{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "00000"); strInsertString += string.Format("c077{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.RecordReference); strInsertString += string.Format("c020{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.ServerIP); strInsertString += string.Format("c037{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.ServerID); strInsertString += string.Format("c038{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.ChannelID); strInsertString += string.Format("c039{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "N/A"); strInsertString += string.Format("c014{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.MediaType); strInsertString += string.Format("c015{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, string.Empty); strInsertString += string.Format("c004{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.StartRecordTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss")); strInsertString += string.Format("c005{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.StartRecordTime.ToString("yyyy-MM-dd HH:mm:ss")); strInsertString += string.Format("c006{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.StartRecordTime.ToString("yyyyMMddHHmmss")); strInsertString += string.Format("c007{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.StartRecordTime.AddYears(-1600).Ticks); strInsertString += string.Format("c008{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.StopRecordTime.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss")); strInsertString += string.Format("c009{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.StopRecordTime.ToString("yyyy-MM-dd HH:mm:ss")); strInsertString += string.Format("c010{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.StopRecordTime.ToString("yyyyMMddHHmmss")); strInsertString += string.Format("c011{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.StopRecordTime.AddYears(-1600).Ticks); strInsertString += string.Format("c012{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, (int)(recordInfo.StopRecordTime - recordInfo.StartRecordTime).TotalSeconds); strInsertString += string.Format("c042{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.Extension); strInsertString += string.Format("c021{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.Extension); strInsertString += string.Format("c025{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.EncryptFlag); strInsertString += string.Format("c031{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); strInsertString += string.Format("c033{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "N"); strInsertString += string.Format("c040{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, string.Empty); strInsertString += string.Format("c041{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, string.Empty); strInsertString += string.Format("c045{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); strInsertString += string.Format("c057{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, string.Empty); strInsertString += string.Format("c059{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); strInsertString += string.Format("c060{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); strInsertString += string.Format("c061{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); strInsertString += string.Format("c064{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); strInsertString += string.Format("c065{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); strInsertString += string.Format("c063{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); strInsertString += string.Format("c056{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); strInsertString += string.Format("c035{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "N"); strInsertString += string.Format("c109{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, recordInfo.SessionID); strInsertString += string.Format("c066{0}{1}{0}{0}", ConstValue.SPLITER_CHAR, "0"); #endregion #region 将记录信息插入数据库 OperationReturn optReturn; string strConn = dbInfo.GetConnectionString(); int errNum = 0; string errMsg = string.Empty; switch (dbInfo.TypeID) { case 2: DbParameter[] mssqlParameters = { MssqlOperation.GetDbParameter("@ainparam01", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@ainparam02", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@ainparam03", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@ainparam04", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@ainparam05", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@ainparam06", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@ainparam07", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@ainparam08", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@ainparam09", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@ainparam10", MssqlDataType.Varchar, 1024), MssqlOperation.GetDbParameter("@aouterrornumber", MssqlDataType.Bigint, 0), MssqlOperation.GetDbParameter("@aouterrorstring", MssqlDataType.Varchar, 200) }; mssqlParameters[0].Value = strInsertString; mssqlParameters[1].Value = string.Empty; mssqlParameters[2].Value = string.Empty; mssqlParameters[3].Value = string.Empty; mssqlParameters[4].Value = string.Empty; mssqlParameters[5].Value = string.Empty; mssqlParameters[6].Value = string.Empty; mssqlParameters[7].Value = string.Empty; mssqlParameters[8].Value = string.Empty; mssqlParameters[9].Value = string.Empty; mssqlParameters[10].Value = errNum; mssqlParameters[11].Value = errMsg; mssqlParameters[10].Direction = ParameterDirection.Output; mssqlParameters[11].Direction = ParameterDirection.Output; optReturn = MssqlOperation.ExecuteStoredProcedure(strConn, "P_21_001", mssqlParameters); if (!optReturn.Result) { OnDebug(LogMode.Error, string.Format("InsertScreenRecord fail.\t{0}\t{1}", optReturn.Code, optReturn.Message)); return; } if (mssqlParameters[10].Value.ToString() != "0") { OnDebug(LogMode.Error, string.Format("InsertScreenRecord fail.\t{0}\t{1}", mssqlParameters[10].Value, mssqlParameters[11].Value)); return; } break; case 3: DbParameter[] orclParameters = { OracleOperation.GetDbParameter("ainparam01", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("ainparam02", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("ainparam03", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("ainparam04", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("ainparam05", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("ainparam06", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("ainparam07", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("ainparam08", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("ainparam09", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("ainparam10", OracleDataType.Varchar2, 1024), OracleOperation.GetDbParameter("errornumber", OracleDataType.Int32, 0), OracleOperation.GetDbParameter("errorstring", OracleDataType.Varchar2, 200) }; orclParameters[0].Value = strInsertString; orclParameters[1].Value = string.Empty; orclParameters[2].Value = string.Empty; orclParameters[3].Value = string.Empty; orclParameters[4].Value = string.Empty; orclParameters[5].Value = string.Empty; orclParameters[6].Value = string.Empty; orclParameters[7].Value = string.Empty; orclParameters[8].Value = string.Empty; orclParameters[9].Value = string.Empty; orclParameters[10].Value = errNum; orclParameters[11].Value = errMsg; orclParameters[10].Direction = ParameterDirection.Output; orclParameters[11].Direction = ParameterDirection.Output; optReturn = OracleOperation.ExecuteStoredProcedure(strConn, "P_21_001", orclParameters); if (!optReturn.Result) { OnDebug(LogMode.Error, string.Format("InsertScreenRecord fail.\t{0}\t{1}", optReturn.Code, optReturn.Message)); return; } if (orclParameters[10].Value.ToString() != "0") { OnDebug(LogMode.Error, string.Format("InsertScreenRecord fail.\t{0}\t{1}", orclParameters[10].Value, orclParameters[11].Value)); return; } break; default: OnDebug(LogMode.Error, string.Format("InsertScreenRecord fail.\tDatabaseType invalid")); return; } #endregion OnDebug(LogMode.Info, string.Format("InsertScreenRecord\t{0}", recordInfo.RecordReference)); } catch (Exception ex) { OnDebug(LogMode.Error, string.Format("InsertScreenRecord fail.\t{0}", ex.Message)); } }
private void StartScreen(string extension, string voiceRefID, DateTime recordTime) { try { var isaServer = mListIsaServers.FirstOrDefault(); if (isaServer == null) { return; } string strIP = isaServer.HostAddress; string strToken = isaServer.AccessToken; string tempRefID = voiceRefID; JsonObject jsonRequest = new JsonObject(p => { p["action"] = new JsonProperty(string.Format("\"{0}\"", ACTION_START)); p["extno"] = new JsonProperty(string.Format("\"{0}\"", tempRefID)); p["extnumber"] = new JsonProperty(string.Format("\"{0}\"", extension)); p["user_name"] = new JsonProperty(string.Format("\"{0}\"", "username")); p["domain"] = new JsonProperty(string.Format("\"{0}\"", "domain")); p["timeout"] = new JsonProperty(string.Format("\"{0}\"", 2 * 60 * 60)); p["logs"] = new JsonProperty(string.Format("\"{0}\"", "w")); p["desktopno"] = new JsonProperty(string.Format("\"{0}\"", "1")); }); //string strRequest = jsonRequest.ToString("F"); string strRequest = jsonRequest.ToString(); string url = string.Format("http://{0}/record.action?access_token={1}", strIP, strToken); strRequest = string.Format("json={0}", strRequest); OnDebug(LogMode.Debug, string.Format("Send:{0}&{1}", url, strRequest)); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; using (var streamRequest = request.GetRequestStream()) { StreamWriter writer = new StreamWriter(streamRequest); writer.Write(strRequest); writer.Flush(); } string strResponse = string.Empty; using (var streamResponse = request.GetResponse().GetResponseStream()) { if (streamResponse != null) { StreamReader reader = new StreamReader(streamResponse); strResponse = reader.ReadToEnd(); } } OnDebug(LogMode.Debug, string.Format("Recv:{0}", strResponse)); try { JsonObject jsonResponse = new JsonObject(strResponse); if (jsonResponse[FIELD_ERRCODE] != null) { var errcode = jsonResponse[FIELD_ERRCODE].Value; if (errcode != "0") { string strMsg = string.Empty; if (jsonResponse[FIELD_ERRMSG] != null) { strMsg = jsonResponse[FIELD_ERRMSG].Value; } OnDebug(LogMode.Error, string.Format("StartScreen fail.\t{0}\t{1}\t{2}", extension, errcode, strMsg)); return; } if (jsonResponse[FIELD_SESSIONNO] != null) { string strSid = jsonResponse[FIELD_SESSIONNO].Value; string strContinent = isaServer.Continent; string strCountry = isaServer.Country; string strContinentWithCountry = string.Format("{0}{1}", strContinent, strCountry); if (strContinentWithCountry.Length != 5) { OnDebug(LogMode.Error, string.Format("IsaServer's continent or country invalid.\t{0}", strContinentWithCountry)); strContinentWithCountry = "ASCHN"; } int siteID = 0; int mediaType = 3; int channelID = 0; DateTime startTime = recordTime; //录音录屏同启同停,使用录音的开始时间作为录屏的开始时间 int num = mCurrentNumber; if (startTime <= mCurrentTime) { num++; //如果同一时间多个记录,此序号累加 } else { mCurrentTime = startTime; num = 1; } /* * ***录屏流水号的生成规则*** * * 共38个字符,从左到右 * * 0 ~ 1:洲代码,2位字母 * 2 ~ 4:国家代码,3位字母 * 5 ~ 8:站点号,4位,16进制 * 9 ~ 12:服务器ID,4位,16进制 * 13 ~ 16:媒体类型,4位,16进制 * 17 ~ 20:通道号,4位,16进制 * 21 ~ 34:日期时间,yyyyMMddHHmmss * 35 ~ 37:序数,3位,十进制,防止同一秒多条记录 * */ string strRefID = string.Format("{0}{1}{2}{3}{4}{5}{6}", strContinentWithCountry, siteID.ToString("X4"), isaServer.ID.ToString("X4"), mediaType.ToString("X4"), channelID.ToString("X4"), startTime.ToString("yyyyMMddHHmmss"), num); RecordInfoExt item = new RecordInfoExt(); item.RecordReference = strRefID; item.Extension = extension; item.VoiceRefID = voiceRefID; item.SessionID = strSid; item.StartRecordTime = startTime; item.ServerIP = isaServer.HostAddress; item.ServerID = isaServer.ID; item.ChannelID = 0; item.MediaType = 3; item.EncryptFlag = "0"; mListExtRefIDItems.Add(item); OnDebug(LogMode.Debug, string.Format("StartScreen:{0}\t{1}\t{2}", extension, voiceRefID, strSid)); } } } catch { } } catch (Exception ex) { OnDebug(LogMode.Error, string.Format("StartScreen fail.\t{0}", ex.Message)); } }