From 84349213be857fb2b64643232a320ab7448e00eb Mon Sep 17 00:00:00 2001 From: Claudinei Nascimento Date: Thu, 3 Nov 2022 14:06:07 -0300 Subject: [PATCH] Implement send video template message --- .../Controllers/HomeController.cs | 62 +++++++++++++++++++ .../ViewModel/SendTemplateMessageViewModel.cs | 1 + .../Home/SendWhatsAppTemplateMessage.cshtml | 6 ++ .../Interfaces/IWhatsAppBusinessClient.cs | 8 +++ .../WhatsAppBusinessClient.cs | 12 ++++ 5 files changed, 89 insertions(+) diff --git a/Samples/WhatsAppBusinessCloudAPI.Web/Controllers/HomeController.cs b/Samples/WhatsAppBusinessCloudAPI.Web/Controllers/HomeController.cs index 0bc3a27..94d4b7d 100644 --- a/Samples/WhatsAppBusinessCloudAPI.Web/Controllers/HomeController.cs +++ b/Samples/WhatsAppBusinessCloudAPI.Web/Controllers/HomeController.cs @@ -668,6 +668,68 @@ public async Task SendWhatsAppDocumentTemplateMessageWithParamete } } + [HttpPost] + [ValidateAntiForgeryToken] + public async Task SendWhatsAppVideoTemplateMessageWithParameters(SendTemplateMessageViewModel sendTemplateMessageViewModel) + { + try + { + VideoTemplateMessageRequest videoTemplateMessage = new(); + videoTemplateMessage.To = sendTemplateMessageViewModel.RecipientPhoneNumber; + videoTemplateMessage.Template = new(); + videoTemplateMessage.Template.Name = sendTemplateMessageViewModel.TemplateName; + videoTemplateMessage.Template.Language = new(); + videoTemplateMessage.Template.Language.Code = LanguageCode.English_US; + videoTemplateMessage.Template.Components = new List() + { + new VideoMessageComponent() + { + Type = "header", + Parameters = new List() + { + new VideoMessageParameter() + { + Type = "video", + Video = new Video() + { + //Id = sendTemplateMessageViewModel.MediaId, + Link = sendTemplateMessageViewModel.LinkUrl // Link point where your document can be downloaded or retrieved by WhatsApp + } + } + }, + }, + new VideoMessageComponent() + { + Type = "body", + Parameters = new List() + { + new VideoMessageParameter() + { + Type = "text", + Text = "Video Information" + }, + } + } + }; + + var results = await _whatsAppBusinessClient.SendVideoAttachmentTemplateMessageAsync(videoTemplateMessage); + + if (results != null) + { + return RedirectToAction(nameof(Index)); + } + else + { + return RedirectToAction(nameof(SendWhatsAppTemplateMessage)); + } + } + catch (WhatsappBusinessCloudAPIException ex) + { + _logger.LogError(ex, ex.Message); + return RedirectToAction(nameof(SendWhatsAppTemplateMessage)); + } + } + public IActionResult SendWhatsAppContactMessage() { return View(); diff --git a/Samples/WhatsAppBusinessCloudAPI.Web/ViewModel/SendTemplateMessageViewModel.cs b/Samples/WhatsAppBusinessCloudAPI.Web/ViewModel/SendTemplateMessageViewModel.cs index 27974a3..50ca7d8 100644 --- a/Samples/WhatsAppBusinessCloudAPI.Web/ViewModel/SendTemplateMessageViewModel.cs +++ b/Samples/WhatsAppBusinessCloudAPI.Web/ViewModel/SendTemplateMessageViewModel.cs @@ -5,5 +5,6 @@ public class SendTemplateMessageViewModel public string RecipientPhoneNumber { get; set; } public string TemplateName { get; set; } public string MediaId { get; set; } + public string LinkUrl { get; set; } } } diff --git a/Samples/WhatsAppBusinessCloudAPI.Web/Views/Home/SendWhatsAppTemplateMessage.cshtml b/Samples/WhatsAppBusinessCloudAPI.Web/Views/Home/SendWhatsAppTemplateMessage.cshtml index 6633173..1ef725f 100644 --- a/Samples/WhatsAppBusinessCloudAPI.Web/Views/Home/SendWhatsAppTemplateMessage.cshtml +++ b/Samples/WhatsAppBusinessCloudAPI.Web/Views/Home/SendWhatsAppTemplateMessage.cshtml @@ -24,12 +24,18 @@ +
+ + + +
+
diff --git a/WhatsappBusiness.CloudApi/Interfaces/IWhatsAppBusinessClient.cs b/WhatsappBusiness.CloudApi/Interfaces/IWhatsAppBusinessClient.cs index f6f4e1c..e54c187 100644 --- a/WhatsappBusiness.CloudApi/Interfaces/IWhatsAppBusinessClient.cs +++ b/WhatsappBusiness.CloudApi/Interfaces/IWhatsAppBusinessClient.cs @@ -584,6 +584,14 @@ public interface IWhatsAppBusinessClient /// WhatsAppResponse Task SendVideoAttachmentMessageByIdAsync(VideoMessageByIdRequest videoMessage, CancellationToken cancellationToken = default); + /// + /// Send Video Message by Template + /// + /// VideoTemplateMessageRequest object + /// Cancellation token + /// WhatsAppResponse + Task SendVideoAttachmentTemplateMessageAsync(VideoTemplateMessageRequest videoTemplateMessageRequest, CancellationToken cancellationToken = default); + /// /// Send Video Message by Media Id /// diff --git a/WhatsappBusiness.CloudApi/WhatsAppBusinessClient.cs b/WhatsappBusiness.CloudApi/WhatsAppBusinessClient.cs index 24e923b..d736760 100644 --- a/WhatsappBusiness.CloudApi/WhatsAppBusinessClient.cs +++ b/WhatsappBusiness.CloudApi/WhatsAppBusinessClient.cs @@ -955,6 +955,18 @@ public async Task SendVideoAttachmentMessageByIdAsync(VideoMes return await WhatsAppBusinessPostAsync(videoMessage, formattedWhatsAppEndpoint, cancellationToken); } + /// + /// Send Video Template Message + /// + /// VideoTemplateMessageRequest Object + /// Cancellation token + /// WhatsAppResponse + public async Task SendVideoAttachmentTemplateMessageAsync(VideoTemplateMessageRequest videoTemplateMessageRequest, CancellationToken cancellationToken = default) + { + var formattedWhatsAppEndpoint = WhatsAppBusinessRequestEndpoint.SendMessage.Replace("{{Phone-Number-ID}}", _whatsAppConfig.WhatsAppBusinessPhoneNumberId); + return await WhatsAppBusinessPostAsync(videoTemplateMessageRequest, formattedWhatsAppEndpoint, cancellationToken); + } + /// /// Send Video Message using hyperlink ///