private static Activity CreateBaseDeliveryReportActivity(InfobipIncomingResult response) { var activity = ConvertToEvent(response); activity.Name = InfobipReportTypes.DELIVERY; activity.Timestamp = response.DoneAt; return(activity); }
private void VerifyResultCoreProperties(InfobipIncomingResult result, Activity activity) { Assert.Equal(result.MessageId, activity.Id); Assert.Equal(result.From, activity.From.Id); Assert.Equal(result.To, activity.Recipient.Id); Assert.Equal(result.From, activity.Conversation.Id); Assert.Equal(result, activity.ChannelData); Assert.Equal(result.ReceivedAt, activity.Timestamp); }
public static Activity Convert(InfobipIncomingResult result) { var activity = ConvertToMessage(result); activity.ChannelId = InfobipChannel.Sms; activity.Text = result.CleanText; activity.TextFormat = TextFormatTypes.Plain; return(activity); }
private static void HandleCallbackData(InfobipIncomingResult response, Activity activity) { if (string.IsNullOrWhiteSpace(response.CallbackData)) { return; } var serialized = JsonConvert.DeserializeObject <Dictionary <string, string> >(response.CallbackData); activity.AddInfobipCallbackData(serialized); }
private static void VerifyResultCoreProperties(InfobipIncomingResult result, Activity activity) { var timestamp = result.SeenAt ?? result.DoneAt; Assert.Equal(result.MessageId, activity.Id); Assert.Equal(result.From, activity.From.Id); Assert.Equal(result.To, activity.Recipient.Id); Assert.Equal(result.To, activity.Conversation.Id); Assert.Equal(result, activity.ChannelData); Assert.Equal(timestamp, activity.Timestamp); }
private async Task <IActivity> ConvertMessageToMessageActivity(InfobipIncomingResult response) { var activity = Activity.CreateMessageActivity(); activity.Id = response.MessageId; activity.ChannelId = InfobipConstants.ChannelName; activity.ChannelData = response; activity.Recipient = new ChannelAccount { Id = response.To }; activity.From = new ChannelAccount { Id = response.From }; activity.Conversation = new ConversationAccount { IsGroup = false, Id = response.From }; activity.Timestamp = response.ReceivedAt; if (response.Message.Type == InfobipIncomingMessageTypes.Text) { activity.Text = response.Message.Text; activity.TextFormat = TextFormatTypes.Plain; } else if (response.Message.Type == InfobipIncomingMessageTypes.Location) { activity.Entities.Add(new GeoCoordinates { Latitude = response.Message.Latitude, Longitude = response.Message.Longitude }); } else if (response.Message.IsMedia()) { var contentType = await _infobipClient.GetContentTypeAsync(response.Message.Url.AbsoluteUri).ConfigureAwait(false); activity.Attachments = new List <Attachment> { new Attachment { ContentType = contentType, ContentUrl = response.Message.Url.AbsoluteUri, Name = response.Message.Caption } }; } else { _logger.Log(LogLevel.Information, $"Received MO message: {response.MessageId} has unsupported message type"); return(null); } return(activity); }
protected static Activity ConvertToEvent(InfobipIncomingResult result) { var activity = Convert(result); activity.Type = ActivityTypes.Event; activity.Conversation = new ConversationAccount { Id = result.To }; activity.Text = null; return(activity); }
private void VerifyResultCoreProperties(InfobipIncomingResult result, Activity activity, bool isEvent = false, string overrideFromId = null) { var conversationId = isEvent ? result.To : result.From; var timestamp = isEvent ? (result.SeenAt ?? result.DoneAt) : result.ReceivedAt; Assert.Equal(result.MessageId, activity.Id); Assert.Equal(overrideFromId ?? result.From, activity.From.Id); Assert.Equal(result.To, activity.Recipient.Id); Assert.Equal(conversationId, activity.Conversation.Id); Assert.Equal(result, activity.ChannelData); Assert.Equal(timestamp, activity.Timestamp); }
public static Activity Convert(InfobipIncomingResult result) { var activity = ConvertToEvent(result); activity.Name = InfobipReportTypes.SEEN; activity.Timestamp = result.SeenAt; activity.ChannelId = InfobipChannel.WhatsApp; activity.From = new ChannelAccount { Id = result.From }; return(activity); }
private static Activity Convert(InfobipIncomingResult result) { return(new Activity { Id = result.MessageId, Recipient = new ChannelAccount { Id = result.To }, ChannelData = result, Entities = new List <Entity>(), Attachments = new List <Attachment>() }); }
protected static Activity ConvertToMessage(InfobipIncomingResult result) { var activity = Convert(result); activity.Type = ActivityTypes.Message; activity.From = new ChannelAccount { Id = result.From }; activity.Conversation = new ConversationAccount { IsGroup = false, Id = result.From }; activity.Timestamp = result.ReceivedAt; return(activity); }
public static async Task <Activity> Convert(InfobipIncomingResult result, IInfobipClient infobipClient) { var activity = ConvertToMessage(result); activity.ChannelId = InfobipChannel.WhatsApp; if (result.Message.Type == InfobipIncomingMessageTypes.Text) { activity.Text = result.Message.Text; activity.TextFormat = TextFormatTypes.Plain; } else if (result.Message.Type == InfobipIncomingMessageTypes.Location) { activity.Entities.Add(new GeoCoordinates { Latitude = result.Message.Latitude, Longitude = result.Message.Longitude }); } else if (result.Message.IsMedia()) { var contentType = await infobipClient.GetContentTypeAsync(result.Message.Url.AbsoluteUri).ConfigureAwait(false); activity.Attachments = new List <Attachment> { new Attachment { ContentType = contentType, ContentUrl = result.Message.Url.AbsoluteUri, Name = result.Message.Caption } }; } else { return(null); } return(activity); }
public static Activity Convert(InfobipIncomingResult result, InfobipAdapterOptions adapterOptions) { var activity = CreateBaseDeliveryReportActivity(result); var channel = GetInfobipChannelFromDeliveryReportMessage(result.Channel); switch (channel) { case InfobipChannel.Sms: activity.ChannelId = InfobipChannel.Sms; activity.From = new ChannelAccount { Id = adapterOptions.InfobipSmsNumber }; break; case InfobipChannel.WhatsApp: activity.ChannelId = InfobipChannel.WhatsApp; activity.From = new ChannelAccount { Id = adapterOptions.InfobipWhatsAppNumber }; break; } return(activity); }
private async Task <Activity> ConvertToActivity(InfobipIncomingResult response) { if (response.Error != null) { //error codes - https://dev-old.infobip.com/getting-started/response-status-and-error-codes if (response.Error.Id > 0) { throw new Exception($"{response.Error.Name} {response.Error.Description}"); } } if (response.IsDeliveryReport()) { _logger.Log(LogLevel.Debug, $"Received DLR notification: MessageId={response.MessageId}, " + $"DoneAt={response.DoneAt}, SentAt={response.SentAt}"); var activity = new Activity { Type = ActivityTypes.Event, Id = response.MessageId, Name = InfobipReportTypes.DELIVERY, Timestamp = response.DoneAt, ChannelId = InfobipConstants.ChannelName, Conversation = new ConversationAccount { Id = response.To }, From = new ChannelAccount { Id = _adapterOptions.InfobipWhatsAppNumber }, Recipient = new ChannelAccount { Id = response.To }, Text = null, ChannelData = response, Entities = new List <Entity>() }; if (!string.IsNullOrWhiteSpace(response.CallbackData)) { var serialized = JsonConvert.DeserializeObject <Dictionary <string, string> >(response.CallbackData); activity.Entities.Add(new InfobipCallbackData(serialized)); } return(activity); } if (response.IsSeenReport()) { _logger.Log(LogLevel.Debug, $"Received SEEN notification: MessageId={response.MessageId}, " + $"SeenAt={response.SeenAt}, SentAt={response.SentAt}"); return(new Activity { Type = ActivityTypes.Event, Id = response.MessageId, Name = InfobipReportTypes.SEEN, Timestamp = response.SeenAt, ChannelId = InfobipConstants.ChannelName, Conversation = new ConversationAccount { Id = response.To }, From = new ChannelAccount { Id = response.From }, Recipient = new ChannelAccount { Id = response.To }, Text = null, ChannelData = response }); } if (response.IsMessage()) { _logger.Log(LogLevel.Debug, $"MO message received: MessageId={response.MessageId}, " + $"IntegrationType={response.IntegrationType}, " + $"receivedAt={response.ReceivedAt}"); // handle any type of WA message sent by subscriber, can be: TEXT, IMAGE, DOCUMENT, LOCATION, CONTACT, VIDEO // - https://dev-old.infobip.com/whatsapp-business-messaging/incoming-whatsapp-messages return((Activity) await ConvertMessageToMessageActivity(response)); } throw new Exception("Unsupported message received - not DLR, SEEN or MO message: \n" + JsonConvert.SerializeObject(response, Formatting.Indented)); }
private async Task <Activity> ConvertToActivity(InfobipIncomingResult response) { if (response.Error != null) { //error codes - https://dev-old.infobip.com/getting-started/response-status-and-error-codes if (response.Error.Id > 0) { throw new Exception($"{response.Error.Name} {response.Error.Description}"); } } if (response.IsDeliveryReport()) { _logger.Log(LogLevel.Debug, $"Received DLR notification: MessageId={response.MessageId}, " + $"DoneAt={response.DoneAt}, SentAt={response.SentAt}, Channel={response.Channel}"); var activity = InfobipDeliveryReportToActivity.Convert(response, _adapterOptions); if (string.IsNullOrEmpty(activity.ChannelId)) { _logger.Log(LogLevel.Error, $"{response.Channel} is not supported channel"); } HandleCallbackData(response, activity); return(activity); } if (response.IsSeenReport()) { _logger.Log(LogLevel.Debug, $"Received SEEN notification: MessageId={response.MessageId}, " + $"SeenAt={response.SeenAt}, SentAt={response.SentAt}"); return(InfobipSeenReportToActivity.Convert(response)); } if (response.IsSmsMessage()) { _logger.Log(LogLevel.Debug, $"MO message received: MessageId={response.MessageId}, " + $"IntegrationType=SMS, " + $"receivedAt={response.ReceivedAt}"); var activity = InfobipSmsToActivity.Convert(response); HandleCallbackData(response, activity); return(activity); } if (response.IsWhatsAppMessage()) { _logger.Log(LogLevel.Debug, $"MO message received: MessageId={response.MessageId}, " + $"IntegrationType={response.IntegrationType}, " + $"receivedAt={response.ReceivedAt}"); var activity = await InfobipWhatsAppToActivity.Convert(response, _infobipClient); if (activity == null) { _logger.Log(LogLevel.Information, $"Received MO message: {response.MessageId} has unsupported message type"); return(null); } HandleCallbackData(response, activity); return(activity); } throw new Exception("Unsupported message received - not DLR, SEEN or MO message: \n" + JsonConvert.SerializeObject(response, Formatting.Indented)); }