public async Task PushMessageAsync(string userId, IList <IRequestMessage> messages) { var req = new LineMessagePushReq() { To = userId }; 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 MakePushRequestToLineApi(req); }
private async Task MakePushRequestToLineApi(LineMessagePushReq 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"), $"{LineMessagePushApiBaseUrl}"); 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 PushMessageByJsonAsync(string userId, string jsonString) { var req = new LineMessagePushReq() { To = userId }; req.Messages.Add(new FlexMessage(jsonString)); await MakePushRequestToLineApi(req); }
public async Task PushMessageAsync(string userId, params string[] messages) { var req = new LineMessagePushReq { To = userId }; foreach (var message in messages) { req.Messages.Add(new TextMessage(message)); } await MakePushRequestToLineApi(req); }