public async Task <InfobipResponseMessage> SendMessageAsync(InfobipOmniFailoverMessage infobipMessage, CancellationToken cancellationToken = default) { /* Please don't remove or change query parameters! */ /* These parameters are used by Infobip customer care tools to identify MS Bot API requests so we could provide better and faster support to our clients. */ var queryParams = new Dictionary <string, string> { { "piIntegrator", "89" }, { "piPlatform", "r5rp" } }; var request = new HttpRequestMessage { RequestUri = new Uri(QueryHelpers.AddQueryString($"{_infobipOptions.InfobipApiBaseUrl}{UrlAdvancedPart}", queryParams), UriKind.RelativeOrAbsolute), Method = HttpMethod.Post }; request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var payload = infobipMessage.ToInfobipOmniFailoverOmniMessageJson(); if (!string.IsNullOrEmpty(payload)) { request.Content = new StringContent(payload, Encoding.UTF8, "application/json"); } var res = await _infobipHttpClient.SendAsync(request, cancellationToken).ConfigureAwait(false); res.EnsureSuccessStatusCode(); var responseBody = await res.Content.ReadAsStringAsync().ConfigureAwait(false); var response = responseBody.FromInfobipOmniResponseJson(); return(response?.Messages?.FirstOrDefault()); }
private void CheckLocationMessage(InfobipOmniFailoverMessage omniFailoverMessage, Place place) { Assert.Equal(omniFailoverMessage.ScenarioKey, SCENARIO_KEY); CheckDestinations(omniFailoverMessage.Destinations); Assert.NotNull(place); var geoCoordinate = JsonConvert.DeserializeObject <GeoCoordinates>(JsonConvert.SerializeObject(place.Geo)); Assert.NotNull(geoCoordinate); var whatsAppMessage = omniFailoverMessage.WhatsApp; Assert.NotNull(whatsAppMessage); Assert.Null(whatsAppMessage.Text); Assert.Null(whatsAppMessage.FileUrl); Assert.Equal(whatsAppMessage.LocationName, geoCoordinate.Name); Assert.Null(whatsAppMessage.AudioUrl); Assert.Equal(whatsAppMessage.Address, place.Address); Assert.Equal(whatsAppMessage.Latitude, geoCoordinate.Latitude); Assert.Equal(whatsAppMessage.Longitude, geoCoordinate.Longitude); Assert.Null(whatsAppMessage.ImageUrl); Assert.Null(whatsAppMessage.VideoUrl); Assert.Null(whatsAppMessage.TemplateNamespace); Assert.Null(whatsAppMessage.TemplateData); Assert.Null(whatsAppMessage.TemplateName); Assert.Null(whatsAppMessage.Language); Assert.Null(whatsAppMessage.MediaTemplateData); }
private static void SetMedaUrl(string contentType, InfobipOmniFailoverMessage message, Attachment attachment) { if (contentType.Contains("audio")) { message.WhatsApp.AudioUrl = attachment.ContentUrl; } else if (contentType.Contains("image")) { message.WhatsApp.ImageUrl = attachment.ContentUrl; } else if (contentType.Contains("video")) { message.WhatsApp.VideoUrl = attachment.ContentUrl; } else { message.WhatsApp.FileUrl = attachment.ContentUrl; } }
private void CheckAudioMessage(InfobipOmniFailoverMessage omniFailoverMessage, Attachment attachment) { var whatsAppMessage = omniFailoverMessage.WhatsApp; Assert.NotNull(whatsAppMessage); Assert.Null(whatsAppMessage.Text); Assert.Null(whatsAppMessage.FileUrl); Assert.Null(whatsAppMessage.LocationName); Assert.Equal(whatsAppMessage.AudioUrl, attachment.ContentUrl); Assert.Null(whatsAppMessage.Address); Assert.Null(whatsAppMessage.Latitude); Assert.Null(whatsAppMessage.Longitude); Assert.Null(whatsAppMessage.ImageUrl); Assert.Null(whatsAppMessage.VideoUrl); Assert.Null(whatsAppMessage.TemplateNamespace); Assert.Null(whatsAppMessage.TemplateData); Assert.Null(whatsAppMessage.TemplateName); Assert.Null(whatsAppMessage.Language); Assert.Null(whatsAppMessage.MediaTemplateData); }
public static string ToInfobipOmniFailoverOmniMessageJson(this InfobipOmniFailoverMessage self) => JsonConvert.SerializeObject(self, Settings);