[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
通訊協定是 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 架起來就可以了
kmsgid= 簡訊發送編號 (請以此編號核對發送結果)
dstaddr= 接收門號
dlvtime= 電信系統發出時間
donetime= 手機用戶端回報狀態時間(包含成功發送,無法投遞….等狀態)
或者直接調用 Web Service 來查詢 kmsgid,不過訊息似乎沒有response來得詳細
程式碼如下,
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