Exemplo n.º 1
0
        public JObject Dial(DataSet dial, string connection, Boolean isWarmTransfer, int toAgentId)
        {
            JObject responseJobj = new JObject();
            string  postData = "", answerXml = "";
            bool    isAgenttransfer = true;
            bool    isVertoPhone    = false;
            string  callBackUrl     = System.Web.Configuration.WebConfigurationManager.AppSettings["CallBackUrl"].ToString();
            string  answerUrl       = System.Web.Configuration.WebConfigurationManager.AppSettings["AnswerUrl"].ToString();
            string  hangupUrl       = System.Web.Configuration.WebConfigurationManager.AppSettings["HangupUrl"].ToString();

            try
            {
                if (isWarmTransfer)
                {
                    isAgenttransfer = false;
                }
                if (dial.Tables[0].Rows[0]["OriginationUrl"].ToString() == "verto.rtc/")
                {
                    isVertoPhone = true;
                }

                Press3.BusinessRulesLayer.Gateways gatewayObj = new Press3.BusinessRulesLayer.Gateways();
                answerXml  = "<Response><Conference callbackMethod='GET'  callbackUrl='" + callBackUrl + "?ChannelName=Agent_" + Convert.ToString(toAgentId) + "&#38;IsVertoPhone=" + isVertoPhone.ToString() + "&#38;IsAgent=true&#38;isTransferToAgent=" + isAgenttransfer.ToString() + "&#38;TalkingAgentRequestUUID=";
                answerXml += dial.Tables[0].Rows[0]["TalkingAgentRequestUUID"].ToString() + "&#38;CallerSequenceNumber=" + dial.Tables[0].Rows[0]["CallerSequenceNumber"].ToString();
                answerXml += "&#38;CallerFsMemberId=" + dial.Tables[0].Rows[0]["CallerFsMemberId"].ToString() + "&#38;IsWarmTransfer=" + isWarmTransfer.ToString();
                answerXml += "&#38;GatewayURL=" + dial.Tables[0].Rows[0]["HttpUrl"].ToString() + "' >" + dial.Tables[0].Rows[0]["ConferenceRoom"].ToString() + "</Conference></Response>";
                Logger.Info("answerXml " + answerXml);
                postData  = "AnswerXml=" + System.Web.HttpUtility.UrlEncode(answerXml) + "&Prioraty=H&SequenceNumber=" + dial.Tables[0].Rows[0]["SequenceNumber"].ToString();
                postData += "&From=" + dial.Tables[0].Rows[0]["Source"].ToString() + "&To=" + dial.Tables[0].Rows[0]["Destination"].ToString();
                postData += "&OriginateSleep=1&AnswerUrl=" + answerUrl + "&Gateways=" + dial.Tables[0].Rows[0]["OriginationUrl"].ToString();
                postData += "&HangupUrl=" + hangupUrl + "&ExtraDialString=" + System.Web.HttpUtility.UrlEncode(dial.Tables[0].Rows[0]["ExtraDialString"].ToString());
                Logger.Info("postData " + postData);
                responseJobj = gatewayObj.RestApiRequest(postData, dial.Tables[0].Rows[0]["HttpUrl"].ToString() + "Call/", "POST");
                Logger.Info("responseJobj " + responseJobj);
                if (Convert.ToBoolean(responseJobj.SelectToken("Success").ToString()))
                {
                    var uuid      = responseJobj.SelectToken("RequestUUID").ToString();
                    var seqNumber = Convert.ToInt32(dial.Tables[0].Rows[0]["SequenceNumber"].ToString());
                    Press3.DataAccessLayer.Conference conferenceObj = new Press3.DataAccessLayer.Conference(connection);
                    conferenceObj.UpdateConferenceRequestUUID(uuid, seqNumber);
                }
                else
                {
                    responseJobj = new JObject(new JProperty("Success", false),
                                               new JProperty("Message", "Can not transfer call right now"));
                    //responseXml = "<Response><Hangup data='Issue in connect agent'/></Response>";
                }
            }
            catch (Exception ex)
            {
                responseJobj = new JObject(new JProperty("Success", false),
                                           new JProperty("Message", "Can not transfer call right now"));
                Logger.Error("Error in Class --> Calls, Method --> Dial, Exception -->" + ex.ToString());
            }

            return(responseJobj);
        }
Exemplo n.º 2
0
        public JObject ChangeCallActions(String connection, int status, int callId, string action, string filePath, string conferenceRoom, bool isOutbound)
        {
            try
            {
                string confRoom = ""; int memberId = 0; string httpURL = "";
                Press3.DataAccessLayer.Calls callsObject = new Press3.DataAccessLayer.Calls(connection);
                DataSet ds = callsObject.ChangeCallActions(status, callId, action, conferenceRoom, isOutbound, out confRoom, out memberId, out httpURL);

                if (ds == null)
                {
                    helper.CreateProperty(UDC.Label.MESSAGE, "No data returned from database");
                    helper.CreateProperty(UDC.Label.SUCCESS, false);
                }
                else
                {
                    if (action == "Hold")
                    {
                        if (ds.Tables.Count > 0)
                        {
                            Press3.BusinessRulesLayer.Gateways gatewayObj = new Press3.BusinessRulesLayer.Gateways();
                            string postData = "";
                            if (memberId > 0 && confRoom != "" && httpURL != "")
                            {
                                if (status == 1)
                                {
                                    postData += "ConferenceName=" + confRoom + "&FilePath=" + filePath + "HoldClip.mp3&MemberID=" + memberId + "";
                                    gatewayObj.RestApiRequest(postData, httpURL + "ConferencePlay/", "POST");
                                }
                                else if (status == 0)
                                {
                                    postData += "ConferenceName=" + confRoom + "&MemberID=" + memberId + "";
                                    gatewayObj.RestApiRequest(postData, httpURL + "ConferenceStopPlay/", "POST");
                                }
                            }
                        }
                    }
                    helper.ParseDataSet(ds);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Exception In AgentLogout " + ex.ToString());
            }
            return(helper.GetResponse());
        }