Interaktif SMS Api

  • Konbuyu başlatan Konbuyu başlatan ulutas55
  • Başlangıç tarihi Başlangıç tarihi
Kodla Büyü

ulutas55

Site Gezgini
Mesajlar
95
Arkadaşlar yaptığımız bir çalışmada interaktif sms api kodları kullanarak bize tanımlı İnteraktif uzun numaraya gelen mesajları almak istediğimizde döngü mesaj sayısı kadar dönüyor fakat her defasında aynı mesajı kaydediyor.

bu konuda bilgisi olup yardım edeceklere şimdiden teşekkürler.

Kod:
      if (!IsPostBack)
        {
            WebClient wc = new WebClient();
            string url = "http://api.smcollector.com/xmlapi.aspx";
            string XML = "<SMCollectorMain>";
            XML += " <UserName>----</UserName> ";
            XML += " <PassWord>-----</PassWord> ";
            XML += " <Action>0</Action> ";
            XML += " <List>ALL</List> ";
            XML += " </SMCollectorMain> ";

            byte[] buffer = Encoding.UTF8.GetBytes(XML);
            byte[] returnBuffer = wc.UploadData(url, buffer);

            string returnString = Encoding.UTF8.GetString(returnBuffer);

            XmlDocument document = new XmlDocument();
            document.LoadXml(returnString);
            XmlNodeList nodeList = document.SelectNodes("//row");

                OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("GelenSMS.accdb"));
                con.Open();
            foreach (XmlNode item in nodeList)
             {
                string id = item.SelectSingleNode("//id").InnerText;
                string msgDate = item.SelectSingleNode("//msgdate").InnerText;
                string msgbody = item.SelectSingleNode("//msgbody").InnerText;
                string gsmno = item.SelectSingleNode("//gsmno").InnerText;
                string status = item.SelectSingleNode("//status").InnerText;

                string kaydet = "insert into GelenSMS (id,msgDate,msgbody,gsmno,status) values('" + id + "','" + msgDate + "','" + msgbody + "','" + gsmno + "','" + status + "')";

                OleDbCommand cmdsay = new OleDbCommand(kaydet, con);

                cmdsay.ExecuteNonQuery();

                cmdsay.Dispose();  

            } 

        con.Close();

        }
 
hocam bizim çalışmamız var. olayı toparlarmısın sen sms mi göndermek yoksa bu numaraya gelen sms leri db ne aktarmak mı istiyorsun? Anladığım 2. seçenek. Ancak bu apilerde hiç bir zaman sorun olmaz demek gereksede bu sms şirketlerinin yüzlerce müşterisi olduğundan denek sayısı fazla ve hata şansı sıfıra yakındır. Sıkıntı senin kodlarından tabi apiyi testetmek istiyorsan nodeList i rahatlıkla dışarı xml olarak aktarıp verilere bakabilirsin. He orada her satırda aynı kayıt geliyorsa firmanla görüş sonuçta hepsi insan yapımı.
 
Hocam ben bu sms işi ile uğraştım ama bu yolla değil. Telefonu bilgisayara bağlayarak bilgisayar aracılığıyla mesaj gönderimi yaptım
 
togius' Alıntı:
hocam bizim çalışmamız var. olayı toparlarmısın sen sms mi göndermek yoksa bu numaraya gelen sms leri db ne aktarmak mı istiyorsun? Anladığım 2. seçenek. Ancak bu apilerde hiç bir zaman sorun olmaz demek gereksede bu sms şirketlerinin yüzlerce müşterisi olduğundan denek sayısı fazla ve hata şansı sıfıra yakındır. Sıkıntı senin kodlarından tabi apiyi testetmek istiyorsan nodeList i rahatlıkla dışarı xml olarak aktarıp verilere bakabilirsin. He orada her satırda aynı kayıt geliyorsa firmanla görüş sonuçta hepsi insan yapımı.


Hocam doğru anlamışsınız. Amacım Sanal numaraya gelen sms'leri db'e kaydetmek.
Firma ile iletişime geçtim. basit bir program üzerinden sorunu açıkladım ve bu seferde kodları değiştirdiler. XML'le daha önce hiç çalışmadığım için sisteme bağlamaya çalıştım fakat bu seferde vt'na "System.Xml.XPathNodeList" olarak kaydediyor.


İlk Kodlar:
Kod:
      if (!IsPostBack)
        {
            WebClient wc = new WebClient();
            string url = "http://api.smcollector.com/xmlapi.aspx";
            string XML = "<SMCollectorMain>";
            XML += " <UserName>----</UserName> ";
            XML += " <PassWord>-----</PassWord> ";
            XML += " <Action>0</Action> ";
            XML += " <List>ALL</List> ";
            XML += " </SMCollectorMain> ";

            byte[] buffer = Encoding.UTF8.GetBytes(XML);
            byte[] returnBuffer = wc.UploadData(url, buffer);

            string returnString = Encoding.UTF8.GetString(returnBuffer);

            XmlDocument document = new XmlDocument();
            document.LoadXml(returnString);
            XmlNodeList nodeList = document.SelectNodes("//row");

                OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("GelenSMS.accdb"));
                con.Open();
            foreach (XmlNode item in nodeList)
             {
                string id = item.SelectSingleNode("//id").InnerText;
                string msgDate = item.SelectSingleNode("//msgdate").InnerText;
                string msgbody = item.SelectSingleNode("//msgbody").InnerText;
                string gsmno = item.SelectSingleNode("//gsmno").InnerText;
                string status = item.SelectSingleNode("//status").InnerText;

                string kaydet = "insert into GelenSMS (id,msgDate,msgbody,gsmno,status) values('" + id + "','" + msgDate + "','" + msgbody + "','" + gsmno + "','" + status + "')";
                OleDbCommand cmdsay = new OleDbCommand(kaydet, con);
                cmdsay.ExecuteNonQuery();
                cmdsay.Dispose();  
            } 
        con.Close();
        }

Firmanın Sonradan Gönderdiği Kodlar:
Kod:
if (returnString.Substring(0, 3) != "err" && returnString!= "ok 08")
{
       StringReader strread = new StringReader(returnString);
       XmlDocument xmldoc = new XmlDocument();
       xmldoc.Load(strread);

       XmlNodeList ID = xmldoc.SelectNodes("/resultset/row/id");
       XmlNodeList MSGDATE = xmldoc.SelectNodes("/resultset/row/msgdate");
       XmlNodeList MSGBODY = xmldoc.SelectNodes("/resultset/row/msgbody");
       XmlNodeList GSMNO = xmldoc.SelectNodes("/resultset/row/gsmno");
       XmlNodeList STATUS = xmldoc.SelectNodes("/resultset/row/status");

       for (int i = 0; i < ID.Count; i++)
       {
ID.Item(i).InnerText.ToString();
MSGDATE.Item(i).InnerText.ToString();
MSGBODY.Item(i).InnerText.ToString();
GSMNO.Item(i).InnerText.ToString();
STATUS.Item(i).InnerText.ToString();
       }
}
 
vlk4n' Alıntı:
Hocam ben bu sms işi ile uğraştım ama bu yolla değil. Telefonu bilgisayara bağlayarak bilgisayar aracılığıyla mesaj gönderimi yaptım

Sayın hocam hangi dili kullandınız? ve çalışmanızı paylaşmanız mümkün mü?
 
ulutas55 hocam c# yazmışsın en güzeli. firmanın gönderdiği kodlar hala mı çalışmıyor?
 
togius' Alıntı:
ulutas55 hocam c# yazmışsın en güzeli. firmanın gönderdiği kodlar hala mı çalışmıyor?

hocam, eski kodları firmanın gönderdiği yeni kodlarla değiştirdim ama vt'na System.Xml.XPathNodeList olarak kaydediyor.
bişeylerde hata yapıyorum ama beliki de gözümün önündeki kodları göremiyorumdur.


Sabahın 06:50 sinden şuana kadar ( ki 22:00'da çıkacağım) okuldayım ve artık kod gördükçe midem bulanmaya başladı.
 
@togius hocam sorun çözümlendi. İlgin için teşekkürler.

@vlk4n hocam yaptığın çalışma ile ilgili bilgi verebilirmisin? Bu yöntem biraz pahalıya geliyor. ikinci çalışma olarak bilgisayara bağlı cep telden mesaj gönderme olayına bakacağız. sakıncası yoksa paylaşırsan memnun olurum. :wink:
 
ulutas55 hocam senin aldığın hizmetin fiyatlarını yüksek diye duydum biz şuan sadece göndermek ile uğraşıyoruz. Sakıncası yoksa aldığın hizmetin fiyatını buraya veya pm olarak yazabilir misin?

@vlk4n hocam sende senin sistemi biraz anlatırsan seviniriz.
 
togius' Alıntı:
ulutas55 hocam senin aldığın hizmetin fiyatlarını yüksek diye duydum biz şuan sadece göndermek ile uğraşıyoruz. Sakıncası yoksa aldığın hizmetin fiyatını buraya veya pm olarak yazabilir misin?

hocam özetle; ekstra hiçbir ücret ödemeden ulaşan mesaj başı 11 kuruş. O da ayda bir faturalandırılıyor. Taahhüt yok.
 
BBNET
Geri
Üst