Esempio n. 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                RequestInfoFromLine info = new RequestInfoFromLine(Request);

                if (!CheckSignature(info))
                {
                    //不正リクエストなので、即return
                    Response.StatusCode = 200;
                    return;
                }

                //postbackイベントの場合
                if (info.EventType == CommonSettings.EventType.POSTBACK && info.Message == "ok")
                {
                    SendLeaveRequest(info);
                    return;
                }

                ReplyManager manager = ReplyManagerFactory.Create(info.EventType);

                byte[] replyBodyBytes = manager.CreateReplyBodyBytes(info);

                SendReply(replyBodyBytes);

                System.Diagnostics.Trace.WriteLine("Entry: " + info.FromId);
            }catch (Exception ex) {
            }
        }
Esempio n. 2
0
        public override byte[] CreateReplyBodyBytes(RequestInfoFromLine info)
        {
            //トークルームから除外する為に使われる。レスポンスは空を返す


            throw new NotImplementedException();
        }
Esempio n. 3
0
        /// <summary>
        /// リクエストの署名をチェック
        /// </summary>
        /// <returns></returns>
        private bool CheckSignature(RequestInfoFromLine info)
        {
            string channelSercret = CommonSettings.ChannelSercret;

            byte[]     key  = Encoding.UTF8.GetBytes(channelSercret);
            HMACSHA256 hmac = new HMACSHA256(key);

            byte[] bs = hmac.ComputeHash(info.RequestBodyBytes);
            hmac.Clear();
            string signature = Convert.ToBase64String(bs);

            return(signature == Request.Headers["X-Line-Signature"]);
        }
Esempio n. 4
0
        private void SendLeaveRequest(RequestInfoFromLine info)
        {
            string         endPointUrl = CommonSettings.EndPointUrl.LEAVE_URL_TEMPLATE.Replace("${FromType}", info.FromType).Replace("${FromId}", info.FromId);
            HttpWebRequest request     = (HttpWebRequest)HttpWebRequest.Create(endPointUrl);

            request.Method = "POST";
            request.Headers["Authorization"] = "Bearer " + CommonSettings.ChannelAccessToken;

            using (Stream repStream = request.GetRequestStream())
            {
                repStream.Write(new byte[] { }, 0, 0);
            }
        }
        public override byte[] CreateReplyBodyBytes(RequestInfoFromLine info)
        {
            dynamic replyBody = new DynamicJson();

            if (info.Message.Contains("グループID"))
            {
                replyBody.replyToken = info.ReplyToken;

                if (info.FromId != null)
                {
                    replyBody.messages = new[] {
                        new {
                            type = "text",
                            text = "このグループのURLは以下ですよ"
                        },
                        new {
                            type = "text",
                            text = "https://script.google.com/macros/s/AKfycbz8izLdmSMTJZUGR6ZkY5UMdwAbYIXGx5THlukI61wZMQbUFN8/exec?gid=" + info.FromId// +"&version=2"
                        }
                    };
                }
            }
            else if (info.Message.Contains("スタンプBotいらないよ"))
            {
                replyBody.replyToken = info.ReplyToken;
                replyBody.messages   = new[] {
                    new {
                        type     = "template",
                        altText  = "除外機能が使えないようです。管理画面URL下部のtwitterより連絡お願い致します。",
                        template = new {
                            type    = "confirm",
                            text    = "MOB@MP M@STERをトークルームから除外しますか?",
                            actions = new[] {
                                new {
                                    type  = "postback",
                                    label = "はい",
                                    data  = "ok"
                                },
                                new {
                                    type  = "postback",
                                    label = "いいえ",
                                    data  = "no"
                                }
                            }
                        }
                    }
                };
            }

            return(Encoding.UTF8.GetBytes(replyBody.ToString()));
        }
Esempio n. 6
0
        public override byte[] CreateReplyBodyBytes(RequestInfoFromLine info)
        {
            //友だち追加の場合、以下の固定メッセージを返す。
            dynamic replyBody = new DynamicJson();

            replyBody.replyToken = info.ReplyToken;
            replyBody.messages   = new[] {
                new {
                    type = "text",
                    text = "友だち追加ありがとうございます!\r\n このBotをグループに追加する事で、\r\n モバマスのスタンプを送る事が出来ますよ!"
                }
            };

            return(Encoding.UTF8.GetBytes(replyBody.ToString()));
        }
        public override byte[] CreateReplyBodyBytes(RequestInfoFromLine info)
        {
            //グループ追加の場合、以下の固定メッセージを返す。
            dynamic replyBody = new DynamicJson();

            replyBody.replyToken = info.ReplyToken;
            replyBody.messages   = new[] {
                new {
                    type = "text",
                    text = "グループ追加ありがとうございます!!\r\n このグループのURLは以下です。"
                },
                new {
                    type = "text",
                    text = "https://script.google.com/macros/s/AKfycbz8izLdmSMTJZUGR6ZkY5UMdwAbYIXGx5THlukI61wZMQbUFN8/exec?gid=" + info.FromId// +"&version=2"
                }
            };

            return(Encoding.UTF8.GetBytes(replyBody.ToString()));
        }
Esempio n. 8
0
 /// <summary>
 /// リプライのボディのバイト配列を作成する
 /// </summary>
 /// <returns></returns>
 public abstract byte[] CreateReplyBodyBytes(RequestInfoFromLine info);