| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618 |
- using LitJson;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- namespace WindowsServiceClient
- {
- class MyServlet : Servlet
- {
- public override void onCreate()
- {
- base.onCreate();
- }
- public class Info
- {
- public string state { get; set; }
- public string message { get; set; }
- public List<T_Call_CallRecords> CallList { get; set; }
- public config config { get; set; }
- }
- /// <summary>
- /// onGet请求
- /// </summary>
- /// <param name="request"></param>
- /// <param name="response"></param>
- public override void onGet(HttpListenerRequest request, HttpListenerResponse response)
- {
- Console.WriteLine("GET:" + request.Url);
- bool isContains = request.Url.ToString().Contains("?");
- if (isContains)
- {
- string msg = request.Url.ToString().Split('?')[1];
- string ral = Get("http://117.160.143.199:4624/Callrecords/Sound?" + msg);
- Info rt = JsonMapper.ToObject<Info>(ral);
- byte[] buffer = null;
- if (rt.CallList.Count > 0)
- {
- ExitSound(rt.CallList, rt.config);
- buffer = Encoding.UTF8.GetBytes("{state:\"success\",message:\"success\",\"data\":\""+ rt.CallList.Count + "\"}");
- }
- else {
- buffer = Encoding.UTF8.GetBytes("{state:\"success\",message:\"success\",\"data\":\"0\"}");
- }
- System.IO.Stream output = response.OutputStream;
- output.Write(buffer, 0, buffer.Length);
- output.Close();
- }
- //You must close the output stream.
- // listener.Stop();
- }
- Dictionary<string, string> header = new Dictionary<string, string>();
- /// <summary>
- /// Get请求
- /// </summary>
- /// <param name="url"></param>
- /// <returns></returns>
- private string Get(string url)
- {
- string result = "";
- StringBuilder builder = new StringBuilder();
- builder.Append(url);
- HttpWebRequest req = (HttpWebRequest)WebRequest.Create(builder.ToString());
- if (header != null)
- {
- foreach (var keyValuePair in header)
- {
- req.Headers.Add(keyValuePair.Key, keyValuePair.Value);
- }
- }
- //添加参数
- HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
- Stream stream = resp.GetResponseStream();
- try
- {
- //获取内容
- using (StreamReader reader = new StreamReader(stream))
- {
- result = reader.ReadToEnd();
- }
- }
- finally
- {
- stream.Close();
- }
- return result;
- }
- /// <summary>
- /// onPost请求
- /// </summary>
- /// <param name="request"></param>
- /// <param name="response"></param>
- public override void onPost(HttpListenerRequest request, HttpListenerResponse response)
- {
- Console.WriteLine("POST:" + request.Url);
- byte[] res = Encoding.UTF8.GetBytes("OK2");
- response.OutputStream.Write(res, 0, res.Length);
- }
- /// <summary>
- /// StartLoop请求
- /// </summary>
- /// <param name="msg"></param>
- private void StartLoop(string msg)
- {
- string ral = Get("http://117.160.143.199:4624/Callrecords/Sound?" + msg);
- Console.Write(ral);
- }
- #region 批量下载录音文件
- /// <summary>
- /// 批量下载录音文件
- /// </summary>
- /// <returns></returns>
- public void ExitSound(List<T_Call_CallRecords> CallList, config config)
- {
- // string filePath = Configs.GetValue("Sound_recording");
- System.IO.DriveInfo[] allDrives = System.IO.DriveInfo.GetDrives();
- string filePath = string.Empty;
- // 判断磁盘是否存在,不存在直接保存在C盘
- string disk = "D:";
- if (!Directory.Exists(disk))
- filePath = "C:" + "\\CallCenter_Sound\\";
- else
- filePath = "D:" + "\\CallCenter_Sound\\";
- // 如果文件不存在,创建文件; 如果存在,跳过
- try
- {
- if (!Directory.Exists(filePath))
- {
- Directory.CreateDirectory(filePath);
- }
- if (CallList != null)
- {
- int iii = 0;
- foreach (var it in CallList)
- {
- string FilePath = "";
- if (it.FilePath != "" && config != null && !string.IsNullOrEmpty(config.F_ParamValue))
- {
- var ym = config.F_ParamValue;
- if (ym.Substring(ym.Length - 1) == "/")
- {
- ym = ym.Substring(0, ym.Length - 1);
- }
- FilePath = ym + it.FilePath.Substring(it.FilePath.IndexOf(':') + 1).Replace('\\', '/');
- }
- string filename = "l" + it.FilePath.Split('l')[1];
- filename = filename.Split('.')[0] + "_" + it.CallNumber + ".mp3";
- try
- {
- string[] sArray = filename.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
- string flie = filePath + "\\" + sArray[0] + "\\" + sArray[1] + "\\" + sArray[2];
- if (!Directory.Exists(flie))
- {
- Directory.CreateDirectory(flie);
- }
- if (System.IO.File.Exists(flie + "\\" + sArray[3]))
- {
- continue;
- }
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(FilePath);
- HttpWebResponse response = request.GetResponse() as HttpWebResponse;
- Stream responseStream = response.GetResponseStream();
- Stream stream = new FileStream(flie + "\\" + sArray[3], FileMode.Create);
- byte[] bArr = new byte[1024];
- int size = responseStream.Read(bArr, 0, bArr.Length);
- while (size > 0)
- {
- stream.Write(bArr, 0, size);
- size = responseStream.Read(bArr, 0, bArr.Length);
- }
- iii += 1;
- stream.Close();
- responseStream.Close();
- }
- catch (Exception e)
- {
- continue;
- }
- }
- }
- }
- catch (Exception e)
- {
- throw;
- }
- }
- #endregion
- }
- }
- #region Model
- public class config
- {
- public int F_ParamId
- {
- get; set;
- }
- /// <summary>
- ///
- /// </summary>
- public string F_ParamCode
- {
- get; set;
- }
- /// <summary>
- ///
- /// </summary>
- public string F_ParamValue
- {
- get; set;
- }
- /// <summary>
- ///
- /// </summary>
- public string F_ParamDes
- {
- get; set;
- }
- /// <summary>
- ///
- /// </summary>
- public int? F_State
- {
- get; set;
- }
- }
- public class T_Call_CallRecords
- {
- /// <summary>
- /// 呼叫编号
- /// </summary>
- public string CallId
- {
- get; set;
- }
- /// <summary>
- /// 来电号码
- /// </summary>
- public string CallNumber
- {
- get; set;
- }
- /// <summary>
- /// 客户id
- /// </summary>
- public string CusId
- {
- get; set;
- }
- /// <summary>
- /// 客户编号
- /// </summary>
- public string CusCode
- {
- get; set;
- }
- /// <summary>
- /// 呼叫类型,0呼入1呼出
- /// </summary>
- public int? CallType
- {
- get; set;
- }
- /// <summary>
- /// 呼叫状态,0:未接通电话1已接通电话
- /// </summary>
- public int? CallState
- {
- get; set;
- }
- /// <summary>
- /// 处理方式0:IVR处理1骚扰电话2自助服务3转值班电话4留言5呼损6人工处理
- /// </summary>
- public int? DealType
- {
- get; set;
- }
- /// <summary>
- /// 开始时间
- /// </summary>
- public DateTime? BeginTime
- {
- get; set;
- }
- /// <summary>
- /// ivr开始时间
- /// </summary>
- public DateTime? IvrStartTime
- {
- get; set;
- }
- /// <summary>
- /// ivr结束时间
- /// </summary>
- public DateTime? IvrEndTime
- {
- get; set;
- }
- /// <summary>
- /// 振铃开始时间
- /// </summary>
- public DateTime? RingStartTime
- {
- get; set;
- }
- /// <summary>
- /// 振铃结束时间
- /// </summary>
- public DateTime? RingEndTime
- {
- get; set;
- }
- /// <summary>
- /// 通话开始时间
- /// </summary>
- public DateTime? TalkStartTime
- {
- get; set;
- }
- /// <summary>
- /// 通话结束时间
- /// </summary>
- public DateTime? TalkEndTime
- {
- get; set;
- }
- /// <summary>
- /// 结束时间
- /// </summary>
- public DateTime? EndTime
- {
- get; set;
- }
- /// <summary>
- /// 总时长(s)
- /// </summary>
- public int? LongTime
- {
- get; set;
- }
- /// <summary>
- /// IVR时长(s)
- /// </summary>
- public int? IvrLongTime
- {
- get; set;
- }
- /// <summary>
- /// 振铃时长(s)
- /// </summary>
- public int? RingLongTime
- {
- get; set;
- }
- /// <summary>
- /// 通话时长(s)
- /// </summary>
- public int? TalkLongTime
- {
- get; set;
- }
- /// <summary>
- /// 坐席id
- /// </summary>
- public int? UserId
- {
- get; set;
- }
- /// <summary>
- /// 坐席工号
- /// </summary>
- public string UserCode
- {
- get; set;
- }
- /// <summary>
- /// 坐席姓名
- /// </summary>
- public string UserName
- {
- get; set;
- }
- /// <summary>
- /// 坐席分机号
- /// </summary>
- public string ExtNumber
- {
- get; set;
- }
- /// <summary>
- /// 用于获取录音的编号
- /// </summary>
- public string FilePath
- {
- get; set;
- }
- /// <summary>
- /// 是否录入工单
- /// </summary>
- public bool IsExitWorkOrder
- {
- get; set;
- }
- /// <summary>
- /// 是否处理0未处理1已处理2注销
- /// </summary>
- public int? IsDeal
- {
- get; set;
- }
- /// <summary>
- /// 操作类型,0正常1转移2三方通话
- /// </summary>
- public int? OperateType
- {
- get; set;
- }
- /// <summary>
- /// 操作目标
- /// </summary>
- public string OperateObject
- {
- get; set;
- }
- /// <summary>
- /// 操作时间
- /// </summary>
- public DateTime? OperateTime
- {
- get; set;
- }
- /// <summary>
- /// 备注
- /// </summary>
- public string Remark
- {
- get; set;
- }
- /// <summary>
- /// 满意度,1非常满意、2基本满意、3不满意
- /// </summary>
- public int? MYD
- {
- get; set;
- }
- /// <summary>
- /// IVR中选择的业务类型
- /// </summary>
- public int? BusinessType
- {
- get; set;
- }
- /// <summary>
- ///
- /// </summary>
- public string Location
- {
- get; set;
- }
- /// <summary>
- /// 来电自增Id
- /// </summary>
- public int CallRecordsId
- {
- get; set;
- }
- /// <summary>
- /// 排队开始时间
- /// </summary>
- public DateTime? WaitStartTime
- {
- get; set;
- }
- /// <summary>
- /// 排队结束时间
- /// </summary>
- public DateTime? WaitEndTime
- {
- get; set;
- }
- /// <summary>
- /// 排队时长
- /// </summary>
- public int? WaitLongTime
- {
- get; set;
- }
- /// <summary>
- /// 未接通状态(0其他、1坐席未登录、2坐席忙、3振铃)
- /// </summary>
- public int? NoCallState
- {
- get; set;
- }
- /// <summary>
- /// 与工作时间间隔秒数
- /// </summary>
- public int? WorkTimesDiff
- {
- get; set;
- }
- /// <summary>
- /// 质检状态(0未质检、1已质检)
- /// </summary>
- public int? F_QCState
- {
- get; set;
- }
- /// <summary>
- /// 质检分值
- /// </summary>
- public decimal? F_QCScore
- {
- get; set;
- }
- /// <summary>
- /// 质检备注
- /// </summary>
- public string F_QCRemark
- {
- get; set;
- }
- /// <summary>
- /// 质检人Id
- /// </summary>
- public int? F_QCUserId
- {
- get; set;
- }
- /// <summary>
- /// 质检人名称
- /// </summary>
- public string F_QCUserName
- {
- get; set;
- }
- /// <summary>
- /// 质检时间
- /// </summary>
- public DateTime? F_QCTime
- {
- get; set;
- }
- /// <summary>
- /// 是否推荐
- /// </summary>
- public int? F_QCIsSelect
- {
- get; set;
- }
- /// <summary>
- ///
- /// </summary>
- public int? F_HJJGId
- {
- get; set;
- }
- /// <summary>
- ///
- /// </summary>
- public string F_HJJGName
- {
- get; set;
- }
- /// <summary>
- /// 质检客服-存在的问题
- /// </summary>
- public string F_QCQuestion
- {
- get; set;
- }
- /// <summary>
- /// 质检客服-修改意见
- /// </summary>
- public string F_QCAdvise
- {
- get; set;
- }
- /// <summary>
- /// 拨号类型:0:拨号外呼;1:95005回访外呼;2:电销回访外呼
- /// </summary>
- public string TaskType
- {
- get; set;
- }
- /// <summary>
- /// 回访的电话ID
- /// </summary>
- public string TaskPhoneID
- {
- get; set;
- }
- /// <summary>
- /// 回访记录编号:GUID编号唯一
- /// </summary>
- public string TaskID
- {
- get; set;
- }
- }
- #endregion
|