[C#.NET][SMS] 調用 簡訊王 Web Service 發送單向簡訊

  • 7009
  • 0
  • SMS
  • 2015-12-29

[C#.NET][SMS] 調用 簡訊王 Web Service 發送單向簡訊

開始之前請先向簡訊王申請帳號,申請時需要手機門號,若該門號為第一次申請,可得到 20 點,若沒有點數就跟客服聯繫

http://www.kotsms.com.tw/index.php?selectpage=MembersReg&step=viewrules

 

有了帳號之後,手冊就很重要

http://www.kotsms.com.tw/index.php?selectpage=pagenews&kind=4&viewnum=238

 

image

 

通訊協定是 HttpGet,這就表示可以直接在 Browser 的網址列發送簡訊,透過 Query String 把參數帶進去,

其中,簡訊的內容(smbody)必需要透過 UrlEncode 處理,目前只支援 Big5?

Browser 網址列輸入中文內容,將會收到亂碼

 

用程式碼調用該 API,很直覺的的敲了以下程式碼,這裡要手動引用 System.Web 參考,程式碼相當容易,沒有太大的困難


private void SendMessage()
{
    WebClient client = new WebClient();

    var url = string.Format("http://202.39.48.216/kotsmsapi-1.php?username={0}&password={1}&dstaddr={2}&smbody={3}",
       "帳號",
       "密碼",
       "手機",
       HttpUtility.UrlEncode("測試", Encoding.GetEncoding(950))
       );
    var result = client.DownloadString(url);
    MessageBox.Show(result);
}

 

很好,果然順利收到簡訊,上述程式碼回傳 kmsgid=81802022,81802022 代表簡訊細節,可以透過 response 這個屬性指定接收網址,用來接收詳細訊息,這是一種非同步的架構,發送跟接收不在同一條線上。

不過這也表示還要架一台 Server 來接收訊息,簡訊王已經提供了 Query String 的組合完成,並將內容存成文字檔,只要把 Server 架起來就可以了

image

kmsgid= 簡訊發送編號 (請以此編號核對發送結果)

dstaddr= 接收門號

dlvtime= 電信系統發出時間

donetime= 手機用戶端回報狀態時間(包含成功發送,無法投遞….等狀態)

 

或者直接調用 Web Service 來查詢 kmsgid,不過訊息似乎沒有response來得詳細

image

 

程式碼如下,


private string GetInfomation(string id)
{
    WebClient client = new WebClient();
    var url = string.Format("http://mail2sms.com.tw/msgstatus.php?username={0}&password={1}&kmsgid={2}",
      "帳號",
      "密碼",
      id
      );
    var result = client.DownloadString(url);
    return result;
}


 

文章出自:http://www.dotblogs.com.tw/yc421206/archive/2014/03/03/144206.aspx

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo