先在 Line Develop 裡面創建一個機器人

使用 Messaging API :
https://developers.line.me/en/docs/messaging-api/overview/
在這裡,Line Bot 使用 Json來傳遞資訊 :
https://developers.line.me/en/docs/messaging-api/reference/
故伺服器只是負責接收資料,轉成 Model,組出回傳訊息的 Json,然後利用 WebClinet 將資料丟到 Line 的伺服器處理,回傳訊息給使用者。
1.接收資料
在 Web Api 使用 Request.Content.ReadAsStringAsync().Result 取得資料
string postData = Request.Content.ReadAsStringAsync().Result;
2.轉成 Model
取得資料後,可以利用 JsonConvert 將資料轉換成 Model
var receivedMessage = JsonConvert.DeserializeObject<LineReceivedMessage>(postData);
目前可能會用到的資訊
string userid = receivedMessage.events[0].source.userId; //使用者 ID string message = receivedMessage.events[0].message.text; //文字訊息 var replyToken = receivedMessage.events[0].replyToken; //回傳的 token
Model 樣式 (部分功能而已,並不完整)
        public class LineReceivedMessage
        {
            public List<Event> events;
            public LineReceivedMessage()
            {
                events = new List<Event>();
            }
        }
        public class Event
        {
            public string type { get; set; }
            public Source source { get; set; }
            public EventMessage message { get; set; }
            public string replyToken { get; set; }
            public Event()
            {
                source = new Source();
                message = new EventMessage();
            }
        }
        public class Source
        {
            public string userId { get; set; }
        }
        public class EventMessage
        {
            public string id { get; set; }
            public string type { get; set; }
            public string text { get; set; }
        }
3.回傳的資料,這邊直接使用匿名型別處理,然後才轉成 Json
var replyMessage = new
{
    replyToken = replyToken,
    messages = new object[] { new {
    type = "text",
    text = message
    }
    }
};
將資料轉成 Json 然後用 WebClient 傳給 Line Bot 的伺服器處理 :
string s = JsonConvert.SerializeObject(replyMessage); byte[] bytes = Encoding.UTF8.GetBytes(s);
4.使用 WebClient 發送訊息
WebClient webClient = new WebClient();
webClient.Headers.Clear();
webClient.Headers.Add("Content-Type", "application/json");
webClient.Headers.Add("Authorization", "Bearer " + channelAccessToken);
webClient.UploadData("https://api.line.me/v2/bot/message/reply", bytes);
功能完成後,使用者說啥,他就會回復相同訊息(限文字) :

完整程式碼 :
public void PostReplyMessage(){
            var channelAccessToken = "{Cannel Access Token}";
            var postData = Request.Content.ReadAsStringAsync().Result;
            var receivedMessage = JsonConvert.DeserializeObject<LineReceivedMessage>(postData);
            string userid = receivedMessage.events[0].source.userId;
            string message = receivedMessage.events[0].message.text;
            var replyToken = receivedMessage.events[0].replyToken;
            var replyMessage = new
            {
                replyToken = replyToken,
                messages = new object[] { new {
                    type = "text",
                    text = message
                }
                }
            };
            string s = JsonConvert.SerializeObject(replyMessage);
            byte[] bytes = Encoding.UTF8.GetBytes(s);
            WebClient webClient = new WebClient();
            webClient.Headers.Clear();
            webClient.Headers.Add("Content-Type", "application/json");
            webClient.Headers.Add("Authorization", "Bearer " + channelAccessToken);
            webClient.UploadData("https://api.line.me/v2/bot/message/reply", bytes);
}
			