public List <OO_SMSData> GetApplyData([FromBody] JObject data)
        //public string GetApplyData([FromBody]JObject data)
        {
            string message = string.Empty;

            using (TransactionScope scope = new TransactionScope())
            {
                ConnectionFactory Connection = new ConnectionFactory();
                SqlConnection     conn       = Connection.CreateConnection();
                SMSDataService    SMSData    = null;
                try
                {
                    conn.Open();
                    if (data != null)
                    {
                        //SMSData = new SMSDataService(conn);
                        SMSData = new SMSDataService(conn);
                    }
                }
                catch (Exception e)
                {
                    message = e.Message;
                    string rowString = SMSData.ToString();
                }
                //return SMSData.Get(data);
                return(JsonConvert.DeserializeObject <List <OO_SMSData> >(SMSData.Get(data)));
            }
        }
Exemple #2
0
        public async Task <BulkSMSResponse> SendBulkSMSAsync(string from, List <string> to, string message)
        {
            var body = new SMSData(from, String.Join(",", to), message);

            var response = await _client.PostAsJsonAsync("smsapi/bulk/send_sms", body);

            response.EnsureSuccessStatusCode();

            var responseData = await response.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <BulkSMSResponse>(responseData));
        }
    private void ParseData(string data, bool skipDuplicates)
    {
        string[] texts = data.Split(new string[] { ParseKey }, StringSplitOptions.None);
        for(int i = 1; i < texts.Length; i++) { //skip the first one empty space
            string text = texts [i];
            string[] messageSplit = text.Split (new char[] { ':' }, 4);
            SMSData sData = new SMSData (int.Parse(messageSplit[0]), float.Parse (messageSplit [1]), messageSplit [2], messageSplit [3]);
            if (skipDuplicates && usedRealNoteIDs.Contains (sData.id))
                continue;

            usedRealNoteIDs.Add (sData.id);
            stockNotes.Add (sData);
        }
    }
Exemple #4
0
    private void ParseData(string data, bool skipDuplicates)
    {
        string[] texts = data.Split(new string[] { ParseKey }, StringSplitOptions.None);
        for (int i = 1; i < texts.Length; i++)          //skip the first one empty space
        {
            string   text         = texts [i];
            string[] messageSplit = text.Split(new char[] { ':' }, 4);
            SMSData  sData        = new SMSData(int.Parse(messageSplit[0]), float.Parse(messageSplit [1]), messageSplit [2], messageSplit [3]);
            if (skipDuplicates && usedRealNoteIDs.Contains(sData.id))
            {
                continue;
            }

            usedRealNoteIDs.Add(sData.id);
            stockNotes.Add(sData);
        }
    }
Exemple #5
0
 public SMSData GetRandomSMS()
 {
     if (realNotes.Count > 0)
     {
         int     index = UnityEngine.Random.Range(0, realNotes.Count - 1);
         SMSData sData = realNotes [index];
         stockNotes.RemoveAt(index);
         return(sData);
     }
     else if (stockNotes.Count > 0)
     {
         int     index = UnityEngine.Random.Range(0, stockNotes.Count - 1);
         SMSData sData = stockNotes [index];
         stockNotes.RemoveAt(index);
         return(sData);
     }
     return(null);
 }
Exemple #6
0
        //public string GetMappingData(string Leavecode)
        //{
        //    string qtytype = _leaveApprovalRepositary.GetMappingData(Leavecode).ToString();
        //    return qtytype;
        //}
        public Tuple <string, int> SaveLeaveApproval(LeaveApprovalServiceViewModel model)
        {
            Tuple <string, int> itemSaveData = _leaveApprovalRepositary.SaveAprrovedLeaveRequest(Mapper.Map <List <tbl_LeaveApproval> >(model.leaveApprovals.Select(Mapper.Map <LeaveApprovalServiceModel>)));
            var result = 1;

            if (itemSaveData.Item2 != -99)
            {
                result = 1;
                SMSData sms = new SMSData();

                //  var sms=_SMSUtility.SendSMS(model.leaveApprovals.FirstOrDefault(x=>x.ApproverMobNo.ToString()))
                return(itemSaveData);
            }
            else
            {
                result = 0;
                return(itemSaveData);
            }
        }
Exemple #7
0
        public static List <Message> GetMail()
        {
            UserCredential credential;
            string         startupPath = AppDomain.CurrentDomain.BaseDirectory;

            using (var stream = new System.IO.FileStream(startupPath + @"credentials.json", System.IO.FileMode.Open, System.IO.FileAccess.Read))
            {
                // The file token.json stores the user's access and refresh tokens, and is created
                // automatically when the authorization flow completes for the first time.
                string credPath = startupPath + @"token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }


            // Create Gmail API service.
            var service = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = "My Budget",
            });

            ListLabelsResponse response = service.Users.Labels.List("me").Execute();
            List <Label>       _labels  = new List <Label>();

            foreach (Label label in response.Labels)
            {
                Label _label = new Label();
                //  if(label.Type == "user")
                // {
                _label.Id   = label.Id;
                _label.Name = label.Name;
                //}
                _labels.Add(_label);
            }
            String         query  = "";
            List <Message> result = new List <Message>();

            // Define parameters of request.
            UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List("me");
            request.Q          = query;
            request.MaxResults = 5000;
            request.LabelIds   = "Label_2500152685495181559";
            // var serv = service.Users.Messages
            try
            {
                ListMessagesResponse response2 = request.Execute();
                result.AddRange(response2.Messages);
                //request.PageToken = response2.NextPageToken;

                //foreach (var item in result)
                for (int i = 0; i < result.Count; i++)
                {
                    var m = service.Users.Messages.Get("me", result[i].Id).Execute();
                    //if (m.LabelIds.Contains("IMPORTANT") && m.LabelIds.Contains("Label_2500152685495181559"))
                    //{
                    var      d     = m.Snippet;
                    var      model = new SMSData();
                    string[] msg   = d.Split(new string[] { "Message text: " }, StringSplitOptions.None);
                    model.SMSText = d;         // msg[1];
                    string sa = @"""" + "/Date(" + m.InternalDate + "-0530 )/" + @"""";
                    model.Date = DateTime.Now; // JsonConvert.DeserializeObject<DateTime>(sa);
                    //model.Label = _labels.Where(x => x.Id == m.LabelIds)
                    if (db.SMSData.Count() > 0)
                    {
                        DateTime prevDate = db.SMSData.ToList().OrderByDescending(x => x.Date.Value).Select(x => x.Date.Value).First();
                        if (model.Date > prevDate)
                        {
                            if (d.Contains("KOTAK") || d.Contains("XXXX467304"))
                            {
                                model.BankName = "Kotak Mahindra Bank";

                                if (d.Contains("credited "))
                                {
                                    model.TransactionType = "Credit";
                                    // resultString = Regex.Match(subjectString, @"\d+").Value;
                                    try
                                    {
                                        string[]     msg1 = msg[1].Split(new string[] { "credited Rs." }, StringSplitOptions.None);
                                        string[]     msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                        BankAccounts ba   = new BankAccounts();
                                        ba                 = db.BankAccounts.Where(x => x.BankName.Contains("KOTAK")).FirstOrDefault();
                                        ba.Balance        += Convert.ToDouble(msg2[0]);
                                        model.Amount       = msg2[0];
                                        db.Entry(ba).State = EntityState.Modified;
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine("An error occurred: " + ex.Message);
                                    }
                                }
                                else if (d.Contains("debited"))
                                {
                                    try
                                    {
                                        model.TransactionType = "Debit";
                                        string[] msg1 = msg[1].Split(new string[] { "has been debited" }, StringSplitOptions.None);
                                        // string[] msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                        BankAccounts ba = new BankAccounts();
                                        ba                 = db.BankAccounts.Where(x => x.BankName.Contains("KOTAK")).FirstOrDefault();
                                        ba.Balance        -= Convert.ToDouble(msg1[0]);
                                        model.Amount       = msg1[0];
                                        db.Entry(ba).State = EntityState.Modified;
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine("An error occurred: " + ex.Message);
                                    }
                                }

                                db.SaveChanges();
                            }
                            else if (d.Contains("ICICI") || d.Contains("XX3416") || d.Contains("XX416"))
                            {
                                model.BankName = "ICICI Bank";

                                if (d.Contains("credited "))
                                {
                                    try
                                    {
                                        model.TransactionType = "Credit";

                                        string[]     msg1 = msg[1].Split(new string[] { "credited Rs." }, StringSplitOptions.None);
                                        string[]     msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                        BankAccounts ba   = new BankAccounts();
                                        ba                 = db.BankAccounts.Where(x => x.BankName.Contains("ICICI") && x.AccountType == 0).FirstOrDefault();
                                        ba.Balance        += Convert.ToDouble(msg2[0]);
                                        model.Amount       = msg2[0];
                                        db.Entry(ba).State = EntityState.Modified;
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine("An error occurred: " + ex.Message);
                                    }
                                }
                                else if (d.Contains("debited"))
                                {
                                    model.TransactionType = "Debit";
                                    if (msg[1].Contains("INR"))
                                    {
                                        try
                                        {
                                            string[]     msg1 = msg[1].Split(new string[] { "INR" }, StringSplitOptions.None);
                                            string[]     msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                            BankAccounts ba   = new BankAccounts();
                                            ba                 = db.BankAccounts.Where(x => x.BankName.Contains("ICICI") && x.AccountType == 0).FirstOrDefault();
                                            ba.Balance        -= Convert.ToDouble(msg2[0]);
                                            model.Amount       = msg2[0];
                                            db.Entry(ba).State = EntityState.Modified;
                                        }
                                        catch (Exception ex)
                                        {
                                            Console.WriteLine("An error occurred: " + ex.Message);
                                        }
                                    }
                                    else if (msg[1].Contains("has been debited"))
                                    {
                                        try
                                        {
                                            string[]     msg1 = msg[1].Split(new string[] { "has been debited for Rs." }, StringSplitOptions.None);
                                            string[]     msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                            BankAccounts ba   = new BankAccounts();
                                            ba                 = db.BankAccounts.Where(x => x.BankName.Contains("ICICI") && x.AccountType == 0).FirstOrDefault();
                                            ba.Balance        -= Convert.ToDouble(msg2[0]);
                                            model.Amount       = msg2[0];
                                            db.Entry(ba).State = EntityState.Modified;
                                        }
                                        catch (Exception ex)
                                        {
                                            Console.WriteLine("An error occurred: " + ex.Message);
                                        }
                                    }
                                }

                                db.SaveChanges();
                            }
                            else if (d.Contains("Union") || d.Contains("X4541") || d.Contains("**24541"))
                            {
                                model.BankName = "Union Bank";

                                if (d.Contains("credited "))
                                {
                                    try
                                    {
                                        model.TransactionType = "Credit";
                                        // resultString = Regex.Match(subjectString, @"\d+").Value;
                                        string[]     msg1 = msg[1].Split(new string[] { "credited Rs." }, StringSplitOptions.None);
                                        string[]     msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                        BankAccounts ba   = new BankAccounts();
                                        ba                 = db.BankAccounts.Where(x => x.BankName.Contains("Union") && x.AccountType == 0).FirstOrDefault();
                                        ba.Balance        += Convert.ToDouble(msg2[0]);
                                        model.Amount       = msg2[0];
                                        db.Entry(ba).State = EntityState.Modified;
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine("An error occurred: " + ex.Message);
                                    }
                                }
                                else if (d.Contains("debited"))
                                {
                                    try
                                    {
                                        model.TransactionType = "Debit";
                                        string[]     msg1 = msg[1].Split(new string[] { "is debited for Rs." }, StringSplitOptions.None);
                                        string[]     msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                        BankAccounts ba   = new BankAccounts();
                                        ba                 = db.BankAccounts.Where(x => x.BankName.Contains("Union") && x.AccountType == 0).FirstOrDefault();
                                        ba.Balance        -= Convert.ToDouble(msg2[0]);
                                        model.Amount       = msg2[0];
                                        db.Entry(ba).State = EntityState.Modified;
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine("An error occurred: " + ex.Message);
                                    }
                                }

                                db.SaveChanges();
                            }
                            else if (d.Contains("SB A/c") || d.Contains("SBI UPI"))
                            {
                                model.BankName = "SBI";

                                if (d.Contains("credited "))
                                {
                                    try
                                    {
                                        model.TransactionType = "Credit";
                                        // resultString = Regex.Match(subjectString, @"\d+").Value;
                                        string[]     msg1 = msg[1].Split(new string[] { "credited Rs." }, StringSplitOptions.None);
                                        string[]     msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                        BankAccounts ba   = new BankAccounts();
                                        ba                 = db.BankAccounts.Where(x => x.BankName.Contains("SBI-H") && x.AccountType == 0).FirstOrDefault();
                                        ba.Balance        += Convert.ToDouble(msg2[0]);
                                        model.Amount       = msg2[0];
                                        db.Entry(ba).State = EntityState.Modified;
                                    }
                                    catch (Exception ex)
                                    {
                                        Console.WriteLine("An error occurred: " + ex.Message);
                                    }
                                }
                                else if (d.Contains("debited"))
                                {
                                    if (msg[1].Contains("INR"))
                                    {
                                        try
                                        {
                                            string[]     msg1 = msg[1].Split(new string[] { "INR" }, StringSplitOptions.None);
                                            string[]     msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                            BankAccounts ba   = new BankAccounts();
                                            ba                 = db.BankAccounts.Where(x => x.BankName.Contains("SBI-H") && x.AccountType == 0).FirstOrDefault();
                                            ba.Balance        -= Convert.ToDouble(msg2[0]);
                                            model.Amount       = msg2[0];
                                            db.Entry(ba).State = EntityState.Modified;
                                        }
                                        catch (Exception ex)
                                        {
                                            Console.WriteLine("An error occurred: " + ex.Message);
                                        }
                                    }
                                    else if (msg[1].Contains("is debited for"))
                                    {
                                        try
                                        {
                                            model.TransactionType = "Debit";
                                            string[]     msg1 = msg[1].Split(new string[] { "is debited for Rs." }, StringSplitOptions.None);
                                            string[]     msg2 = msg1[1].Split(new string[] { "on" }, StringSplitOptions.None);
                                            BankAccounts ba   = new BankAccounts();
                                            ba                 = db.BankAccounts.Where(x => x.BankName.Contains("SBI-H") && x.AccountType == 0).FirstOrDefault();
                                            ba.Balance        -= Convert.ToDouble(msg2[0]);
                                            model.Amount       = msg2[0];
                                            db.Entry(ba).State = EntityState.Modified;
                                        }
                                        catch (Exception ex)
                                        {
                                            Console.WriteLine("An error occurred: " + ex.Message);
                                        }
                                    }
                                }

                                db.SaveChanges();
                            }


                            //if (db.SMSData.Count() > 0)
                            //{
                            //    DateTime prevDate = db.SMSData.ToList().OrderByDescending(x => x.Date.Value).Select(x => x.Date.Value).First();
                            //    if (model.Date > prevDate)
                            //    {
                            db.SMSData.Add(model);
                        }
                    }
                    else
                    {
                        db.SMSData.Add(model);
                    }
                    // Console.WriteLine(i);
                }

                // }
                db.SaveChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
            }
            return(result);
        }
Exemple #8
0
        public override int OnMessagingEvent(MessagingEvent e)
        {
            short code = e.getCode();
            tsip_message_event_type_t type    = e.getType();
            MessagingSession          session = e.getSession();
            SipMessage message = e.getSipMessage();

            if (session == null && message != null)
            { /* "Server-side-session" e.g. Initial MESSAGE/INVITE sent by the remote party */
                session = e.takeSessionOwnership();
            }

            //Console.WriteLine("From:{0} == To:{1}", message.getSipHeaderValue("f"), message.getSipHeaderValue("t"));
            if (message == null)
            {
                return(0);
            }

            switch (type)
            {
            case tsip_message_event_type_t.tsip_i_message:
                byte[] content = message.getSipContent();
                if (content != null)
                {
                    Console.WriteLine("Message Content ==> {0}", Encoding.UTF8.GetString(content));
                    session.accept();

                    String contentType = message.getSipHeaderValue("c");
                    if (contentType != null && contentType.Equals("application/vnd.3gpp.sms", StringComparison.InvariantCultureIgnoreCase))
                    {
                        SMSData smsData = SMSEncoder.decode(content, (uint)content.Length, false);
                        if (smsData != null)
                        {
                            twrap_sms_type_t smsType = smsData.getType();
                            if (smsType == twrap_sms_type_t.twrap_sms_type_rpdata)
                            {
                                uint   payLength           = smsData.getPayloadLength();
                                String P_Asserted_Identity = message.getSipHeaderValue("P-Asserted-Identity");
                                if (payLength > 0)
                                {
                                    /* Send RP-ACK */
                                    String    destination = smsData.getOA();
                                    RPMessage rpACK       = SMSEncoder.encodeACK(smsData.getMR(), Program.SMSC, destination == null ? "123456789" : destination, false);
                                    if (rpACK != null)
                                    {
                                        uint pay_len = rpACK.getPayloadLength();
                                        if (pay_len > 0)
                                        {
                                            byte[] pay = new byte[pay_len];
                                            rpACK.getPayload(pay, (uint)pay.Length);

                                            //byte[] pay = Encoding.UTF8.GetBytes("\x03\x01\x41\x09\x01\x00\x01\x80\x01\x32\x42\x00\x69");

                                            MessagingSession m = new MessagingSession(Program.sipStack);
                                            m.setToUri(String.Format("sip:{0}@{1}", Program.SMSC, Program.REALM));
                                            m.addHeader("Content-Type", "application/vnd.3gpp.sms");
                                            m.addHeader("Content-Transfer-Encoding", "binary");
                                            m.send(pay, (uint)pay.Length);

                                            m.Dispose();
                                        }
                                        rpACK.Dispose();
                                    }

                                    /* Print payload */
                                    byte[] payload = new byte[payLength];
                                    smsData.getPayload(payload, (uint)payload.Length);
                                    Console.WriteLine("SMS content ={0} and OA={1}", Encoding.UTF8.GetString(payload), smsData.getOA());
                                }
                                else
                                {
                                    /* Send RP-ERROR */
                                    /* payload is mandatory in RP-DATA messages */
                                    /* Send RP-ACK */
                                    String    destination = smsData.getOA();
                                    RPMessage rpError     = SMSEncoder.encodeError(smsData.getMR(), Program.SMSC, destination == null ? "123456789" : destination, false);
                                    if (rpError != null)
                                    {
                                        uint pay_len = rpError.getPayloadLength();
                                        if (pay_len > 0)
                                        {
                                            byte[] pay = new byte[pay_len];
                                            rpError.getPayload(pay, (uint)pay.Length);

                                            MessagingSession m = new MessagingSession(Program.sipStack);
                                            m.setToUri(String.Format("sip:{0}@{1}", Program.SMSC, Program.REALM));
                                            m.addHeader("Content-Type", "application/vnd.3gpp.sms");
                                            m.addHeader("Content-Transfer-Encoding", "binary");
                                            m.send(pay, (uint)pay.Length);

                                            m.Dispose();
                                        }
                                        rpError.Dispose();
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    session.reject();
                }
                break;

            case tsip_message_event_type_t.tsip_ao_message:
                break;
            }

            Console.WriteLine("OnMessagingEvent() ==> {0}:{1}", code, e.getPhrase());

            return(0);
        }
            /// <summary>
            /// Messaging events
            /// </summary>
            /// <param name="e"></param>
            /// <returns></returns>
            public override int OnMessagingEvent(MessagingEvent e)
            {
                tsip_message_event_type_t type = e.getType();

                switch (type)
                {
                case tsip_message_event_type_t.tsip_ao_message:
                    break;

                case tsip_message_event_type_t.tsip_i_message:
                {
                    SipMessage       message = e.getSipMessage();
                    MessagingSession session = e.getSession();
                    uint             sessionId;

                    if (session == null)
                    {
                        /* "Server-side-session" e.g. Initial MESSAGE sent by the remote party */
                        session = e.takeSessionOwnership();
                    }

                    if (session == null)
                    {
                        LOG.Error("Failed to take session ownership");
                    }

                    if (message == null)
                    {
                        LOG.Error("Invalid message");

                        session.reject();
                        session.Dispose();
                        return(0);
                    }

                    sessionId = session.getId();
                    String from        = message.getSipHeaderValue("f");
                    String contentType = message.getSipHeaderValue("c");
                    byte[] bytes       = message.getSipContent();
                    byte[] content     = null;

                    if (bytes == null || bytes.Length == 0)
                    {
                        LOG.Error("Invalid MESSAGE");
                        session.reject();
                        session.Dispose();
                        return(0);
                    }

                    // Send 200 OK
                    session.accept();
                    session.Dispose();

                    if (String.Equals(contentType, ContentType.SMS_3GPP, StringComparison.InvariantCultureIgnoreCase))
                    {
                        /* ==== 3GPP SMSIP  === */
                        byte[]  buffer  = (bytes.Clone() as byte[]);
                        SMSData smsData = SMSEncoder.decode(buffer, (uint)buffer.Length, false);
                        if (smsData != null)
                        {
                            twrap_sms_type_t smsType = smsData.getType();
                            if (smsType == twrap_sms_type_t.twrap_sms_type_rpdata)
                            {
                                /* === We have received a RP-DATA message === */
                                long   payLength = smsData.getPayloadLength();
                                String SMSC      = message.getSipHeaderValue("P-Asserted-Identity");
                                String SMSCPhoneNumber;
                                String origPhoneNumber = smsData.getOA();

                                /* Destination address */
                                if (origPhoneNumber != null)
                                {
                                    from = UriUtils.GetValidSipUri(origPhoneNumber);
                                }
                                else if ((origPhoneNumber = UriUtils.GetValidPhoneNumber(from)) == null)
                                {
                                    LOG.Error("Invalid destination address");
                                    return(0);
                                }

                                /* SMS Center
                                 * 3GPP TS 24.341 - 5.3.2.4	Sending a delivery report
                                 * The address of the IP-SM-GW is received in the P-Asserted-Identity header in the SIP MESSAGE
                                 * request including the delivered short message.
                                 * */
                                if ((SMSCPhoneNumber = UriUtils.GetValidPhoneNumber(SMSC)) == null)
                                {
                                    SMSC = this.sipService.manager.ConfigurationService.Get(Configuration.ConfFolder.RCS, Configuration.ConfEntry.SMSC, Configuration.DEFAULT_RCS_SMSC);
                                    if ((SMSCPhoneNumber = UriUtils.GetValidPhoneNumber(SMSC)) == null)
                                    {
                                        LOG.Error("Invalid IP-SM-GW address");
                                        return(0);
                                    }
                                }

                                if (payLength > 0)
                                {
                                    /* Send RP-ACK */
                                    RPMessage rpACK = SMSEncoder.encodeACK(smsData.getMR(), SMSCPhoneNumber, origPhoneNumber, false);
                                    if (rpACK != null)
                                    {
                                        long ack_len = rpACK.getPayloadLength();
                                        if (ack_len > 0)
                                        {
                                            buffer = new byte[(int)ack_len];
                                            long len = rpACK.getPayload(buffer, (uint)buffer.Length);

                                            MessagingSession m = new MessagingSession(this.sipService.SipStack);
                                            m.setToUri(SMSC);
                                            m.addHeader("Content-Type", ContentType.SMS_3GPP);
                                            m.addHeader("Content-Transfer-Encoding", "binary");
                                            m.addCaps("+g.3gpp.smsip");
                                            m.send(buffer, (uint)len);
                                            m.Dispose();
                                        }
                                        rpACK.Dispose();
                                    }

                                    /* Get ascii content */
                                    content = new byte[(int)payLength];
                                    smsData.getPayload(content, (uint)content.Length);
                                }
                                else
                                {
                                    /* Send RP-ERROR */
                                    RPMessage rpError = SMSEncoder.encodeError(smsData.getMR(), SMSCPhoneNumber, origPhoneNumber, false);
                                    if (rpError != null)
                                    {
                                        long err_len = rpError.getPayloadLength();
                                        if (err_len > 0)
                                        {
                                            buffer = new byte[(int)err_len];
                                            long len = rpError.getPayload(buffer, (uint)buffer.Length);

                                            MessagingSession m = new MessagingSession(this.sipService.SipStack);
                                            m.setToUri(SMSC);
                                            m.addHeader("Content-Type", ContentType.SMS_3GPP);
                                            m.addHeader("Transfer-Encoding", "binary");
                                            m.addCaps("+g.3gpp.smsip");
                                            m.send(buffer, (uint)len);
                                            m.Dispose();
                                        }
                                        rpError.Dispose();
                                    }
                                }
                            }
                            else
                            {
                                /* === We have received any non-RP-DATA message === */
                                if (smsType == twrap_sms_type_t.twrap_sms_type_ack)
                                {
                                    /* Find message from the history (by MR) an update it's status */
                                    LOG.Debug("RP-ACK");
                                }
                                else if (smsType == twrap_sms_type_t.twrap_sms_type_error)
                                {
                                    /* Find message from the history (by MR) an update it's status */
                                    LOG.Debug("RP-ERROR");
                                }
                            }
                        }
                    }
                    else
                    {
                        /* ==== text/plain or any other  === */
                        content = bytes;
                    }


                    /* Alert the user a,d add the message to the history */
                    if (content != null)
                    {
                        MessagingEventArgs eargs = new MessagingEventArgs(sessionId, MessagingEventTypes.INCOMING, e.getPhrase(), content);
                        eargs
                        .AddExtra(MessagingEventArgs.EXTRA_CODE, e.getCode())
                        .AddExtra(MessagingEventArgs.EXTRA_REMOTE_PARTY, from)
                        .AddExtra(MessagingEventArgs.EXTRA_CONTENT_TYPE, contentType == null ? ContentType.UNKNOWN : contentType);
                        EventHandlerTrigger.TriggerEvent <MessagingEventArgs>(this.sipService.onMessagingEvent, this.sipService, eargs);
                    }
                    break;
                }
                }

                return(0);
            }