[廣告] 簡訊王發送簡訊功能

  • 3734
  • 0
  • C#
  • 2014-03-19

摘要:[廣告] 簡訊王發送

這是一篇廣告文,非喜勿入。

 

應好友之邀 , 恰好公司未來有可能需要發送簡訊的功能,因此有了這篇文章的誕生。

目前有越來越多的網站會使用兩步驟驗證。

所謂的兩步驟驗證,就是當使用者躍登入系統(或操作重要功能時)在輸入帳密後,

會將系統隨機產生的驗證碼傳送到使用者註冊時所填入的Email 或是行動電話。

 

首先,我們至少需要兩個功能:

1. 產生認證碼 (GenerateAuthCode);

2. 寄送認證碼 (SendAuthCode)

然後,根據簡訊王API的說明文件:

我們必須要將資料以GET的方式傳送到指定的網址
因此,我們需要第三個功能:

3. 產生網址 (CreateUri)

 

在此,僅針對產生網址 跟 寄送認證碼兩個函數做說明。

根據簡訊王API的說明文件,寄送單一簡訊建議使用 kotsmsapi-1.php 

使用參數包括需要

  1.  登入簡訊王所使用的會員名稱 (username)
  2.  登入簡訊王所使用的密碼 (password)
  3.  對方的手機門號 (dstaddr)
  4.  簡訊內容(smbody)

而簡訊內容應該使用Big5編碼並進行 Url編碼

因此 產生Uri的程式碼如下:

        private string CreateUri(string phoneNumber, string content)
        {
            var srcEncoding = Encoding.UTF8;
            var dstEncoding = Encoding.GetEncoding(950);
            var source = srcEncoding.GetBytes(plainContent);
            var converted = Encoding.Convert(srcEncoding, dstEncoding, source);
            var encryptedContent = HttpUtility.UrlEncode(converted);
            var UriFormattedString = "{0}?username={1}&password={2}&dstaddr={3}&smbody={4}";
            return string.Format(UriFormattedString, ApiServer, UserName, Password, phoneNumber, encryptedContent );
        }

產生完 Uri 之後,就可以發送簡訊了。

發送簡訊的程式碼參考如下:

        private string SendAuthCode(string uri)
        {
            var responseString = string.Empty;
            HttpWebRequest request = WebRequest.CreateHttp(uri);
            request.Method = "Get";
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                using (Stream stream = response.GetResponseStream())
                {
                    responseString = new StreamReader(stream).ReadToEnd();
                }
            }
            return responseString;
        }

發送簡訊之後如果成功會得到大於0的整數 代表簡訊編號,可做後續處理用;若是小於0代表有錯誤發生。

PS 1: 加入簡訊王會員之後,即可取得API說明文件

PS 2: 目前加入簡訊王會員可獲得20點供測試使用。