public async Task <SendPushNotificationResponse> SendPushNotificationAsync(SendPushNotificationRequest model) { var result = await _pushNotificationService.SendPushNotificationAsync( _mapper.Map <Domain.SendPushNotificationModel>(model)); return(_mapper.Map <SendPushNotificationResponse>(result)); }
public async Task <MessageResponseModel> SendPushNotificationAsync(SendPushNotificationRequest model) { var pushNotification = _mapper.Map <PushNotification>(model); var messageResponseContract = await _messageService.ProcessPushNotificationAsync(pushNotification, CallType.Rest); return(_mapper.Map <MessageResponseModel>(messageResponseContract)); }
public async Task <IActionResult> SendPushNotification([FromBody] SendPushNotificationRequest request) { if (request.Broadcast) { await PushNotificationService.BroadcastAsync(request.Title, request.Body, request.Data, request.Classification); } else { await PushNotificationService.SendAsync(request.Title, request.Body, request.Data, request.UserTag, request.Classification, request.Tags ?? Array.Empty <string>()); } return(NoContent()); }
public async Task <string> SendAsync(ApiOptions options = null) { var request = new SendPushNotificationRequest { Push = this }; ApiOptions.Apply(request, options); var response = await request.ExecuteAsync(); if (response.Status.IsSuccessful == false) { throw response.Status.ToFault(); } return(response.Id); }
public async Task <IHttpActionResult> SendPushNotification(SendPushNotificationRequest request) { var notificationModel = "{ \"data\" : {\"message\":\"" + "From " + request.Title + ": " + request.Content + "\"}}"; NotificationOutcome outcome = null; switch (request.Platform) { case PushPlatformType.WNS: // Windows 8.1 / Windows Phone 8.1 var toast = @"<toast><visual><binding template=""ToastText01""><text id=""1"">" + "From " + request.Title + ": " + request.Content + "</text></binding></visual></toast>"; outcome = await _notificationHubClient.SendWindowsNativeNotificationAsync(toast, request.Tag); break; case PushPlatformType.APNS: // iOS var alert = "{\"aps\":{\"alert\":\"" + "From " + request.Title + ": " + request.Content + "\"}}"; outcome = await _notificationHubClient.SendAppleNativeNotificationAsync(alert, request.Tag); break; case PushPlatformType.GCM: // Android var notif = "{ \"data\" : {\"message\":\"" + "From " + request.Title + ": " + request.Content + "\"}}"; outcome = await _notificationHubClient.SendGcmNativeNotificationAsync(notif, request.Tag); break; } if (outcome != null) { if (!((outcome.State == NotificationOutcomeState.Abandoned) || (outcome.State == NotificationOutcomeState.Unknown))) { return(Ok()); } } return(InternalServerError()); }
public async Task ProcessPushNotificationAsync( Guid messageId, string pushRegistrationId, string message, string customPayload, string messageGroupId, Dictionary <string, string> messageParameters) { var customPayloadDict = !string.IsNullOrWhiteSpace(customPayload) ? JsonConvert.DeserializeObject <Dictionary <string, string> >(customPayload) : new Dictionary <string, string>(); if (!string.IsNullOrWhiteSpace(messageGroupId)) { customPayloadDict.TryAdd("MessageGroupId", messageGroupId); } if (messageParameters != null && messageParameters.Count > 0) { foreach (var messageParameter in messageParameters) { if (customPayloadDict.ContainsKey(messageParameter.Key)) { _log.Warning( $"Message parameter with key {messageParameter.Key} already exists in CustomPayload", messageParameter.Key); } else { customPayloadDict.Add(messageParameter.Key, messageParameter.Value); } } } var request = new SendPushNotificationRequest { MessageId = messageId.ToString(), CustomPayload = customPayloadDict, Message = message, PushRegistrationId = pushRegistrationId }; var response = await _pushProviderClient.Api.SendPushNotificationAsync(request); var auditMessage = new UpdateAuditMessageEvent { MessageId = messageId.ToString(), SentTimestamp = DateTime.UtcNow }; if (response.Result != ResultCode.Ok) { var errorMessage = $"Could not send PUSH for registration {pushRegistrationId}: {response.ErrorMessage}"; _log.Error(message: errorMessage, context: new { messageId }); auditMessage.DeliveryStatus = DeliveryStatus.Error; auditMessage.DeliveryComment = errorMessage; } else { auditMessage.DeliveryStatus = DeliveryStatus.Ok; } await _auditMessagePublisher.PublishAsync(auditMessage); }
public async Task<string> SendAsync(ApiOptions options = null) { var request = new SendPushNotificationRequest { Push = this }; ApiOptions.Apply(request, options); var response = await request.ExecuteAsync(); if (response.Status.IsSuccessful == false) throw response.Status.ToFault(); return response.Id; }
public async Task <IActionResult> SendPushNotification([FromBody] SendPushNotificationRequest request, CancellationToken cancellationToken = default) { return(Ok(await Mediator.Send(request, cancellationToken))); }