示例#1
0
        public async Task ReplyMessageAsync(string replyToken, IList <IMessage> messages)
        {
            using (var httpClient = new HttpClient())
            {
                using (var request = new HttpRequestMessage(new HttpMethod("POST"), $"{lineMessageReplyApiBaseUrl}"))
                {
                    request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {accessToken}");

                    LineMessageReq req = new LineMessageReq();
                    req.ReplyToken = replyToken;

                    foreach (var message in messages)
                    {
                        req.Messages.Add(message);
                    }

                    var postJson = JsonConvert.SerializeObject(req, new JsonSerializerSettings
                    {
                        NullValueHandling = NullValueHandling.Ignore,
                        ContractResolver  = new DefaultContractResolver
                        {
                            NamingStrategy = new CamelCaseNamingStrategy()
                        }
                    });

                    request.Content = new StringContent(postJson);
                    request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
                    var response = await httpClient.SendAsync(request);
                }
            }
        }
示例#2
0
        public async Task ReplyMessageByJsonAsync(string replyToken, string jsonString)
        {
            using (var httpClient = new HttpClient())
            {
                using (var request = new HttpRequestMessage(new HttpMethod("POST"), $"{lineMessageReplyApiBaseUrl}"))
                {
                    request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {accessToken}");

                    LineMessageReq req = new LineMessageReq();
                    req.ReplyToken = replyToken;

                    req.Messages.Add(new FlexMessage()
                    {
                        Contents = JsonConvert.DeserializeObject(jsonString)
                    });

                    var postJson = JsonConvert.SerializeObject(req, new JsonSerializerSettings
                    {
                        NullValueHandling = NullValueHandling.Ignore,
                        ContractResolver  = new DefaultContractResolver
                        {
                            NamingStrategy = new CamelCaseNamingStrategy()
                        },
                        Formatting = Formatting.Indented
                    }).Replace("\"", @"""");

                    request.Content = new StringContent(postJson);
                    request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
                    var response = await httpClient.SendAsync(request);

                    var result = await response.Content.ReadAsStringAsync();
                }
            }
        }
        private async Task MakeReplyRequestToLineApi(LineMessageReq req)
        {
            var postJson = JsonConvert.SerializeObject(req, new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                Formatting        = Formatting.Indented,
                ContractResolver  = new CustomPropertyNamesContractResolver()
                {
                    Case = IdentifierCase.Camel,
                    PreserveUnderscores = false,
                },
                Converters = { new StringEnumConverter(typeof(SnakeCaseNamingStrategy)) }
            }).Replace("\"", @"""");


            using var request = new HttpRequestMessage(new HttpMethod("POST"), $"{LineMessageReplyApiBaseUrl}");
            request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {_accessToken}");
            request.Content = new StringContent(postJson);
            request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
            var response = await _httpClient.SendAsync(request);

            var content = await response.Content.ReadAsStringAsync();

            if (response.StatusCode == HttpStatusCode.OK)
            {
                return;
            }
            throw new Exception(content);
        }
        public async Task ReplyMessageAsync(string replyToken, IList <IRequestMessage> messages)
        {
            var req = new LineMessageReq {
                ReplyToken = replyToken
            };

            foreach (var message in messages)
            {
                switch (message)
                {
                case IMessage:
                    req.Messages.Add(message);
                    break;

                case ITemplate template:
                    req.Messages.Add(new TemplateMessageBase()
                    {
                        Template = template
                    });
                    break;

                case IFlex template:
                    req.Messages.Add(template);
                    break;
                }
            }

            await MakeReplyRequestToLineApi(req);
        }
        public async Task ReplyMessageAsync(string replyToken, params string[] messages)
        {
            using var request = new HttpRequestMessage(new HttpMethod("POST"), $"{LineMessageReplyApiBaseUrl}");
            request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {_accessToken}");

            var req = new LineMessageReq {
                ReplyToken = replyToken
            };

            foreach (var message in messages)
            {
                req.Messages.Add(new TextMessage(message));
            }

            var postJson = JsonConvert.SerializeObject(req, new JsonSerializerSettings
            {
                ContractResolver = new DefaultContractResolver
                {
                    NamingStrategy = new CamelCaseNamingStrategy()
                },
                Formatting = Formatting.Indented
            });

            request.Content = new StringContent(postJson);
            request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
            var response = await _httpClient.SendAsync(request);
        }
        public async Task ReplyMessageByJsonAsync(string replyToken, string jsonString)
        {
            var req = new LineMessageReq {
                ReplyToken = replyToken
            };

            req.Messages.Add(new FlexMessage(jsonString));
            await MakeReplyRequestToLineApi(req);
        }