2016年12月24日 星期六

LineBot Messaging API 主動傳訊息給使用者

LineBot API不知道後續會不會再改版,我只經歷過上一個版本,跟目前這個版本,不知道還有沒有更前面的版本,最近這次改版更動蠻大的,以後不知道還不會有,所以在這裡先記錄下來。

如果有需要看官方舊版的文件的話,網址在這:
舊版API文件:https://developers.line.me/bot-api/overview

新版的在這:
新版API文件:https://developers.line.me/messaging-api/overview


這篇只是單純的把想要推播的訊息推送給對方,單純只推送訊息就不用用到Webhook去接收使用者回傳得訊息,所以這程式也不用放到Server端在本機就能測試,但前提是要知道對方的使用者ID。


Http request
POST https://api.line.me/v2/bot/message/push

Request headers
Content-Type :application/json
Authorization :Bearer {Channel Access Token}

Request body
to : ID (字串格式)
messages :message 物件

message 物件
文字類別:
type : text (字串)
text  : 要傳送的訊息(字串,最多2000字)


目前可以推播的訊息種類有8種,這邊就以推播純文字的方式來示範

建立LineMessagingService及設定一些上面敘述所要發送的資料,

using System.Net.Http;
using System.Net.Http.Headers;
using System.Net;
using System.Threading.Tasks;

namespace SevenDollarsLineBot.Utility
{
    public class LineMessagingService
    {
        HttpClient Client = new HttpClient();

        public LineMessagingService(string ChannelAccessToken)
        {
            Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            Client.DefaultRequestHeaders.Add("Authorization", $"Bearer {ChannelAccessToken}");
        }

        public async Task<HttpStatusCode> PushMessage(string ID, string s)
        {
            try
            {
                var PostResult = await Client.PostAsJsonAsync("https://api.line.me/v2/bot/message/push",
                   new
                   {
                       to = ID,
                       messages = new[]
                           {
                            new {
                                type="text",
                                text =s,
                            }
                           }
                   });

                return PostResult.StatusCode;
            }
            catch
            {
                return HttpStatusCode.BadRequest;
            }
        }
    }
}


Controller部分


using SevenDollarsLineBot.Utility;
using System.Threading.Tasks;
using System.Web.Http;

namespace SevenDollarsLineBot.Controllers
{
    public class ChatController : ApiController
    {
        //Line開發者頁面裡面的Basic information頁面找的到 ChannelAccessToken
        string ChannelAccessToken = "YourChannelAccessToken";

        /// <summary>
        /// 推播訊息給使用者
        /// </summary>
        /// <param name="ID">使用者ID</param>
        /// <param name="s">要說的話</param>
        /// <returns></returns>
        public async Task<IHttpActionResult> Get(string id = "", string s = "")
        {
            LineMessagingService Service = new LineMessagingService(ChannelAccessToken);

            var HttpStatusCode = await Service.PushMessage(id, s);

            return Content(HttpStatusCode, HttpStatusCode);

        }
    }
}


Postman 發送測試,注意網址參數及右下角訊息

點選Send後,右下角馬上跳出電腦版的Line訊息


電腦版Line訊息框


手機版也有出現訊息



除了Line 以外還有很多大公司也有在做這部分,不知道以後會發展到怎樣,如果你有好的想法去應用在這上面,可以去參加Line官方的比賽,以下是官方的訊息:

開發更多活用Messaging API特性的帳號,是LINE目前的目標。
我們將提供最多1,000萬日圓的獎金給冠軍。
衷心期待各位擁有高超技術及想法的朋友踴躍參加。

最後希望大家都能開發出自己喜歡的機器人。

2016年12月19日 星期一

SSL For Free 申請有Https憑證的網址 IIS


Htpps維基介紹

超文字傳輸安全協定(英語:Hypertext Transfer Protocol Secure,縮寫:HTTPS,也被稱為HTTP over TLS,HTTP over SSL或HTTP Secure)是一種網路安全傳輸協議。在計算機網路上,HTTPS經由超文字傳輸協定進行通訊,但利用SSL/TLS來對封包進行加密。HTTPS開發的主要目的,是提供對網路伺服器的身分認證,保護交換資料的隱私與完整性。這個協議由網景公司(Netscape)在1994年首次提出,隨後擴展到網際網路上。
HTTPS連線經常被用於全球資訊網上的交易支付和企業訊息系統中敏感訊息的傳輸。HTTPS不應與在 RFC 2660 中定義的安全超文字傳輸協定(S-HTTP)相混淆。


SSL For Free

目前網路上免費的憑證很多,試用過很多個,就這個最簡單好用。
憑證的有效期限從申請的時間開始算,有三個月的使用期限,如果申請完的時候有登入帳號密碼,快到期的時候會通知你更換憑證。


申請教學

申請網址:https://www.sslforfree.com/

輸入你的網址後點選Create Free SSL Certificate


2016年12月14日 星期三

文字轉語音 ResponsiveVoice.JS 類似Google小姐語音功能

常常看到有人在玩Google小姐的翻譯系統,
我本來也想用程式來跑看看,
但是發現好像前陣子Google已經更改過API,
要使用它好像沒有那麼容易了,
後來在網路上看到有ResponsiveVoice.JS這玩意兒,
就來試試看它了,
只是這個沒有翻譯的功能,
純粹只是能把你打文字轉成聲音而已。

2016年12月10日 星期六

自動對映類別的利器 AutoMapper v5.2.0

新版AutoMapper已經更新一段時間了,因為在舊專案比較不會因為更新了新版,而去大幅修改原有的專案,所以一直沒在使用它,
最近有點時間所以就來試用看看。



圖片原始網址:https://lostechies.com/jimmybogard/2016/06/24/automapper-5-0-speed-increases/

新版跟舊版的寫法上有不少的差異,速度也優化了不少。


2016年12月9日 星期五