Esempio n. 1
0
        public IHttpActionResult POST()
        {
            try
            {
                //設定ChannelAccessToken(或抓取Web.Config)
                this.ChannelAccessToken = channelAccessToken;
                //取得Line Event(範例,只取第一個)
                var LineEvent = this.ReceivedMessage.events.FirstOrDefault();
                //配合Line verify
                if (LineEvent.replyToken == "00000000000000000000000000000000")
                {
                    return(Ok());
                }
                //回覆訊息
                if (LineEvent.type == "message")
                {
                    var repmsg = "123";
                    if (LineEvent.message.type == "text") //收到文字
                    {
                        //建立 MsQnAMaker Client
                        var helper = new isRock.MsQnAMaker.Client(
                            new Uri("https://aciqna.azurewebsites.net/qnamaker/knowledgebases/c1248730-e6d8-4af5-a695-8f4c0d203f40/generateAnswer"),
                            "5708f51f-8717-4856-b6d2-f32fdf3b4b69");
                        var QnAResponse = helper.GetResponse(LineEvent.message.text.Trim());
                        var ret         = (from c in QnAResponse.answers
                                           orderby c.score descending
                                           select c
                                           ).Take(1);

                        var responseText = UnknowAnswer;
                        //取得用戶資訊
                        var UserId             = ReceivedMessage.events.FirstOrDefault().source.userId;
                        isRock.LineBot.Bot bot = new
                                                 isRock.LineBot.Bot(ChannelAccessToken);
                        var UserInfo = bot.GetUserInfo(UserId); if (LineEvent.type == "message")
                        {
                            if (ret.FirstOrDefault().score > 0)
                            {
                                responseText = ret.FirstOrDefault().answer;
                            }
                        }
                        //回覆
                        this.ReplyMessage(LineEvent.replyToken, responseText);
                    }
                    if (LineEvent.message.type == "sticker") //收到貼圖
                    {
                        this.ReplyMessage(LineEvent.replyToken, 1, 2);
                    }
                }
                //response OK
                return(Ok());
            }
            catch (Exception ex)
            {
                //如果發生錯誤,傳訊息給Admin
                this.PushMessage(AdminUserId, "發生錯誤:\n" + ex.Message);
                //response OK
                return(Ok());
            }
        }
Esempio n. 2
0
        public IHttpActionResult POST()
        {
            try
            {
                //設定ChannelAccessToken(或抓取Web.Config)
                this.ChannelAccessToken = channelAccessToken;
                //取得Line Event(範例,只取第一個)
                var LineEvent = this.ReceivedMessage.events.FirstOrDefault();
                //配合Line verify
                if (LineEvent.replyToken == "00000000000000000000000000000000")
                {
                    return(Ok());
                }
                //回覆訊息
                isRock.LineBot.Bot bot    = new isRock.LineBot.Bot(ChannelAccessToken);
                string             Lineid = ReceivedMessage.events.FirstOrDefault().source.userId;
                var Userinfo = bot.GetUserInfo(Lineid);
                if (LineEvent.type == "follow")
                {
                    this.ReplyMessage(LineEvent.replyToken, $"{Userinfo.displayName} 您好,\n謝謝您加我為好友!! 我可以回覆您任何問題!!");
                }
                if (LineEvent.type == "message")
                {
                    if (LineEvent.message.type == "text") //收到文字
                    {
                        //建立 MsQnAMaker Client
                        var helper = new isRock.MsQnAMaker.Client(
                            new Uri(Endpoint), QnAKey);
                        var QnAResponse = helper.GetResponse(LineEvent.message.text.Trim());
                        var ret         = (from c in QnAResponse.answers
                                           orderby c.score descending
                                           select c
                                           ).Take(1);

                        var responseText = UnknowAnswer;
                        if (ret.FirstOrDefault().score > 0)
                        {
                            responseText = ret.FirstOrDefault().answer;
                        }

                        //回覆
                        this.ReplyMessage(LineEvent.replyToken, responseText);
                    }
                    if (LineEvent.message.type == "sticker") //收到貼圖
                    {
                        this.ReplyMessage(LineEvent.replyToken, 1, 2);
                    }
                }
                //response OK
                return(Ok());
            }
            catch (Exception ex)
            {
                //如果發生錯誤,傳訊息給Admin
                this.PushMessage(AdminUserId, "發生錯誤:\n" + ex.Message);
                //response OK
                return(Ok());
            }
        }
Esempio n. 3
0
        public IHttpActionResult POST()
        {
            try
            {
                //設定ChannelAccessToken(或抓取Web.Config)
                this.ChannelAccessToken = channelAccessToken;
                //取得Line Event(範例,只取第一個)
                var LineEvent = this.ReceivedMessage.events.FirstOrDefault();
                //配合Line verify
                if (LineEvent.replyToken == "00000000000000000000000000000000")
                {
                    return(Ok());
                }
                //回覆訊息
                if (LineEvent.type == "message")
                {
                    var repmsg = "";
                    if (LineEvent.message.type == "text") //收到文字
                    {
                        //建立 MsQnAMaker Client
                        var helper = new isRock.MsQnAMaker.Client(
                            QnAdomain, QnAKBId, QnAKey);
                        var QnAResponse = helper.GetResponse(LineEvent.message.text.Trim());
                        var ret         = (from c in QnAResponse.answers
                                           orderby c.score descending
                                           select c
                                           ).Take(1);

                        var responseText = UnknowAnswer;
                        if (ret.FirstOrDefault().score > 0)
                        {
                            responseText = ret.FirstOrDefault().answer;
                        }
                        //回覆
                        this.ReplyMessage(LineEvent.replyToken, responseText);
                    }
                    if (LineEvent.message.type == "sticker") //收到貼圖
                    {
                        this.ReplyMessage(LineEvent.replyToken, 1, 2);
                    }
                }
                //response OK
                return(Ok());
            }
            catch (Exception ex)
            {
                //如果發生錯誤,傳訊息給Admin
                this.PushMessage(AdminUserId, "發生錯誤:\n" + ex.Message);
                //response OK
                return(Ok());
            }
        }
Esempio n. 4
0
        public IHttpActionResult POST()
        {
            try
            {
                // 設定ChannelAccessToken(或抓取Web.Config)
                this.ChannelAccessToken = channelAccessToken;
                // 取得Line Event(範例,只取第一個)
                //var LineEvent = this.ReceivedMessage.events.FirstOrDefault();
                // 取得Line Event
                foreach (var LineItem in this.ReceivedMessage.events)
                {
                    //配合Line verify
                    if (LineItem.replyToken == "00000000000000000000000000000000")
                    {
                        continue;
                    }

                    //回覆訊息
                    string responseText = string.Empty;
                    switch (LineItem.type.ToLower())
                    {
                    case "join":
                        #region Join
                        responseText = "有人把我加入" + LineItem.source.type + "中了,大家好啊~";
                        // 回覆用戶
                        this.ReplyMessage(LineItem.replyToken, responseText);
                        #endregion
                        break;

                    case "message":
                        #region Message
                        switch (LineItem.message.type.ToLower())
                        {
                        case "text":         //收到文字
                            if (LineItem.message.text == "bye")
                            {
                                // 回覆用戶
                                this.ReplyMessage(LineItem.replyToken, "bye-bye");
                                // 離開
                                if (string.Equals(LineItem.source.type, "room", StringComparison.OrdinalIgnoreCase))
                                {
                                    isRock.LineBot.Utility.LeaveRoom(LineItem.source.roomId, ChannelAccessToken);
                                }
                                if (string.Equals(LineItem.source.type, "group", StringComparison.OrdinalIgnoreCase))
                                {
                                    isRock.LineBot.Utility.LeaveGroup(LineItem.source.groupId, ChannelAccessToken);
                                }
                                break;
                            }

                            // 取得用戶名稱
                            LineUserInfo UserInfo = null;
                            if (string.Equals(LineItem.source.type, "room", StringComparison.OrdinalIgnoreCase))
                            {
                                UserInfo = isRock.LineBot.Utility.GetRoomMemberProfile(
                                    LineItem.source.roomId, LineItem.source.userId, this.ChannelAccessToken);
                            }
                            if (string.Equals(LineItem.source.type, "group", StringComparison.OrdinalIgnoreCase))
                            {
                                UserInfo = isRock.LineBot.Utility.GetGroupMemberProfile(
                                    LineItem.source.groupId, LineItem.source.userId, this.ChannelAccessToken);
                            }
                            if (string.Equals(LineItem.source.type, "user", StringComparison.OrdinalIgnoreCase))
                            {
                                UserInfo = isRock.LineBot.Utility.GetUserInfo(
                                    LineItem.source.userId, this.ChannelAccessToken);

                                if (UserInfo != null)
                                {
                                    try
                                    {
                                        using (UserService userService = new UserService())
                                        {
                                            userService.AddUser(LineItem.source.userId, UserInfo.displayName);
                                        }
                                    }
                                    catch { }
                                }
                            }

                            // 顯示用戶名稱
                            if (UserInfo != null)
                            {
                                responseText = UserInfo.displayName + "\n";
                            }

                            //建立 MsQnAMaker Client
                            var helper      = new isRock.MsQnAMaker.Client(new Uri(EndPoint), QnAKey);
                            var QnAResponse = helper.GetResponse(LineItem.message.text.Trim());
                            var ret         = (from c in QnAResponse.answers
                                               orderby c.score descending
                                               select c
                                               ).Take(1);

                            // 預設
                            responseText += UnknowAnswer;
                            if (ret.FirstOrDefault()?.score > 0)
                            {
                                responseText = ret.FirstOrDefault()?.answer;
                            }

                            //回覆
                            this.ReplyMessage(LineItem.replyToken, responseText);
                            break;

                        case "sticker":         //收到貼圖
                            this.ReplyMessage(LineItem.replyToken, 1, 2);
                            break;

                        case "image":
                            break;

                        case "video":
                            break;

                        case "audio":
                            break;

                        case "file":
                            break;

                        case "location":
                            break;
                        }
                        #endregion
                        break;

                    case "follow":
                        #region Follow
                        // 顯示用戶名稱
                        if (!string.Equals(LineItem.source.type, "user", StringComparison.OrdinalIgnoreCase))
                        {
                            LineUserInfo UserInfo = isRock.LineBot.Utility.GetUserInfo(
                                LineItem.source.userId, ChannelAccessToken);

                            if (UserInfo != null)
                            {
                                try
                                {
                                    using (UserService userService = new UserService())
                                    {
                                        userService.AddUser(LineItem.source.userId, UserInfo.displayName);
                                    }
                                }
                                catch { }
                            }
                        }
                        #endregion
                        break;

                    case "unfollow":
                        #region Unfollow
                        #endregion
                        break;

                    case "leave":
                        #region Leave
                        #endregion
                        break;

                    case "postback":
                        // 抓取postback的data
                        var postdata = LineItem.postback.data;
                        // 剖析postdata
                        var data = System.Web.HttpUtility.ParseQueryString(postdata);
                        // 準備顯示訊息
                        var msg = "哈囉,我收到您的訊息\n";     // 收到訊息
                        foreach (var item in data.AllKeys)
                        {
                            //msg += $" Key:{item} value:{data[item]}";
                            if (item == "type")
                            {
                                switch (data[item])
                                {
                                case "yes":
                                    msg += "很高興您會來我的婚禮,期待與您見面。";
                                    break;

                                case "no":
                                    msg += "很可惜您不會來我的婚禮,但還是謝謝您的祝福。";
                                    break;

                                case "thinking":
                                    msg += "很期待您會來我的婚禮,也謝謝您的祝福。";
                                    break;
                                }
                            }
                        }
                        this.ReplyMessage(LineItem.replyToken, msg);
                        break;

                    case "beacon":
                        break;

                    case "accountlink":
                        break;
                    }
                }

                //response OK
                return(Ok());
            }
            catch (Exception ex)
            {
                //如果發生錯誤,傳訊息給Admin
                this.PushMessage(AdminUserId, "發生錯誤:\n" + ex.Message);
                //response OK
                return(Ok());
            }
        }
Esempio n. 5
0
        public IHttpActionResult POST()
        {
            try
            {
                //設定ChannelAccessToken(或抓取Web.Config)
                this.ChannelAccessToken = channelAccessToken;
                //取得Line Event(範例,只取第一個)
                var LineEvent = this.ReceivedMessage.events.FirstOrDefault();
                //配合Line verify
                if (LineEvent.replyToken == "00000000000000000000000000000000")
                {
                    return(Ok());
                }

                //回覆訊息
                if (LineEvent.type == "message")
                {
                    var reply = "";
                    reply = LineEvent.message.text;

                    if (LineEvent.message.type == "text") //收到文字
                    {
                        if (reply == "嗨" || reply == "你好" || reply == "妳好" || reply == "哈囉" || reply == "哈摟" || reply == "哈嘍" || reply == "Hello" || reply == "Hi" || reply == "HELLO" || reply == "HI" || reply == "hello" || reply == "hi")
                        {
                            //建立actions,作為ButtonTemplate的用戶回覆行為
                            var actions = new List <isRock.LineBot.TemplateActionBase>();
                            actions.Add(new isRock.LineBot.PostbackActon()
                            {
                                label = "開始聊天", data = "有什麼社交上的困擾嗎?"
                            });
                            actions.Add(new isRock.LineBot.UriActon()
                            {
                                label = "瀏覽學習頁面", uri = new Uri("http://140.131.114.147/detailsView")
                            });


                            var ButtonTemplateMsg = new isRock.LineBot.ButtonsTemplate()
                            {
                                title   = "嗨!",
                                text    = "請問您要:",
                                altText = "嗨 ButtonTemplate",
                                actions = actions
                            };
                            this.PushMessage(LineEvent.source.userId, ButtonTemplateMsg);
                        }
                        else if (reply == "使用說明")
                        {
                            //建立actions,作為ButtonTemplate的用戶回覆行為
                            var actions = new List <isRock.LineBot.TemplateActionBase>();
                            actions.Add(new isRock.LineBot.PostbackActon()
                            {
                                label = "開始聊天", data = "有什麼社交上的困擾嗎?"
                            });
                            actions.Add(new isRock.LineBot.UriActon()
                            {
                                label = "瀏覽學習頁面", uri = new Uri("http://140.131.114.147/detailsView")
                            });

                            //ButtonTemplate內容
                            var ButtonTemplateMsg = new isRock.LineBot.ButtonsTemplate()
                            {
                                title   = "使用說明",
                                text    = "我們可以針對您在校園社交上的問題進行解惑(ex:要和新同學聊什麼?),或是可以瀏覽我們的學習頁面網站。",
                                altText = "使用說明 ButtonTemplate",
                                actions = actions
                            };
                            //推播ButtonTemplate給用戶
                            this.PushMessage(LineEvent.source.userId, ButtonTemplateMsg);
                        }
                        else if (reply == "關於我們")
                        {
                            //建立actions,作為ButtonTemplate的用戶回覆行為
                            var actions = new List <isRock.LineBot.TemplateActionBase>();
                            actions.Add(new isRock.LineBot.UriActon()
                            {
                                label = "查看更多", uri = new Uri("http://140.131.114.147/about")
                            });

                            var ButtonTemplateMsg = new isRock.LineBot.ButtonsTemplate()
                            {
                                title   = "關於我們",
                                text    = "您好,我們是國立臺北商業大學 資訊管理系的學生。",
                                altText = "使用說明 ButtonTemplate",
                                actions = actions
                            };
                            this.PushMessage(LineEvent.source.userId, ButtonTemplateMsg);
                        }
                        else if (reply == "學習頁面")
                        {
                            var flex = @"
                                    [
                                    {
                                        ""type"": ""flex"",
                                        ""altText"": ""Closer | Learn Web"",
                                        ""contents"":
                                    {
                                      ""type"": ""bubble"",
                                      ""header"": {
                                                    ""type"": ""box"",
                                        ""layout"": ""horizontal"",
                                        ""contents"": [
                                          {
                                            ""type"": ""text"",
                                            ""text"": ""學習頁面"",
                                            ""weight"": ""bold"",
                                            ""color"": ""#aaaaaa"",
                                            ""size"": ""sm""
                                          }
                                        ]
                                      },
                                      ""hero"": {
                                        ""type"": ""image"",
                                        ""url"": ""https://imageshack.com/a/img924/8986/kuGMSb.png"",
                                        ""size"": ""full"",
                                        ""aspectRatio"": ""20:13"",
                                        ""aspectMode"": ""cover""
                                      },
                                      ""body"": {
                                        ""type"": ""box"",
                                        ""layout"": ""horizontal"",
                                        ""spacing"": ""md"",
                                        ""contents"": [
                                          {
                                            ""type"": ""box"",
                                            ""layout"": ""vertical"",
                                            ""flex"": 1,
                                            ""contents"": [
                                              {
                                                ""type"": ""image"",
                                                ""url"": ""https://imageshack.com/a/img922/3247/oaCfJg.jpg"",
                                                ""aspectMode"": ""cover"",
                                                ""aspectRatio"": ""4:3"",
                                                ""size"": ""sm"",
                                                ""gravity"": ""bottom""
                                              },
                                              {
                                                ""type"": ""image"",
                                                ""url"": ""https://imageshack.com/a/img922/4655/RrcctW.jpg"",
                                                ""aspectMode"": ""cover"",
                                                ""aspectRatio"": ""4:3"",
                                                ""margin"": ""md"",
                                                ""size"": ""sm""
                                              }
                                            ]
                                          },
                                          {
                                            ""type"": ""box"",
                                            ""layout"": ""vertical"",
                                            ""flex"": 2,
                                            ""contents"": [
                                              {
                                                ""type"": ""text"",
                                                ""text"": ""你的敵人,可能就是你的救星。"",
                                                ""gravity"": ""top"",
                                                ""size"": ""xs"",
                                                ""flex"": 1
                                              },
                                              {
                                                ""type"": ""separator""
                                              },
                                              {
                                                ""type"": ""text"",
                                                ""text"": ""完美溝通術:技巧大有學問的9項對話技巧"",
                                                ""gravity"": ""center"",
                                                ""size"": ""xs"",
                                                ""flex"": 2
                                              },
                                              {
                                                ""type"": ""separator""
                                              },
                                              {
                                                ""type"": ""text"",
                                                ""text"": ""你是腦補王嗎?小心變成偏執狂"",
                                                ""gravity"": ""center"",
                                                ""size"": ""xs"",
                                                ""flex"": 2
                                              },
                                              {
                                                ""type"": ""separator""
                                              },
                                              {
                                                ""type"": ""text"",
                                                ""text"": ""你是團體中的絆腳石嗎?"",
                                                ""gravity"": ""bottom"",
                                                ""size"": ""xs"",
                                                ""flex"": 1
                                              }
                                            ]
                                          }
                                        ]
                                      },
                                      ""footer"": {
                                        ""type"": ""box"",
                                        ""layout"": ""horizontal"",
                                        ""contents"": [
                                          {
                                            ""type"": ""button"",
                                            ""action"": {
                                              ""type"": ""uri"",
                                              ""label"": ""更多內容"",
                                              ""uri"": ""http://140.131.114.147""
                                            }
                                          }
                                        ]
                                      }
                                    }
                                    }
                                    ]
                                    ";
                            this.PushMessagesWithJSON(LineEvent.source.userId, flex);
                        }
                        else
                        {
                            //建立 MsQnAMaker Client
                            var helper = new isRock.MsQnAMaker.Client(
                                new Uri(Endpoint), QnAKey);
                            var QnAResponse = helper.GetResponse(reply.Trim());
                            var ret         = (from c in QnAResponse.answers
                                               orderby c.score descending
                                               select c
                                               ).Take(1);

                            var responseText = UnknowAnswer;
                            if (ret.FirstOrDefault().score > 0)
                            {
                                responseText = ret.FirstOrDefault().answer;
                            }
                            //回覆
                            this.ReplyMessage(LineEvent.replyToken, responseText);
                            Module.response = reply;

                            if (responseText == UnknowAnswer)
                            {
                                var    userInfo    = this.GetUserInfo(LineEvent.source.userId);
                                string managerText = "";
                                managerText = "用戶ID : " + LineEvent.source.userId + "\n" +
                                              $"用戶名稱:{userInfo.displayName}" + "\n" +
                                              "沒有在QnA Maker的問題:" + Module.response;

                                this.PushMessage(AdminUserId, managerText);
                            }
                            else
                            {
                                //建立actions,作為ButtonTemplate的用戶回覆行為
                                var actions = new List <isRock.LineBot.TemplateActionBase>();
                                actions.Add(new isRock.LineBot.PostbackActon()
                                {
                                    label = "繼續聊天", data = "還想問些什麼呢?"
                                });
                                actions.Add(new isRock.LineBot.PostbackActon()
                                {
                                    label = "結束聊天", data = "結束"
                                });


                                var ButtonTemplateMsg = new isRock.LineBot.ButtonsTemplate()
                                {
                                    title   = "還想問些什麼嗎?",
                                    text    = "選擇:",
                                    altText = "ButtonTemplate",
                                    actions = actions
                                };
                                this.PushMessage(LineEvent.source.userId, ButtonTemplateMsg);
                            }
                        }
                    }
                    if (LineEvent.message.type == "sticker") //收到貼圖
                    {
                        this.ReplyMessage(LineEvent.replyToken, 1, 2);
                    }
                }
                if (LineEvent.type == "postback")
                {
                    var data   = LineEvent.postback.data;
                    var repmsg = "";

                    if (data == "結束")
                    {
                        //建立actions,作為ButtonTemplate的用戶回覆行為
                        var actions = new List <isRock.LineBot.TemplateActionBase>();
                        actions.Add(new isRock.LineBot.PostbackActon()
                        {
                            label = "有", data = "有幫助"
                        });
                        actions.Add(new isRock.LineBot.PostbackActon()
                        {
                            label = "沒有", data = "沒有幫助"
                        });


                        var ButtonTemplateMsg = new isRock.LineBot.ButtonsTemplate()
                        {
                            title   = "感謝您本次的提問!",
                            text    = "請問我們的回答對您有幫助嗎?",
                            altText = "結束聊天 ButtonTemplate",
                            actions = actions
                        };
                        this.PushMessage(LineEvent.source.userId, ButtonTemplateMsg);
                    }
                    else if (data == "有幫助")
                    {
                        repmsg = "感謝您本次的提問!您的回饋使我們更加進步。";
                        this.ReplyMessage(LineEvent.replyToken, repmsg);
                    }
                    else if (data == "沒有幫助")
                    {
                        var    userInfo    = this.GetUserInfo(LineEvent.source.userId);
                        string managerText = "";
                        repmsg      = "感謝您本次的提問!我們會針對這次的對談進行修正。";
                        managerText = "用戶ID : " + LineEvent.source.userId + "\n" +
                                      $"用戶名稱:{userInfo.displayName}" + "\n" +
                                      "沒有幫助的訊息:" + Module.response;

                        this.ReplyMessage(LineEvent.replyToken, repmsg);
                        this.PushMessage(AdminUserId, managerText);
                    }
                    else
                    {
                        this.ReplyMessage(LineEvent.replyToken, data);
                    }
                }
                //response OK
                return(Ok());
            }
            catch (Exception ex)
            {
                //如果發生錯誤,傳訊息給Admin
                this.PushMessage(AdminUserId, "發生錯誤:\n" + ex.Message);
                //response OK
                return(Ok());
            }
        }
Esempio n. 6
0
        public IHttpActionResult POST()
        {
            try
            {
                //設定ChannelAccessToken(或抓取Web.Config)
                this.ChannelAccessToken = channelAccessToken;
                //取得Line Event(範例,只取第一個)
                var LineEvent = this.ReceivedMessage.events.FirstOrDefault();
                //配合Line verify
                if (LineEvent.replyToken == "00000000000000000000000000000000")
                {
                    return(Ok());
                }
                //回覆訊息
                if (LineEvent.type == "message")
                {
                    var repmsg = "";
                    if (LineEvent.message.type == "text") //收到文字
                    {
                        //建立 MsQnAMaker Client
                        var helper = new isRock.MsQnAMaker.Client(
                            new Uri(QnAEndpoint), QnAKey);
                        var QnAResponse = helper.GetResponse(LineEvent.message.text.Trim());
                        var ret         = (from c in QnAResponse.answers
                                           orderby c.score descending
                                           select c
                                           ).Take(1);

                        var responseText = UnknowAnswer;
                        if (ret.FirstOrDefault().score > 0)
                        {
                            responseText = ret.FirstOrDefault().answer;
                        }
                        //回覆
                        this.ReplyMessage(LineEvent.replyToken, responseText);
                    }
                    if (LineEvent.message.type == "sticker") //收到貼圖
                    {
                        this.ReplyMessage(LineEvent.replyToken, 1, 2);
                    }

                    if (LineEvent.message.text.ToLower().Contains("template message"))
                    {
                        //define actions
                        var act1 = new isRock.LineBot.MessageAction()
                        {
                            text = "test action1", label = "test action1"
                        };
                        var act2 = new isRock.LineBot.MessageAction()
                        {
                            text = "test action2", label = "test action2"
                        };

                        var tmp = new isRock.LineBot.ButtonsTemplate()
                        {
                            text              = "Button Template text",
                            title             = "Button Template title",
                            thumbnailImageUrl = new Uri("https://i.imgur.com/wVpGCoP.png"),
                        };

                        tmp.actions.Add(act1);
                        tmp.actions.Add(act2);
                        //add TemplateMessage into responseMsgs
                        this.ReplyMessage(new isRock.LineBot.TemplateMessage(tmp));
                    }
                }
                //response OK
                return(Ok());
            }
            catch (Exception ex)
            {
                //如果發生錯誤,傳訊息給Admin
                this.PushMessage(AdminUserId, "發生錯誤:\n" + ex.Message);
                //response OK
                return(Ok());
            }
        }
Esempio n. 7
0
        public IHttpActionResult POST()
        {
            try
            {
                var NewToken = isRock.LineBot.Utility.IssueChannelAccessToken(channelShortID, channelShortSecret);

                //this.ChannelAccessToken = channelAccessToken;
                this.ChannelAccessToken = NewToken.access_token;
                //取得Line Event(範例,只取第一個)
                var LineEvent = this.ReceivedMessage.events.FirstOrDefault(); //JSON轉成物件
                //isRock.LineBot.Bot bot = new isRock.LineBot.Bot(channelAccessToken);
                //short channel
                isRock.LineBot.Bot bot = new isRock.LineBot.Bot(NewToken.access_token);

                //配合Line verify
                if (LineEvent.replyToken == "00000000000000000000000000000000")
                {
                    return(Ok());
                }
                //回覆訊息

                string lineID = ReceivedMessage.events.FirstOrDefault().source.userId; //使用者的發送資源碼
                var    userid = bot.GetUserInfo(lineID).displayName;                   //取得使用者的名稱

                #region 回復訊息 功能

                if (LineEvent.type == "message")
                {
                    if (LineEvent.message.type == "text") //收到文字
                    {
                        #region 建立主選單
                        if (LineEvent.message.text.ToLower() == "主選單")
                        {
                            //建立actions, 作為ButtonTemplate的用戶回覆行為
                            var actionMain = new List <isRock.LineBot.TemplateActionBase>();
                            actionMain.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "關於熱量", text = "關於熱量"
                            });
                            actionMain.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "代謝率計算", text = "代謝率計算"
                            });
                            actionMain.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "疾病查詢", text = "疾病查詢"
                            });
                            actionMain.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "認識毒品", text = "毒品"
                            });

                            var BtnMain = new isRock.LineBot.ButtonsTemplate();
                            {
                                BtnMain.thumbnailImageUrl = new Uri("https://scontent.ftpe8-4.fna.fbcdn.net/v/t1.0-9/42989840_279619006211005_2212480676580556800_n.jpg?_nc_cat=110&oh=827a424e40ab2efa52b280c3674ba26d&oe=5C5EFB31");
                                BtnMain.text  = "功能選單";
                                BtnMain.title = "請選擇以下功能: ";
                                //加入動作
                                BtnMain.actions = actionMain;
                            }//上面文字

                            this.ReplyMessage(LineEvent.replyToken, BtnMain);
                        }// end of 主選單 tempalte MSG
                        #endregion

                        #region 認識毒品(( 改 完成
                        else if (LineEvent.message.text.ToLower() == "毒品")
                        {
                            var actions_Drugs = new List <isRock.LineBot.TemplateActionBase>();
                            actions_Drugs.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "一級毒品", text = "一級毒品"
                            });
                            actions_Drugs.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "二級毒品", text = "二級毒品"
                            });
                            actions_Drugs.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "三級 & 四級毒品", text = "三級 & 四級毒品"
                            });

                            var BtnTemplateMsg_Drugs = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                            {
                                //----功能選擇 文字
                                BtnTemplateMsg_Drugs.thumbnailImageUrl = new Uri("https://i.screenshot.net/0gq8bx1");//照片
                                BtnTemplateMsg_Drugs.text  = "認識毒品/藥物";
                                BtnTemplateMsg_Drugs.title = "請選以下選項";
                                //add action
                                BtnTemplateMsg_Drugs.actions = actions_Drugs;
                            };
                            this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Drugs);
                        }//end if 認識毒品

                        /*
                         * 一級毒品 進度底下
                         * 所有包含類別的底下
                         * 送出對印的圖片
                         */
                        if (LineEvent.message.text.ToLower() == "一級毒品")
                        {
                            var actions_Drugs1 = new List <isRock.LineBot.TemplateActionBase>();
                            actions_Drugs1.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "古柯鹼", text = "古柯鹼"
                            });
                            actions_Drugs1.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "海洛因", text = "海洛因"
                            });
                            actions_Drugs1.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "嗎啡", text = "嗎啡"
                            });
                            actions_Drugs1.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "鴉片", text = "鴉片"
                            });


                            var BtnTemplateMsg_Drugs1 = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                            {
                                //----功能選擇 文字
                                BtnTemplateMsg_Drugs1.thumbnailImageUrl = new Uri("https://i.screenshot.net/pzertmn");//照片
                                BtnTemplateMsg_Drugs1.text  = "一級毒品";
                                BtnTemplateMsg_Drugs1.title = "包含:";
                                //add action
                                BtnTemplateMsg_Drugs1.actions = actions_Drugs1;
                            };
                            this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Drugs1);
                        }//進入一級毒品底下

                        if (LineEvent.message.text.ToLower() == "古柯鹼" || LineEvent.message.text.ToLower() == "海洛因" || LineEvent.message.text.ToLower() == "嗎啡" || LineEvent.message.text.ToLower() == "鴉片")
                        {
                            if (LineEvent.message.text == "古柯鹼")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-4.fna.fbcdn.net/v/t1.0-9/44512417_289710488535190_8327672820775518208_n.jpg?_nc_cat=107&_nc_ht=scontent.ftpe7-4.fna&oh=43592844c9d185eb089863932dc00d8b&oe=5C4B9525"));
                            }
                            if (LineEvent.message.text == "海洛因")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-1.fna.fbcdn.net/v/t1.0-9/44543147_289710641868508_8472298113527185408_n.jpg?_nc_cat=110&_nc_ht=scontent.ftpe7-1.fna&oh=b35547ec597bed827be370b523a1099d&oe=5C3D6DF3"));
                            }
                            if (LineEvent.message.text == "嗎啡")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-2.fna.fbcdn.net/v/t1.0-9/44755107_289710495201856_2598789976715952128_n.jpg?_nc_cat=109&_nc_ht=scontent.ftpe7-2.fna&oh=d354ec18b75fa7413966149b0647c441&oe=5C4EBED9"));
                            }
                            if (LineEvent.message.text == "鴉片")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-1.fna.fbcdn.net/v/t1.0-9/44474645_289710588535180_2885157204644593664_n.jpg?_nc_cat=110&_nc_ht=scontent.ftpe7-1.fna&oh=778233fa67c2d19d5181956a3442ff4b&oe=5C55C2B4"));
                            }
                        }//LineEvent.message.text.ToLower() == "古柯鹼" || LineEvent.message.text.ToLower() == "海洛因" || LineEvent.message.text.ToLower() == "嗎啡" || LineEvent.message.text.ToLower() == "鴉片"


                        //二類
                        if (LineEvent.message.text.ToLower() == "二級毒品")
                        {
                            var actions_Drugs2 = new List <isRock.LineBot.TemplateActionBase>();
                            actions_Drugs2.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "大麻", text = "大麻"
                            });
                            actions_Drugs2.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "安非他命", text = "安非他命"
                            });
                            actions_Drugs2.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "搖頭丸", text = "搖頭丸"
                            });
                            actions_Drugs2.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "魔菇", text = "魔菇"
                            });


                            var BtnTemplateMsg_Drugs2 = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                            {
                                //----功能選擇 文字
                                BtnTemplateMsg_Drugs2.thumbnailImageUrl = new Uri("https://i.screenshot.net/pzertmn");//照片
                                BtnTemplateMsg_Drugs2.text  = "二級毒品";
                                BtnTemplateMsg_Drugs2.title = "包含:";
                                //add action
                                BtnTemplateMsg_Drugs2.actions = actions_Drugs2;
                            };

                            this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Drugs2);
                        }//end if 2

                        if (LineEvent.message.text.ToLower() == "大麻" || LineEvent.message.text.ToLower() == "安非他命" || LineEvent.message.text.ToLower() == "搖頭丸" || LineEvent.message.text.ToLower() == "魔菇")
                        {
                            if (LineEvent.message.text == "大麻")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-4.fna.fbcdn.net/v/t1.0-9/44532974_289710661868506_723348900114595840_n.jpg?_nc_cat=105&_nc_ht=scontent.ftpe7-4.fna&oh=d31afb7b26f0ed3f6d4be0b35c9cbb1b&oe=5C40D05B"));
                            }
                            if (LineEvent.message.text == "安非他命")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-3.fna.fbcdn.net/v/t1.0-9/44600272_289710511868521_4920973721583222784_n.jpg?_nc_cat=102&_nc_ht=scontent.ftpe7-3.fna&oh=21dd7ae8d74629f896e4134968959fdf&oe=5C8AC861"));
                            }
                            if (LineEvent.message.text == "搖頭丸")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-2.fna.fbcdn.net/v/t1.0-9/44442011_289710581868514_2693626711492263936_n.jpg?_nc_cat=109&_nc_ht=scontent.ftpe7-2.fna&oh=c81b10c33dd39dfe150b707052de1c0d&oe=5C478727"));
                            }
                            if (LineEvent.message.text == "魔菇")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-2.fna.fbcdn.net/v/t1.0-9/44468789_289710571868515_1123661202384224256_n.jpg?_nc_cat=109&_nc_ht=scontent.ftpe7-2.fna&oh=63136c2f2a7f2f7cbb2dd68f27e95bb7&oe=5C499DC6"));
                            }
                        }

                        //三類&四類
                        if (LineEvent.message.text.ToLower() == "三級 & 四級毒品")
                        {
                            var actions_Drugs34 = new List <isRock.LineBot.TemplateActionBase>();
                            actions_Drugs34.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "3級 K他命(氯胺酮)", text = "愷他命"
                            });
                            actions_Drugs34.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "3級 FM2", text = "強暴丸"
                            });
                            actions_Drugs34.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "4級 蝴蝶片", text = "蝴蝶片"
                            });


                            var BtnTemplateMsg_Drugs34 = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                            {
                                //----功能選擇 文字
                                BtnTemplateMsg_Drugs34.thumbnailImageUrl = new Uri("https://i.screenshot.net/pzertmn");//照片
                                BtnTemplateMsg_Drugs34.text  = "三級 & 四級毒品";
                                BtnTemplateMsg_Drugs34.title = "包含:";
                                //add action
                                BtnTemplateMsg_Drugs34.actions = actions_Drugs34;
                            };

                            this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Drugs34);
                        }//end of 3&4

                        if (LineEvent.message.text.ToLower() == "愷他命" || LineEvent.message.text.ToLower() == "強暴丸" || LineEvent.message.text.ToLower() == "蝴蝶片")
                        {
                            if (LineEvent.message.text == "愷他命")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-2.fna.fbcdn.net/v/t1.0-9/44654928_289710501868522_8126295144434499584_n.jpg?_nc_cat=104&_nc_ht=scontent.ftpe7-2.fna&oh=7019110757b0d7f22369d838959794cb&oe=5C3C309C"));
                            }
                            if (LineEvent.message.text == "強暴丸")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-2.fna.fbcdn.net/v/t1.0-9/44471505_289710628535176_1379139201613692928_n.jpg?_nc_cat=104&_nc_ht=scontent.ftpe7-2.fna&oh=1dbf504de3bbb248b19d38d0423d37df&oe=5C4D8773"));
                            }
                            if (LineEvent.message.text == "蝴蝶片")
                            {
                                this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-2.fna.fbcdn.net/v/t1.0-9/44487736_289710565201849_6465331643535065088_n.jpg?_nc_cat=104&_nc_ht=scontent.ftpe7-2.fna&oh=8c3ebc28aa54828d6c95589b79896813&oe=5C3EC72A"));
                            }
                        }


                        #endregion

                        /*
                         * 問題!!!!!!!!!
                         * LineEvent.message.type == "text" 會戶擋
                         * 擺到外投沒關係
                         * 解決方法: 想法一 :大雜燴 放到外投
                         */

                        /*
                         * 四大功能
                         * 關於熱量  代謝率計算 疾病查詢 認識毒品
                         * 先進入選項
                         * 在建立選項表單
                         */

                        /*
                         * 關於熱量
                         * 1.建立表單
                         * 2.進入選項 和選項的平行選擇條件
                         */

                        #region QA 關於熱量 和 疾病
                        else if (LineEvent.message.text.ToLower() == "關於熱量")
                        {
                            var actionCal = new List <isRock.LineBot.TemplateActionBase>();
                            actionCal.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "查詢食物熱量", text = "查詢食物熱量"
                            });
                            actionCal.Add(new isRock.LineBot.MessageAction()
                            {
                                label = "熱量問答", text = "熱量問答"
                            });

                            var BtnCal = new isRock.LineBot.ButtonsTemplate();
                            {
                                BtnCal.thumbnailImageUrl = new Uri("https://scontent.ftpe7-3.fna.fbcdn.net/v/t1.0-9/40685223_264561371050102_1948310784530448384_n.jpg?_nc_fx=ftpe7-3&_nc_cat=0&oh=c148736b5a0996f8406d85fada463570&oe=5C25CA17");
                                BtnCal.text  = "功能選單";
                                BtnCal.title = "請選擇以下功能: ";
                                //加入動作
                                BtnCal.actions = actionCal;
                            }//上面文字

                            this.ReplyMessage(LineEvent.replyToken, BtnCal);
                        }//進入關於熱量的底層

                        if (LineEvent.message.text.ToLower() == "查詢食物熱量" || LineEvent.message.text.ToLower() == "熱量問答")
                        {
                            if (LineEvent.message.text == "查詢食物熱量")
                            {
                                this.ReplyMessage(LineEvent.replyToken, "您可以輸入以下這些: 雞肉 牛肉 豬肉 羊肉 蝦肉 魚肉 白飯 雞蛋 白吐司 麵 番薯 馬鈴薯 起司 香蕉 豆腐 奶油 牛奶 豆漿 油");
                            }//查詢食物熱量

                            else if (LineEvent.message.text == "熱量問答")
                            {
                                this.ReplyMessage(LineEvent.replyToken, "您可以輸入以下這些:\n 成年人一天需要多少熱量?\n兒童一天需要多少熱量?\n青少年一天需要多少熱量? \n基礎代謝\n");
                            }
                        }//進入熱量 食物 QA



                        else if (LineEvent.message.text.ToLower() == "疾病查詢")
                        {
                            this.ReplyMessage(LineEvent.replyToken, "您可以問我: 直接輸入疾病(ex:肺炎,糖尿病,大腸癌,高血壓,中風.....)\n或是輸入症狀(兩個以上 1ex:眼睛紅腫 有分泌物 睜不開 2ex:胸痛 胸悶 ) ");
                            //var actions_Sick = new List<isRock.LineBot.TemplateActionBase>();
                            //actions_Sick.Add(new isRock.LineBot.MessageAction() { label = "疾病症狀查詢", text = "疾病症狀查詢" });
                            //actions_Sick.Add(new isRock.LineBot.MessageAction() { label = "疾病的分類", text = "疾病的分類" });


                            //var BtnTemplateMsg_Sick = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                            //{

                            //    //----功能選擇 文字
                            //    BtnTemplateMsg_Sick.thumbnailImageUrl = new Uri("https://scontent.ftpe7-3.fna.fbcdn.net/v/t1.0-9/40912906_265044184335154_3090929470048043008_n.jpg?_nc_fx=ftpe7-3&_nc_cat=0&oh=480ce3da7f50cd926a57678c636ea6a0&oe=5C3A5C69");//照片
                            //    BtnTemplateMsg_Sick.text = "查詢";
                            //    BtnTemplateMsg_Sick.title = "請選以下選項";
                            //    //add action
                            //    BtnTemplateMsg_Sick.actions = actions_Sick;
                            //};

                            //this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Sick);
                        }// 疾病查詢

                        //if (LineEvent.message.text.ToLower() == "疾病症狀查詢" || LineEvent.message.text.ToLower() == "疾病的分類")
                        //{
                        //    if (LineEvent.message.text== "疾病症狀查詢")
                        //    {
                        //        this.ReplyMessage(LineEvent.replyToken,"您可以打:疾病or病狀");
                        //    }

                        //    if (LineEvent.message.text == "疾病的分類")
                        //    {
                        //        this.ReplyMessage(LineEvent.replyToken, "您可以直接打:疾病的名稱");
                        //    }
                        //}

                        if (ReceivedMessage.events[0].message.type == "text") //收到文字
                        {
                            //建立 MsQnAMaker Client
                            var helper      = new isRock.MsQnAMaker.Client(new Uri(DatabasesQAEpoint), DatabasesQAKey);
                            var QnAResponse = helper.GetResponse(LineEvent.message.text.Trim());
                            var ret         = (from c in QnAResponse.answers
                                               orderby c.score descending
                                               select c
                                               ).Take(1);
                            //var data = "雞肉 牛肉 豬肉 羊肉 蝦肉 魚肉 白飯 雞蛋 白吐司 麵 番薯 馬鈴薯 起司 香蕉 豆腐 奶油 牛奶 豆漿 油 ";
                            var responseText = "";// UnknowAnswer + data;
                            if (ret.FirstOrDefault().score > 0)
                            {
                                responseText = ret.FirstOrDefault().answer;
                            }

                            //回覆
                            this.ReplyMessage(LineEvent.replyToken, responseText);
                        }//if

                        #endregion



                        #region 基礎代謝率計算(( 改


                        //  //收集定義者資料 switch 那一塊
                        //  isRock.LineBot.Conversation.InformationCollector<LeaveRequest> CIC = new isRock.LineBot.Conversation.InformationCollector<LeaveRequest>(channelAccessToken);

                        //  var responseMsg = "";

                        //  //取得 http post rawData
                        //  string postData = Request.Content.ReadAsStringAsync().Result;
                        //  var ReMSG = isRock.LineBot.Utility.Parsing(postData);
                        //  LeaveRequest lr = new LeaveRequest(); // 計算的list


                        //  //定義接收結果
                        //  ProcessResult<LeaveRequest> result;

                        //  //確認是否有進入
                        ////  this.ReplyMessage(LineEvent.replyToken, "請輸入'計算',就會開始計算基礎代謝率");

                        //  if ( LineEvent.message.type == "text" && ReceivedMessage.events[0].message.text == "算")
                        //  {
                        //      //把訊息丟給CIC
                        //      result = CIC.Process(ReceivedMessage.events[0], true);
                        //      responseMsg = "開始計算\n";
                        //  }
                        //  else
                        //  {
                        //      //把訊息丟給CIC
                        //      result = CIC.Process(ReceivedMessage.events[0]);
                        //  }

                        //  //處理 CIC回覆的結果
                        //  switch (result.ProcessResultStatus)
                        //  {
                        //      case ProcessResultStatus.Processed:
                        //          //取得候選訊息發送
                        //          responseMsg += result.ResponseMessageCandidate;
                        //          break;
                        //      case ProcessResultStatus.Done:
                        //          responseMsg += result.ResponseMessageCandidate;
                        //          responseMsg += $"蒐集到的資料有...\n";
                        //          double bmi = (lr.Hight) / 100 / Math.Pow(lr.Weight, 2);
                        //          responseMsg += $" Newtonsoft.Json.JsonConvert.SerializeObject(result.ConversationState.ConversationEntity)\n";
                        //          responseMsg += $"BMI為{bmi}";
                        //          break;
                        //      //case ProcessResultStatus.Pass:
                        //      //    responseMsg = $"你說的 '{ReceivedMessage.events[0].message.text}' 我看不懂,如果想要請假,請跟我說 : 『我要請假』";
                        //      //    break;
                        //      case ProcessResultStatus.Exception:
                        //          //取得候選訊息發送
                        //          responseMsg += result.ResponseMessageCandidate;
                        //          break;
                        //      case ProcessResultStatus.Break:
                        //          //取得候選訊息發送
                        //          responseMsg += result.ResponseMessageCandidate;
                        //          break;
                        //      case ProcessResultStatus.InputDataFitError:
                        //          responseMsg += "\n資料型態不合\n";
                        //          responseMsg += result.ResponseMessageCandidate;
                        //          break;
                        //      default:
                        //          //取得候選訊息發送
                        //          responseMsg += result.ResponseMessageCandidate;
                        //          break;
                        //  }



                        //end of 代謝率計算



                        #endregion



                        #region 四個功能
                        //if (LineEvent.message.text.ToLower() == "關於熱量" || LineEvent.message.text.ToLower() == "代謝率計算" || LineEvent.message.text.ToLower() == "疾病查詢" || LineEvent.message.text.ToLower() == "認識毒品")
                        //{


                        //    #region 關於熱量
                        //    if (LineEvent.message.text == "關於熱量")
                        //    {
                        //        var actionCal = new List<isRock.LineBot.TemplateActionBase>();
                        //        actionCal.Add(new isRock.LineBot.MessageAction() { label = "查詢食物熱量", text = "查詢食物熱量" });
                        //        actionCal.Add(new isRock.LineBot.MessageAction() { label = "熱量有關QA", text = "熱量有關QA" });

                        //        var BtnCal = new isRock.LineBot.ButtonsTemplate();
                        //        {
                        //            BtnCal.thumbnailImageUrl = new Uri("https://scontent.ftpe7-3.fna.fbcdn.net/v/t1.0-9/40685223_264561371050102_1948310784530448384_n.jpg?_nc_fx=ftpe7-3&_nc_cat=0&oh=c148736b5a0996f8406d85fada463570&oe=5C25CA17");
                        //            BtnCal.text = "功能選單";
                        //            BtnCal.title = "請選擇以下功能: ";
                        //            //加入動作
                        //            BtnCal.actions = actionCal;
                        //        }//上面文字

                        //        this.ReplyMessage(LineEvent.replyToken, BtnCal);

                        //        if (LineEvent.message.text.ToLower() == "查詢食物熱量" || LineEvent.message.text.ToLower() == "熱量有關QA")
                        //        {
                        //            if (LineEvent.message.text == "查詢食物熱量")
                        //            {
                        //                // var repmsg = "";
                        //                // if (LineEvent.message.type== "text") //收到文字
                        //                //{
                        //                this.ReplyMessage(LineEvent.replyToken, "您可以輸入以下這些: 雞肉 牛肉 豬肉 羊肉 蝦肉 魚肉 白飯 雞蛋 白吐司 麵 番薯 馬鈴薯 起司 香蕉 豆腐 奶油 牛奶 豆漿 油");

                        //                //建立 MsQnAMaker Client
                        //                var helper = new isRock.MsQnAMaker.Client(new Uri("CalQAEpoint"), "CalQAKey");
                        //                var QnAResponse = helper.GetResponse(LineEvent.message.text.Trim());
                        //                var ret = (from c in QnAResponse.answers
                        //                           orderby c.score descending
                        //                           select c
                        //                        ).Take(1);
                        //                var data = "雞肉 牛肉 豬肉 羊肉 蝦肉 魚肉 白飯 雞蛋 白吐司 麵 番薯 馬鈴薯 起司 香蕉 豆腐 奶油 牛奶 豆漿 油 ";
                        //                var responseText = UnknowAnswer + data;
                        //                if (ret.FirstOrDefault().score > 0)
                        //                    responseText = ret.FirstOrDefault().answer;
                        //                //回覆
                        //                this.ReplyMessage(LineEvent.replyToken, responseText);
                        //                //}//if
                        //            }//end of 查詢食物熱量


                        //            if (LineEvent.message.text == "熱量有關QA")
                        //            {
                        //                // var repmsg = "";
                        //                // if (LineEvent.type == "message") //收到文字
                        //                //{

                        //                this.ReplyMessage(LineEvent.replyToken, "您可以輸入以下這些: 成年人一天需要多少熱量?\n兒童一天需要多少熱量?\n青少年一天需要多少熱量? \n基礎代謝\n");

                        //                //建立 MsQnAMaker Client
                        //                var helper = new isRock.MsQnAMaker.Client(new Uri(CalQAEpoint), CalQAKey);
                        //                var QnAResponse = helper.GetResponse(LineEvent.message.text.Trim());
                        //                var ret = (from c in QnAResponse.answers
                        //                           orderby c.score descending
                        //                           select c
                        //                        ).Take(1);
                        //                var data = "成年人一天需要多少熱量?\n兒童一天需要多少熱量?\n青少年一天需要多少熱量? \n基礎代謝\n";
                        //                var responseText = UnknowAnswer + data;
                        //                if (ret.FirstOrDefault().score > 0)
                        //                    responseText = ret.FirstOrDefault().answer;
                        //                //回覆
                        //                this.ReplyMessage(LineEvent.replyToken, responseText);
                        //                //}//if lineevent
                        //            }//熱量有關QA
                        //        }//end of LineEvent.message.text.ToLower() == "查詢食物熱量" || LineEvent.message.text.ToLower() == "熱量有關QA"
                        //    }//end of 關於熱量

                        //    #endregion

                        //    #region 代謝率
                        //    if (LineEvent.message.text == "代謝率換算")
                        //    {


                        //        // 定義資訊收集者 list
                        //        isRock.LineBot.Conversation.InformationCollector<LeaveRequest> CIC =
                        //            new isRock.LineBot.Conversation.InformationCollector<LeaveRequest>(channelAccessToken);
                        //        LeaveRequest lr = new LeaveRequest();

                        //        this.ReplyMessage(LineEvent.replyToken, "只要說 : '計算' 就會開始計算基礎代謝率");
                        //        //取得 http post RawData Json
                        //        string postData = Request.Content.ReadAsStringAsync().Result;
                        //        //剖析 Json
                        //        var reMessage = isRock.LineBot.Utility.Parsing(postData);

                        //        //定義類別
                        //        ProcessResult<LeaveRequest> result;
                        //        //回復
                        //        var responseMsg = "";

                        //        if (reMessage.events[0].message.text == "計算")
                        //        {

                        //            result = CIC.Process(reMessage.events[0], true);
                        //            responseMsg = "開始計算\n";

                        //        }//計算代謝率

                        //        else { result = CIC.Process(reMessage.events[0]); }
                        //        //處理 CIC 處理結果
                        //        switch (result.ProcessResultStatus)
                        //        {
                        //            case ProcessResultStatus.Processed:
                        //                //取得候選訊息發送
                        //                responseMsg += result.ResponseMessageCandidate;
                        //                break;

                        //            case ProcessResultStatus.Done:
                        //                responseMsg += result.ResponseMessageCandidate;
                        //                responseMsg += $"蒐集到的資料有...\n";
                        //                double bmi = (lr.Hight) / 100 / Math.Pow(lr.Weight, 2);
                        //                responseMsg += $" Newtonsoft.Json.JsonConvert.SerializeObject(result.ConversationState.ConversationEntity)\n";
                        //                responseMsg += $"BMI為{bmi}";
                        //                break;
                        //            //case ProcessResultStatus.Pass:
                        //            //    responseMsg = $"你說的 '{ReceivedMessage.events[0].message.text}' 我看不懂,如果想要請假,請跟我說 : 『我要請假』";
                        //            //    break;
                        //            case ProcessResultStatus.Exception:
                        //                //取得候選訊息發送
                        //                responseMsg += result.ResponseMessageCandidate;
                        //                break;
                        //            case ProcessResultStatus.Break:
                        //                //取得候選訊息發送
                        //                responseMsg += result.ResponseMessageCandidate;
                        //                break;
                        //            case ProcessResultStatus.InputDataFitError:
                        //                responseMsg += "\n資料型態不合\n";
                        //                responseMsg += result.ResponseMessageCandidate;
                        //                break;
                        //            default:
                        //                //取得候選訊息發送
                        //                responseMsg += result.ResponseMessageCandidate;
                        //                break;

                        //        }

                        //    }//end of 代謝率換算
                        //    #endregion

                        //    #region 疾病查詢
                        //    if (LineEvent.message.text == "疾病查詢")
                        //    {
                        //        var actions_Sick = new List<isRock.LineBot.TemplateActionBase>();
                        //        actions_Sick.Add(new isRock.LineBot.MessageAction() { label = "疾病症狀查詢", text = "疾病症狀查詢" });
                        //        actions_Sick.Add(new isRock.LineBot.MessageAction() { label = "疾病的分類", text = "疾病的分類" });


                        //        var BtnTemplateMsg_Sick = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                        //        {

                        //            //----功能選擇 文字
                        //            BtnTemplateMsg_Sick.thumbnailImageUrl = new Uri("https://scontent.ftpe7-3.fna.fbcdn.net/v/t1.0-9/40912906_265044184335154_3090929470048043008_n.jpg?_nc_fx=ftpe7-3&_nc_cat=0&oh=480ce3da7f50cd926a57678c636ea6a0&oe=5C3A5C69");//照片
                        //            BtnTemplateMsg_Sick.text = "查詢";
                        //            BtnTemplateMsg_Sick.title = "請選以下選項";
                        //            //add action
                        //            BtnTemplateMsg_Sick.actions = actions_Sick;
                        //        };

                        //        this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Sick);
                        //        if (LineEvent.message.text.ToLower() == "疾病症狀查詢" || LineEvent.message.text.ToLower() == "疾病的分類")
                        //        {

                        //        }// end of LineEvent.message.text.ToLower()== "疾病症狀查詢" || LineEvent.message.text.ToLower() == "疾病的分類"


                        //    }//end of 疾病查詢

                        //    #endregion

                        //    #region 毒品

                        //    if (LineEvent.message.text == "認識毒品")
                        //    {

                        //        /* 建立TemplateMsg
                        //         *選擇後 進入選項底下
                        //         *
                        //         *
                        //         *
                        //         */

                        //        var actions_Drugs = new List<isRock.LineBot.TemplateActionBase>();
                        //        actions_Drugs.Add(new isRock.LineBot.MessageAction() { label = "一級毒品", text = "一級毒品" });
                        //        actions_Drugs.Add(new isRock.LineBot.MessageAction() { label = "二級毒品", text = "二級毒品" });
                        //        actions_Drugs.Add(new isRock.LineBot.MessageAction() { label = "三級 & 四級毒品", text = "三級 & 四級毒品" });

                        //        var BtnTemplateMsg_Drugs = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                        //        {

                        //            //----功能選擇 文字
                        //            BtnTemplateMsg_Drugs.thumbnailImageUrl = new Uri("https://i.screenshot.net/0gq8bx1");//照片
                        //            BtnTemplateMsg_Drugs.text = "認識毒品/藥物";
                        //            BtnTemplateMsg_Drugs.title = "請選以下選項";
                        //            //add action
                        //            BtnTemplateMsg_Drugs.actions = actions_Drugs;
                        //        };
                        //        this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Drugs);


                        //        //---------drugs

                        //        if (LineEvent.message.text.ToLower() == "一級毒品" || LineEvent.message.text.ToLower() == "二級毒品" || LineEvent.message.text.ToLower() == "三級 & 四級毒品")
                        //        {

                        //            if (LineEvent.message.text == "一級毒品")
                        //            {
                        //                //TemplateMsg
                        //                var actions_Drugs1 = new List<isRock.LineBot.TemplateActionBase>();
                        //                actions_Drugs1.Add(new isRock.LineBot.MessageAction() { label = "古柯鹼", text = "古柯鹼" });
                        //                actions_Drugs1.Add(new isRock.LineBot.MessageAction() { label = "海洛因", text = "海洛因" });
                        //                actions_Drugs1.Add(new isRock.LineBot.MessageAction() { label = "嗎啡", text = "嗎啡" });
                        //                actions_Drugs1.Add(new isRock.LineBot.MessageAction() { label = "鴉片", text = "鴉片" });


                        //                var BtnTemplateMsg_Drugs1 = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                        //                {

                        //                    //----功能選擇 文字
                        //                    BtnTemplateMsg_Drugs1.thumbnailImageUrl = new Uri("https://i.screenshot.net/pzertmn");//照片
                        //                    BtnTemplateMsg_Drugs1.text = "一級毒品";
                        //                    BtnTemplateMsg_Drugs1.title = "包含:";
                        //                    //add action
                        //                    BtnTemplateMsg_Drugs1.actions = actions_Drugs1;
                        //                };
                        //                this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Drugs1);

                        //                if (LineEvent.message.text.ToLower() == "古柯鹼" || LineEvent.message.text.ToLower() == "海洛因" || LineEvent.message.text.ToLower() == "嗎啡" || LineEvent.message.text.ToLower() == "鴉片")
                        //                {
                        //                    if (LineEvent.message.text == "古柯鹼") { this.ReplyMessage(LineEvent.replyToken, new Uri("https://scontent.ftpe7-4.fna.fbcdn.net/v/t1.0-9/40784055_264535537719352_25188119175233536_n.jpg?_nc_cat=107&oh=f070a3ae0e0bb933a21c4000bac6c676&oe=5C53343D")); }
                        //                    if (LineEvent.message.text == "海洛因") { }
                        //                    if (LineEvent.message.text == "嗎啡") { }
                        //                    if (LineEvent.message.text == "鴉片") { }
                        //                }//LineEvent.message.text.ToLower() == "古柯鹼" || LineEvent.message.text.ToLower() == "海洛因" || LineEvent.message.text.ToLower() == "嗎啡" || LineEvent.message.text.ToLower() == "鴉片"



                        //            }//end of 一級毒品

                        //            if (LineEvent.message.text.ToLower() == "二級毒品")
                        //            {
                        //                //TemplateMsg
                        //                var actions_Drugs2 = new List<isRock.LineBot.TemplateActionBase>();
                        //                actions_Drugs2.Add(new isRock.LineBot.MessageAction() { label = "大麻", text = "大麻" });
                        //                actions_Drugs2.Add(new isRock.LineBot.MessageAction() { label = "安非他命", text = "安非他命" });
                        //                actions_Drugs2.Add(new isRock.LineBot.MessageAction() { label = "搖頭丸", text = "搖頭丸" });
                        //                actions_Drugs2.Add(new isRock.LineBot.MessageAction() { label = "魔菇", text = "魔菇" });


                        //                var BtnTemplateMsg_Drugs2 = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                        //                {

                        //                    //----功能選擇 文字
                        //                    BtnTemplateMsg_Drugs2.thumbnailImageUrl = new Uri("https://i.screenshot.net/pzertmn");//照片
                        //                    BtnTemplateMsg_Drugs2.text = "二級毒品";
                        //                    BtnTemplateMsg_Drugs2.title = "包含:";
                        //                    //add action
                        //                    BtnTemplateMsg_Drugs2.actions = actions_Drugs2;
                        //                };

                        //                this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Drugs2);
                        //            }//end of 二級毒品

                        //            if (LineEvent.message.text.ToLower() == "三級 & 四級毒品")
                        //            {
                        //                //TemplateMsg
                        //                var actions_Drugs34 = new List<isRock.LineBot.TemplateActionBase>();
                        //                actions_Drugs34.Add(new isRock.LineBot.MessageAction() { label = "3級 K他命(氯胺酮)", text = "K他命(氯胺酮)" });
                        //                actions_Drugs34.Add(new isRock.LineBot.MessageAction() { label = "3級 FM2", text = "FM2" });
                        //                actions_Drugs34.Add(new isRock.LineBot.MessageAction() { label = "4級 蝴蝶片", text = "蝴蝶片" });


                        //                var BtnTemplateMsg_Drugs34 = new isRock.LineBot.ButtonsTemplate(); // 一開始的功能選擇
                        //                {

                        //                    //----功能選擇 文字
                        //                    BtnTemplateMsg_Drugs34.thumbnailImageUrl = new Uri("https://i.screenshot.net/pzertmn");//照片
                        //                    BtnTemplateMsg_Drugs34.text = "三級 & 四級毒品";
                        //                    BtnTemplateMsg_Drugs34.title = "包含:";
                        //                    //add action
                        //                    BtnTemplateMsg_Drugs34.actions = actions_Drugs34;
                        //                };

                        //                this.ReplyMessage(LineEvent.replyToken, BtnTemplateMsg_Drugs34);

                        //            }//end of 三四級毒品



                        //        }//end of 1234 drug tolower


                        //    }//end of 認識毒品

                        //    #endregion


                        //    //}// (LineEvent.message.text.ToLower() == "關於熱量" || LineEvent.message.text.ToLower() == "代謝率計算" || LineEvent.message.text.ToLower() == "疾病查詢" || LineEvent.message.text.ToLower() == "認識毒品
                        #endregion
                    }// end of message type is text

                    if (LineEvent.message.type == "sticker")
                    {
                        this.ReplyMessage(LineEvent.replyToken, 1, 2);
                    }//收到貼圖


                    if (LineEvent.message.type == "location")
                    {
                        this.ReplyMessage(LineEvent.replyToken, $"你的位置在\n{LineEvent.message.latitude}, {LineEvent.message.longitude}");
                    } //收到位置
                }     //end of  收到訊息(message)

                #endregion

                //response OK
                return(Ok());
            }//end of try
            catch (Exception ex)
            {
                //如果發生錯誤,傳訊息給Admin
                this.PushMessage(AdminUserId, "發生錯誤:\n" + ex.Message);
                //response OK
                return(Ok());
            }
        }//end of public post