From c94db57c5fc821c9dda1ca316808cc186c06b0cc Mon Sep 17 00:00:00 2001 From: Martijn Vos Date: Fri, 13 Dec 2024 16:32:58 +0100 Subject: [PATCH 1/9] Add Context.MessageId to RichMessage --- CM.Text/BusinessMessaging/MessageBuilder.cs | 2 +- .../Model/MultiChannel/ApplePayRequest.cs | 2 +- .../Model/MultiChannel/CarouselMessage.cs | 2 +- .../Model/MultiChannel/ContactMessage.cs | 2 +- .../Model/MultiChannel/LocationPushMessage.cs | 2 +- .../Model/MultiChannel/MediaMessage.cs | 2 +- .../Model/MultiChannel/RichContent.cs | 4 ++-- .../{IRichMessage.cs => RichMessage.cs} | 21 ++++++++++++++++++- .../Model/MultiChannel/TemplateMessage.cs | 2 +- .../Model/MultiChannel/TextMessage.cs | 2 +- .../WhatsAppInteractiveMessage.cs | 2 +- 11 files changed, 31 insertions(+), 12 deletions(-) rename CM.Text/BusinessMessaging/Model/MultiChannel/{IRichMessage.cs => RichMessage.cs} (54%) diff --git a/CM.Text/BusinessMessaging/MessageBuilder.cs b/CM.Text/BusinessMessaging/MessageBuilder.cs index 9a96f17..741d1b7 100644 --- a/CM.Text/BusinessMessaging/MessageBuilder.cs +++ b/CM.Text/BusinessMessaging/MessageBuilder.cs @@ -108,7 +108,7 @@ public MessageBuilder WithValidityPeriod(string period) /// /// /// - public MessageBuilder WithRichMessage(IRichMessage richMessage) + public MessageBuilder WithRichMessage(RichMessage richMessage) { if (_richContent == null) _richContent = new RichContent(); diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/ApplePayRequest.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/ApplePayRequest.cs index 26e35f1..9bbbcd9 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/ApplePayRequest.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/ApplePayRequest.cs @@ -5,7 +5,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// /// ApplePay request rich message /// - public class ApplePayRequest : IRichMessage + public class ApplePayRequest : RichMessage { /// /// Gets or sets the apple pay configuration. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/CarouselMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/CarouselMessage.cs index 3bb3d03..b141092 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/CarouselMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/CarouselMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// Currently only supported by / /// [PublicAPI] - public class CarouselMessage : IRichMessage + public class CarouselMessage : RichMessage { /// /// Contains the rich cards diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs index f40046c..f7bdc72 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs @@ -9,7 +9,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// See also https://developers.facebook.com/docs/whatsapp/api/messages/others#contacts /// [PublicAPI] - public class ContactMessage : IRichMessage + public class ContactMessage : RichMessage { /// /// The contacts to send. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs index 6193596..2e9f9b0 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// and . /// [PublicAPI] - public class LocationPushMessage : IRichMessage + public class LocationPushMessage : RichMessage { /// /// The location options to send. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs index b4aed6d..dd83ada 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// , and . /// [PublicAPI] - public class MediaMessage : IRichMessage + public class MediaMessage : RichMessage { /// /// Default constructor. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/RichContent.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/RichContent.cs index 01b6ff9..1fe8e31 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/RichContent.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/RichContent.cs @@ -24,7 +24,7 @@ public RichContent() /// The messages. /// [JsonPropertyName("conversation")] - public IRichMessage[] Conversation { get; set; } + public RichMessage[] Conversation { get; set; } /// /// The suggestions @@ -36,7 +36,7 @@ public RichContent() /// Adds a message, such as a or . /// /// - public void AddConversationPart(IRichMessage part) + public void AddConversationPart(RichMessage part) { if (Conversation == null) Conversation = new[] {part}; diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/IRichMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/RichMessage.cs similarity index 54% rename from CM.Text/BusinessMessaging/Model/MultiChannel/IRichMessage.cs rename to CM.Text/BusinessMessaging/Model/MultiChannel/RichMessage.cs index b773e05..69f470d 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/IRichMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/RichMessage.cs @@ -16,7 +16,26 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel [JsonDerivedType(typeof(TemplateMessage))] [JsonDerivedType(typeof(TextMessage))] [JsonDerivedType(typeof(WhatsAppInteractiveMessage))] - public interface IRichMessage + public abstract class RichMessage { + /// + /// Contextual properties applicable to all message types + /// + [JsonPropertyName("context")] + [CanBeNull] + public Context Context { get; set; } + } + + /// + /// Contextual properties applicable to all message types + /// + public class Context + { + /// + /// Message ID to which the current message is a reply + /// + [JsonPropertyName("message_id")] + [CanBeNull] + public string MessageId { get; set; } } } diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs index e7690f8..ff78eda 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs @@ -7,7 +7,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// Used to send a template message, at this moment only supported in . /// [PublicAPI] - public class TemplateMessage : IRichMessage + public class TemplateMessage : RichMessage { /// /// The Content of the WhatsApp template message diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs index 5287a68..c8774ab 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// (all channels except , and at this moment) /// [PublicAPI] - public class TextMessage : IRichMessage + public class TextMessage : RichMessage { /// /// Construct an empty text message. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs index 36132c4..2af8d3b 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// Used only in . /// [PublicAPI] - public class WhatsAppInteractiveMessage : IRichMessage + public class WhatsAppInteractiveMessage : RichMessage { /// From f16b0bab003de9681adf544eb4746e947b94a75a Mon Sep 17 00:00:00 2001 From: Martijn Vos Date: Fri, 13 Dec 2024 16:35:45 +0100 Subject: [PATCH 2/9] Update CHANGELOG.md --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f272309..4f42027 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 3.0.0 - TBD +### Changed +- Add Context.MessageId support for RichMessages +- RichMessage model is now an abstract class instead of an interface for Context.MessageId (breaking) + ## [2.9.0] - 2024-06-20 ### Changed - New global messaging endpoint From 1ac2356200d0292c48363df737b195cc22667e3a Mon Sep 17 00:00:00 2001 From: Martijn Vos Date: Fri, 13 Dec 2024 16:36:25 +0100 Subject: [PATCH 3/9] Update System.Text.Json preventing critical vulnerability --- CM.Text/CM.Text.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CM.Text/CM.Text.csproj b/CM.Text/CM.Text.csproj index 059764a..49be016 100644 --- a/CM.Text/CM.Text.csproj +++ b/CM.Text/CM.Text.csproj @@ -63,7 +63,7 @@ - + From fb52cbf70edb25a72ab0232965467e3ac72e367b Mon Sep 17 00:00:00 2001 From: Martijn Vos Date: Fri, 13 Dec 2024 17:22:26 +0100 Subject: [PATCH 4/9] Added System.Text.Json update to CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f42027..0e73eca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Add Context.MessageId support for RichMessages - RichMessage model is now an abstract class instead of an interface for Context.MessageId (breaking) +- Updated `System.Text.Json` to 8.0.5 fixing a [high impact security vulnerability](https://github.com/advisories/GHSA-hh2w-p6rv-4g7w) ## [2.9.0] - 2024-06-20 ### Changed From a86e4fbcff1e2232d26d6193d9818b22fb8cd2ad Mon Sep 17 00:00:00 2001 From: Martijn Vos Date: Fri, 13 Dec 2024 17:24:27 +0100 Subject: [PATCH 5/9] Add missing square brackets around version number in CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e73eca..d1a37bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 3.0.0 - TBD +## [3.0.0] - TBD ### Changed - Add Context.MessageId support for RichMessages - RichMessage model is now an abstract class instead of an interface for Context.MessageId (breaking) From 5d5bcfabcd54c97b89bf81fed2f6ef2152e51d90 Mon Sep 17 00:00:00 2001 From: Martijn Vos Date: Tue, 24 Dec 2024 14:42:56 +0100 Subject: [PATCH 6/9] Revert "Add Context.MessageId to RichMessage" This reverts commit c94db57c5fc821c9dda1ca316808cc186c06b0cc. --- CM.Text/BusinessMessaging/MessageBuilder.cs | 2 +- .../Model/MultiChannel/ApplePayRequest.cs | 2 +- .../Model/MultiChannel/CarouselMessage.cs | 2 +- .../Model/MultiChannel/ContactMessage.cs | 2 +- .../{RichMessage.cs => IRichMessage.cs} | 21 +------------------ .../Model/MultiChannel/LocationPushMessage.cs | 2 +- .../Model/MultiChannel/MediaMessage.cs | 2 +- .../Model/MultiChannel/RichContent.cs | 4 ++-- .../Model/MultiChannel/TemplateMessage.cs | 2 +- .../Model/MultiChannel/TextMessage.cs | 2 +- .../WhatsAppInteractiveMessage.cs | 2 +- 11 files changed, 12 insertions(+), 31 deletions(-) rename CM.Text/BusinessMessaging/Model/MultiChannel/{RichMessage.cs => IRichMessage.cs} (54%) diff --git a/CM.Text/BusinessMessaging/MessageBuilder.cs b/CM.Text/BusinessMessaging/MessageBuilder.cs index 741d1b7..9a96f17 100644 --- a/CM.Text/BusinessMessaging/MessageBuilder.cs +++ b/CM.Text/BusinessMessaging/MessageBuilder.cs @@ -108,7 +108,7 @@ public MessageBuilder WithValidityPeriod(string period) /// /// /// - public MessageBuilder WithRichMessage(RichMessage richMessage) + public MessageBuilder WithRichMessage(IRichMessage richMessage) { if (_richContent == null) _richContent = new RichContent(); diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/ApplePayRequest.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/ApplePayRequest.cs index 9bbbcd9..26e35f1 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/ApplePayRequest.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/ApplePayRequest.cs @@ -5,7 +5,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// /// ApplePay request rich message /// - public class ApplePayRequest : RichMessage + public class ApplePayRequest : IRichMessage { /// /// Gets or sets the apple pay configuration. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/CarouselMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/CarouselMessage.cs index b141092..3bb3d03 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/CarouselMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/CarouselMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// Currently only supported by / /// [PublicAPI] - public class CarouselMessage : RichMessage + public class CarouselMessage : IRichMessage { /// /// Contains the rich cards diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs index f7bdc72..f40046c 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs @@ -9,7 +9,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// See also https://developers.facebook.com/docs/whatsapp/api/messages/others#contacts /// [PublicAPI] - public class ContactMessage : RichMessage + public class ContactMessage : IRichMessage { /// /// The contacts to send. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/RichMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/IRichMessage.cs similarity index 54% rename from CM.Text/BusinessMessaging/Model/MultiChannel/RichMessage.cs rename to CM.Text/BusinessMessaging/Model/MultiChannel/IRichMessage.cs index 69f470d..b773e05 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/RichMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/IRichMessage.cs @@ -16,26 +16,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel [JsonDerivedType(typeof(TemplateMessage))] [JsonDerivedType(typeof(TextMessage))] [JsonDerivedType(typeof(WhatsAppInteractiveMessage))] - public abstract class RichMessage + public interface IRichMessage { - /// - /// Contextual properties applicable to all message types - /// - [JsonPropertyName("context")] - [CanBeNull] - public Context Context { get; set; } - } - - /// - /// Contextual properties applicable to all message types - /// - public class Context - { - /// - /// Message ID to which the current message is a reply - /// - [JsonPropertyName("message_id")] - [CanBeNull] - public string MessageId { get; set; } } } diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs index 2e9f9b0..6193596 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// and . /// [PublicAPI] - public class LocationPushMessage : RichMessage + public class LocationPushMessage : IRichMessage { /// /// The location options to send. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs index dd83ada..b4aed6d 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// , and . /// [PublicAPI] - public class MediaMessage : RichMessage + public class MediaMessage : IRichMessage { /// /// Default constructor. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/RichContent.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/RichContent.cs index 1fe8e31..01b6ff9 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/RichContent.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/RichContent.cs @@ -24,7 +24,7 @@ public RichContent() /// The messages. /// [JsonPropertyName("conversation")] - public RichMessage[] Conversation { get; set; } + public IRichMessage[] Conversation { get; set; } /// /// The suggestions @@ -36,7 +36,7 @@ public RichContent() /// Adds a message, such as a or . /// /// - public void AddConversationPart(RichMessage part) + public void AddConversationPart(IRichMessage part) { if (Conversation == null) Conversation = new[] {part}; diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs index ff78eda..e7690f8 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs @@ -7,7 +7,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// Used to send a template message, at this moment only supported in . /// [PublicAPI] - public class TemplateMessage : RichMessage + public class TemplateMessage : IRichMessage { /// /// The Content of the WhatsApp template message diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs index c8774ab..5287a68 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// (all channels except , and at this moment) /// [PublicAPI] - public class TextMessage : RichMessage + public class TextMessage : IRichMessage { /// /// Construct an empty text message. diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs index 2af8d3b..36132c4 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs @@ -8,7 +8,7 @@ namespace CM.Text.BusinessMessaging.Model.MultiChannel /// Used only in . /// [PublicAPI] - public class WhatsAppInteractiveMessage : RichMessage + public class WhatsAppInteractiveMessage : IRichMessage { /// From e968d9d73178ed767e4f1793e6c2011cfb2fd7ab Mon Sep 17 00:00:00 2001 From: Martijn Vos Date: Tue, 24 Dec 2024 15:38:33 +0100 Subject: [PATCH 7/9] Rewrite according to feedback --- CHANGELOG.md | 5 ++--- .../Model/MultiChannel/ContactMessage.cs | 7 +++++++ .../Model/MultiChannel/LocationPushMessage.cs | 7 +++++++ .../Model/MultiChannel/MediaMessage.cs | 7 +++++++ .../Model/MultiChannel/MessageContext.cs | 19 +++++++++++++++++++ .../Model/MultiChannel/TemplateMessage.cs | 7 +++++++ .../Model/MultiChannel/TextMessage.cs | 7 +++++++ .../WhatsAppInteractiveMessage.cs | 7 +++++++ 8 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 CM.Text/BusinessMessaging/Model/MultiChannel/MessageContext.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index d1a37bf..c91b06a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [3.0.0] - TBD +## [2.10.0] - TBD ### Changed -- Add Context.MessageId support for RichMessages -- RichMessage model is now an abstract class instead of an interface for Context.MessageId (breaking) +- Add Context.MessageId on RichMessages supporting WhatsApp for referencing a previous message - Updated `System.Text.Json` to 8.0.5 fixing a [high impact security vulnerability](https://github.com/advisories/GHSA-hh2w-p6rv-4g7w) ## [2.9.0] - 2024-06-20 diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs index f40046c..70984af 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/ContactMessage.cs @@ -18,6 +18,13 @@ public class ContactMessage : IRichMessage /// [JsonPropertyName("contacts")] public Contact[] Contacts { get; set; } + + /// + /// Contextual properties of the message + /// + [JsonPropertyName("context")] + [CanBeNull] + public MessageContext MessageContext { get; set; } } /// diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs index 6193596..bc31fed 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/LocationPushMessage.cs @@ -15,5 +15,12 @@ public class LocationPushMessage : IRichMessage /// [JsonPropertyName("location")] public ViewLocationOptions Location { get; set; } + + /// + /// Contextual properties of the message. Only applicable to + /// + [JsonPropertyName("context")] + [CanBeNull] + public MessageContext MessageContext { get; set; } } } diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs index b4aed6d..b866de9 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/MediaMessage.cs @@ -33,5 +33,12 @@ public MediaMessage(string mediaName, string mediaUri, string mimeType) /// [JsonPropertyName("media")] public MediaContent Media { get; set; } + + /// + /// Contextual properties of the message. Only applicable to + /// + [JsonPropertyName("context")] + [CanBeNull] + public MessageContext MessageContext { get; set; } } } diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/MessageContext.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/MessageContext.cs new file mode 100644 index 0000000..dbf82b7 --- /dev/null +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/MessageContext.cs @@ -0,0 +1,19 @@ +using System.Text.Json.Serialization; +using JetBrains.Annotations; + +namespace CM.Text.BusinessMessaging.Model.MultiChannel +{ + /// + /// Contextual properties of the message. Currently only applicable to + /// Docs: https://developers.cm.com/messaging/docs/whatsapp-inbound#mt-replies-mo + /// + public class MessageContext + { + /// + /// Message ID to which the current message is a reply + /// + [JsonPropertyName("message_id")] + [CanBeNull] + public string MessageId { get; set; } + } +} diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs index e7690f8..bfeffaa 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/TemplateMessage.cs @@ -17,5 +17,12 @@ public class TemplateMessage : IRichMessage /// [JsonPropertyName("template")] public TemplateMessageContent Content { get; set; } + + /// + /// Contextual properties of the message + /// + [JsonPropertyName("context")] + [CanBeNull] + public MessageContext MessageContext { get; set; } } } diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs index 5287a68..43b4f9d 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/TextMessage.cs @@ -44,5 +44,12 @@ public TextMessage(string text) /// [JsonPropertyName("suggestions")] public SuggestionBase[] Suggestions { get; set; } + + /// + /// Contextual properties of the message. Currently only applicable to + /// + [JsonPropertyName("context")] + [CanBeNull] + public MessageContext MessageContext { get; set; } } } diff --git a/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs b/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs index 36132c4..dc3cd8d 100644 --- a/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs +++ b/CM.Text/BusinessMessaging/Model/MultiChannel/WhatsAppInteractiveMessage.cs @@ -16,6 +16,13 @@ public class WhatsAppInteractiveMessage : IRichMessage /// [JsonPropertyName("interactive")] public WhatsAppInteractiveContent whatsAppInteractiveContent { get; set; } + + /// + /// Contextual properties of the message + /// + [JsonPropertyName("context")] + [CanBeNull] + public MessageContext MessageContext { get; set; } } /// From f73b4043ec317affb6219236392dbd6a51a8f18a Mon Sep 17 00:00:00 2001 From: Martijn Vos Date: Mon, 30 Dec 2024 17:02:31 +0100 Subject: [PATCH 8/9] Update versions in .csproj to 2.11.0 --- CM.Text/CM.Text.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CM.Text/CM.Text.csproj b/CM.Text/CM.Text.csproj index a9ff480..f8d9970 100644 --- a/CM.Text/CM.Text.csproj +++ b/CM.Text/CM.Text.csproj @@ -13,12 +13,12 @@ LICENSE icon.png $([System.IO.File]::ReadAllText("$(MSBuildProjectDirectory)/../CHANGELOG.md")) - 2.10.0 + 2.11.0 https://github.com/cmdotcom/text-sdk-dotnet en true - 2.10.0 - 2.10.0 + 2.11.0 + 2.11.0 True From 36292d0835511589b99e431a4d2be754ce0002bf Mon Sep 17 00:00:00 2001 From: Martijn Vos Date: Fri, 10 Jan 2025 16:38:57 +0100 Subject: [PATCH 9/9] Update CHANGELOG date and use "Added" section instead of "Changed" --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5bf3c1..12b6f76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [2.11.0] - TBD -### Changed -- Add Context.MessageId on RichMessages supporting WhatsApp for referencing a previous message +## [2.11.0] - 2025-01-10 +### Added +- Context.MessageId on RichMessages supporting WhatsApp for referencing a previous message ## [2.10.0] - 2024-12-30 ### Added