internal void MessageStateChangeHandler(MessagingEventParams eventParams, MessagingEventParams.StateParams stateParams) { Message message = new Message() { Body = stateParams.Body, Context = stateParams.Context, Direction = stateParams.Direction, From = stateParams.FromNumber, ID = stateParams.MessageID, Media = stateParams.Media, Reason = stateParams.Reason, Segments = stateParams.Segments, State = stateParams.MessageState, Tags = stateParams.Tags, To = stateParams.ToNumber, }; OnMessageStateChange?.Invoke(this, message, eventParams, stateParams); switch (stateParams.MessageState) { case MessageState.queued: OnMessageQueued?.Invoke(this, message, eventParams, stateParams); break; case MessageState.initiated: OnInitiated?.Invoke(this, message, eventParams, stateParams); break; case MessageState.sent: OnMessageSent?.Invoke(this, message, eventParams, stateParams); break; case MessageState.delivered: OnMessageDelivered?.Invoke(this, message, eventParams, stateParams); break; case MessageState.undelivered: OnMessageUndelivered?.Invoke(this, message, eventParams, stateParams); break; case MessageState.failed: OnMessageFailed?.Invoke(this, message, eventParams, stateParams); break; } }
internal void MessageReceivedHandler(MessagingEventParams eventParams, MessagingEventParams.ReceiveParams receiveParams) { Message message = new Message() { Body = receiveParams.Body, Context = receiveParams.Context, Direction = receiveParams.Direction, From = receiveParams.FromNumber, ID = receiveParams.MessageID, Media = receiveParams.Media, // Reason Segments = receiveParams.Segments, State = receiveParams.MessageState, Tags = receiveParams.Tags, To = receiveParams.ToNumber, }; OnMessageReceived?.Invoke(this, message, eventParams, receiveParams); }
private void OnNotification(Client client, BroadcastParams broadcastParams) { mLogger.LogDebug("MessagingAPI OnNotification: {0}", broadcastParams.Event); if (broadcastParams.Event != "queuing.relay.messaging") { return; } MessagingEventParams messagingEventParams = null; try { messagingEventParams = broadcastParams.ParametersAs <MessagingEventParams>(); } catch (Exception exc) { mLogger.LogWarning(exc, "Failed to parse MessagingEventParams"); return; } if (string.IsNullOrWhiteSpace(messagingEventParams.EventType)) { mLogger.LogWarning("Received MessagingEventParams with empty EventType"); return; } switch (messagingEventParams.EventType.ToLower()) { case "messaging.state": OnMessagingEvent_MessageState(client, broadcastParams, messagingEventParams); break; case "messaging.receive": OnMessagingEvent_MessageReceive(client, broadcastParams, messagingEventParams); break; default: mLogger.LogDebug("Received unknown messaging EventType: {0}", messagingEventParams.EventType); break; } }
private void OnMessagingEvent_MessageReceive(Client client, BroadcastParams broadcastParams, MessagingEventParams messagingEventParams) { MessagingEventParams.ReceiveParams receiveParams = null; try { receiveParams = messagingEventParams.ParametersAs <MessagingEventParams.ReceiveParams>(); } catch (Exception exc) { mLogger.LogWarning(exc, "Failed to parse ReceiveParams"); return; } MessageReceivedHandler(messagingEventParams, receiveParams); }
private void OnMessagingEvent_MessageState(Client client, BroadcastParams broadcastParams, MessagingEventParams messagingEventParams) { MessagingEventParams.StateParams stateParams = null; try { stateParams = messagingEventParams.ParametersAs <MessagingEventParams.StateParams>(); } catch (Exception exc) { mLogger.LogWarning(exc, "Failed to parse StateParams"); return; } MessageStateChangeHandler(messagingEventParams, stateParams); }