Пример #1
0
        private string ProcessMessageEvent(isRock.LineBot.Message eventMessage, isRock.LineBot.LineUserInfo userInfo)
        {
            string message = string.Empty;

            // reply message

            switch (eventMessage.type.ToLower())
            {
            case "text":
                message = $"{userInfo.displayName} 說: " + eventMessage.text;
                break;

            case "location":
                message = $"{userInfo.displayName} 指定的地址: 經度 {eventMessage.latitude} 緯度 {eventMessage.longitude}";
                break;

            case "sticker":
                message = $"{userInfo.displayName} 貼圖: Package {eventMessage.packageId} Id{eventMessage.stickerId}";
                break;

            case "image":
                string path     = _hostingEnvironment.ContentRootPath + @"\Temp\";
                var    filename = Guid.NewGuid().ToString() + ".jpg";
                var    filebody = isRock.LineBot.Utility.GetUserUploadedContent(eventMessage.id, token);
                System.IO.File.WriteAllBytes(path + filename, filebody);
                var fileurl = $"{Request.Scheme}://{Request.Host}/temp/{filename}";
                message = $"圖片已經上傳主機,下載網址:\n{fileurl}";
                break;

            default:
                message = "您傳送的型態尚未支援";
                break;
            }

            return(message);
        }
Пример #2
0
        public ActionResult Simple()
        {
            try
            {
                string json;
                using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
                {
                    json = reader.ReadToEndAsync().Result;
                }
                // Verify Channel Secret
                var signature = Request.Headers["X-Line-Signature"];
                var hashvalue = GetHash(json, channelSecret);
                if (signature != hashvalue)
                {
                    var adminbot = new isRock.LineBot.Bot(token);
                    adminbot.PushMessage(adminId, $"Signature is wrong: {signature}, {hashvalue}");
                    return(Ok());
                }

                var receivedMessage = isRock.LineBot.Utility.Parsing(json);

                var bot = new isRock.LineBot.Bot(token);

                var    eventObject = receivedMessage.events[0];
                string message     = string.Empty;

                switch (eventObject.type.ToLower())
                {
                case "message":
                    var eventMessage = receivedMessage.events[0].message;
                    if (string.Equals(eventMessage.text, "bye", StringComparison.OrdinalIgnoreCase))
                    {
                        if (eventObject.source.type.ToLower() == "room")
                        {
                            isRock.LineBot.Utility.LeaveRoom(eventObject.source.roomId, token);
                        }
                        if (eventObject.source.type.ToLower() == "group")
                        {
                            isRock.LineBot.Utility.LeaveGroup(eventObject.source.groupId, token);
                        }
                        bot.PushMessage(adminId, "Bot had been kick of room/group");
                    }
                    else
                    {
                        isRock.LineBot.LineUserInfo userInfo = null;
                        if (eventObject.source.type.ToLower() == "room")
                        {
                            userInfo = isRock.LineBot.Utility.GetRoomMemberProfile(eventObject.source.roomId, eventObject.source.userId, token);
                        }
                        else if (eventObject.source.type.ToLower() == "group")
                        {
                            userInfo = isRock.LineBot.Utility.GetGroupMemberProfile(eventObject.source.groupId, eventObject.source.userId, token);
                        }
                        else
                        {
                            userInfo = bot.GetUserInfo(eventObject.source.userId);
                        }
                        message = ProcessMessageEvent(eventMessage, userInfo);
                        // 回覆用戶
                        bot.ReplyMessage(eventObject.replyToken, message);
                    }
                    break;

                case "follow":
                    message = "Line bot 被加入好友";
                    bot.PushMessage(adminId, message);
                    break;

                case "unfollow":
                    message = "Line bot 被封鎖";
                    bot.PushMessage(adminId, message);
                    break;

                case "join":
                    var sourceId = eventObject.source.type.ToLower() == "room" ? eventObject.source.roomId : eventObject.source.groupId;
                    message = $"Line bot 被加入 {eventObject.source.type} 中, id: {sourceId}";
                    bot.ReplyMessage(eventObject.replyToken, message);
                    bot.PushMessage(adminId, message);
                    break;

                case "leave":
                    message = "Line bot 離開聊天室";
                    bot.PushMessage(adminId, message);
                    break;

                case "postback":
                    // 抓取 postback 的 data 屬性
                    var postdata = eventObject.postback.data;
                    // parsing data
                    var data = System.Web.HttpUtility.ParseQueryString(postdata);
                    message = "收到 postback:\n";
                    foreach (var item in data.AllKeys)
                    {
                        message += $" key: {item}, value: {data[item]}";
                    }
                    bot.ReplyMessage(eventObject.replyToken, message);
                    break;
                }

                return(Ok());
            }
            catch (Exception ex)
            {
                // 如果有錯誤, PUSH 給 ADMIN
                var bot = new isRock.LineBot.Bot(token);
                bot.PushMessage(adminId, "Exception : \n" + ex.Message);
                return(Ok());
            }
        }