Skip to content

Commit 32d5fc0

Browse files
authored
Merge pull request #317 from iceljc/features/refine-rich-type
refine rich type and template type
2 parents f86f437 + 9877f1c commit 32d5fc0

File tree

13 files changed

+96
-28
lines changed

13 files changed

+96
-28
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace BotSharp.Abstraction.Messaging.Enums;
2+
3+
public static class RichTypeEnum
4+
{
5+
public const string ButtonTemplate = "button_template";
6+
public const string MultiSelectTemplate = "multi-select_template";
7+
public const string CouponTemplate = "coupon_template";
8+
public const string GenericTemplate = "generic_template";
9+
public const string QuickReply = "quick_reply";
10+
public const string Text = "text";
11+
public const string Attachment = "attachment";
12+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace BotSharp.Abstraction.Messaging.Enums;
2+
3+
public static class TemplateTypeEnum
4+
{
5+
public const string Button = "button";
6+
public const string Coupon = "coupon";
7+
public const string Generic = "generic";
8+
public const string MultiSelect = "multi-select";
9+
public const string Product = "product";
10+
}

src/Infrastructure/BotSharp.Abstraction/Messaging/JsonConverters/RichContentJsonConverter .cs

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using BotSharp.Abstraction.Messaging.Enums;
2+
using BotSharp.Abstraction.Messaging.Models.RichContent;
13
using BotSharp.Abstraction.Messaging.Models.RichContent.Template;
24
using System.Text.Json;
35

@@ -13,13 +15,29 @@ public class RichContentJsonConverter : JsonConverter<IRichMessage>
1315
JsonElement element;
1416
object? res = null;
1517

16-
if (root.TryGetProperty("buttons", out element))
18+
if (root.TryGetProperty("rich_type", out element))
1719
{
18-
res = JsonSerializer.Deserialize<ButtonTemplateMessage>(jsonText, options);
19-
}
20-
else if (root.TryGetProperty("options", out element))
21-
{
22-
res = JsonSerializer.Deserialize<MultiSelectTemplateMessage>(jsonText, options);
20+
var richType = element.GetString();
21+
if (richType == RichTypeEnum.ButtonTemplate)
22+
{
23+
res = JsonSerializer.Deserialize<ButtonTemplateMessage>(jsonText, options);
24+
}
25+
else if (richType == RichTypeEnum.MultiSelectTemplate)
26+
{
27+
res = JsonSerializer.Deserialize<MultiSelectTemplateMessage>(jsonText, options);
28+
}
29+
else if (richType == RichTypeEnum.QuickReply)
30+
{
31+
res = JsonSerializer.Deserialize<QuickReplyMessage>(jsonText, options);
32+
}
33+
else if (richType == RichTypeEnum.CouponTemplate)
34+
{
35+
res = JsonSerializer.Deserialize<CouponTemplateMessage>(jsonText, options);
36+
}
37+
else if (richType == RichTypeEnum.Text)
38+
{
39+
res = JsonSerializer.Deserialize<TextMessage>(jsonText, options);
40+
}
2341
}
2442

2543
return res as IRichMessage;

src/Infrastructure/BotSharp.Abstraction/Messaging/JsonConverters/TemplateMessageJsonConverter.cs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using BotSharp.Abstraction.Messaging.Enums;
12
using BotSharp.Abstraction.Messaging.Models.RichContent.Template;
23
using System.Text.Json;
34

@@ -13,13 +14,25 @@ public class TemplateMessageJsonConverter : JsonConverter<ITemplateMessage>
1314
JsonElement element;
1415
object? res = null;
1516

16-
if (root.TryGetProperty("buttons", out element))
17+
if (root.TryGetProperty("template_type", out element))
1718
{
18-
res = JsonSerializer.Deserialize<ButtonTemplateMessage>(jsonText, options);
19-
}
20-
else if (root.TryGetProperty("options", out element))
21-
{
22-
res = JsonSerializer.Deserialize<MultiSelectTemplateMessage>(jsonText, options);
19+
var templateType = element.GetString();
20+
if (templateType == TemplateTypeEnum.Button)
21+
{
22+
res = JsonSerializer.Deserialize<ButtonTemplateMessage>(jsonText, options);
23+
}
24+
else if (templateType == TemplateTypeEnum.MultiSelect)
25+
{
26+
res = JsonSerializer.Deserialize<MultiSelectTemplateMessage>(jsonText, options);
27+
}
28+
else if (templateType == TemplateTypeEnum.Coupon)
29+
{
30+
res = JsonSerializer.Deserialize<CouponTemplateMessage>(jsonText, options);
31+
}
32+
else if (templateType == TemplateTypeEnum.Product)
33+
{
34+
res = JsonSerializer.Deserialize<ProductTemplateMessage>(jsonText, options);
35+
}
2336
}
2437

2538
return res as ITemplateMessage;

src/Infrastructure/BotSharp.Abstraction/Messaging/Models/RichContent/QuickReplyMessage.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
using BotSharp.Abstraction.Messaging.Enums;
2+
13
namespace BotSharp.Abstraction.Messaging.Models.RichContent;
24

35
public class QuickReplyMessage : IRichMessage
46
{
57
[JsonPropertyName("rich_type")]
6-
public string RichType => "quick_reply";
8+
public string RichType => RichTypeEnum.QuickReply;
79
public string Text { get; set; } = string.Empty;
810

911
[JsonPropertyName("quick_replies")]

src/Infrastructure/BotSharp.Abstraction/Messaging/Models/RichContent/Template/ButtonTemplateMessage.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using BotSharp.Abstraction.Messaging.Enums;
2+
13
namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template;
24

35
/// <summary>
@@ -6,13 +8,13 @@ namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template;
68
public class ButtonTemplateMessage : IRichMessage, ITemplateMessage
79
{
810
[JsonPropertyName("rich_type")]
9-
public string RichType => "button_template";
11+
public string RichType => RichTypeEnum.ButtonTemplate;
1012

1113
[JsonPropertyName("text")]
1214
public string Text { get; set; } = string.Empty;
1315

1416
[JsonPropertyName("template_type")]
15-
public string TemplateType => "button";
17+
public string TemplateType => TemplateTypeEnum.Button;
1618

1719
[JsonPropertyName("buttons")]
1820
public ButtonElement[] Buttons { get; set; } = new ButtonElement[0];

src/Infrastructure/BotSharp.Abstraction/Messaging/Models/RichContent/Template/CouponTemplateMessage.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using BotSharp.Abstraction.Messaging.Enums;
2+
13
namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template;
24

35
/// <summary>
@@ -7,14 +9,14 @@ namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template;
79
public class CouponTemplateMessage : IRichMessage, ITemplateMessage
810
{
911
[JsonPropertyName("rich_type")]
10-
public string RichType => "coupon_template";
12+
public string RichType => RichTypeEnum.CouponTemplate;
1113
[JsonIgnore]
1214
public string Text { get; set; }
1315
public string Title { get; set; }
1416
public string Subtitle { get; set; }
1517

1618
[JsonPropertyName("template_type")]
17-
public string TemplateType => "coupon";
19+
public string TemplateType => TemplateTypeEnum.Coupon;
1820

1921
[JsonPropertyName("coupon_code")]
2022
public string CouponCode { get; set; }

src/Infrastructure/BotSharp.Abstraction/Messaging/Models/RichContent/Template/GenericTemplateMessage.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1+
using BotSharp.Abstraction.Messaging.Enums;
2+
13
namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template;
24

35
public class GenericTemplateMessage<T> : IRichMessage, ITemplateMessage
46
{
57
[JsonPropertyName("rich_type")]
6-
public string RichType => "generic_template";
8+
public string RichType => RichTypeEnum.GenericTemplate;
79

810
[JsonIgnore]
911
public string Text { get; set; } = string.Empty;
1012

1113
[JsonPropertyName("template_type")]
12-
public string TemplateType => "generic";
14+
public string TemplateType => TemplateTypeEnum.Generic;
1315

1416
[JsonPropertyName("elements")]
1517
public List<T> Elements { get; set; } = new List<T>();

src/Infrastructure/BotSharp.Abstraction/Messaging/Models/RichContent/Template/MultiSelectTemplateMessage.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1+
using BotSharp.Abstraction.Messaging.Enums;
2+
13
namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template;
24

35
public class MultiSelectTemplateMessage : IRichMessage, ITemplateMessage
46
{
57
[JsonPropertyName("rich_type")]
6-
public string RichType => "multi-select_template";
8+
public string RichType => RichTypeEnum.MultiSelectTemplate;
79

810
public string Text { get; set; } = string.Empty;
911

1012
[JsonPropertyName("template_type")]
11-
public string TemplateType => "multi-select";
13+
public string TemplateType => TemplateTypeEnum.MultiSelect;
1214
public List<OptionElement> Options { get; set; } = new List<OptionElement>();
1315
}
1416

src/Infrastructure/BotSharp.Abstraction/Messaging/Models/RichContent/Template/ProductTemplateMessage.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1+
using BotSharp.Abstraction.Messaging.Enums;
2+
13
namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template;
24

35
public class ProductTemplateMessage : IRichMessage, ITemplateMessage
46
{
57
[JsonPropertyName("rich_type")]
6-
public string RichType => "generic_template";
8+
public string RichType => RichTypeEnum.GenericTemplate;
79

810
[JsonIgnore]
911
public string Text { get; set; } = string.Empty;
1012

1113
[JsonPropertyName("template_type")]
12-
public string TemplateType => "product";
14+
public string TemplateType => TemplateTypeEnum.Product;
1315
}
1416

1517
public class ProductElement

src/Infrastructure/BotSharp.Abstraction/Messaging/Models/RichContent/TextMessage.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
using BotSharp.Abstraction.Messaging.Enums;
2+
13
namespace BotSharp.Abstraction.Messaging.Models.RichContent;
24

35
public class TextMessage : IRichMessage
46
{
57
[JsonPropertyName("rich_type")]
6-
public string RichType => "text";
8+
public string RichType => RichTypeEnum.Text;
79

810
public string Text { get; set; } = string.Empty;
911

src/Infrastructure/BotSharp.Core/Messaging/RichContentService.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using BotSharp.Abstraction.Messaging;
2+
using BotSharp.Abstraction.Messaging.Enums;
23
using BotSharp.Abstraction.Messaging.Models.RichContent;
34

45
namespace BotSharp.Core.Messaging;
@@ -16,17 +17,17 @@ public List<IRichMessage> ConvertToMessages(string content)
1617

1718
foreach (var m in tempMessages)
1819
{
19-
var richType = "text";
20+
var richType = RichTypeEnum.Text;
2021
if (m.RootElement.TryGetProperty("rich_type", out var element))
2122
{
2223
richType = element.GetString();
2324
}
2425

25-
if (richType == "text")
26+
if (richType == RichTypeEnum.Text)
2627
{
2728
messages.Add(JsonSerializer.Deserialize<TextMessage>(m.RootElement.ToString(), options));
2829
}
29-
else if (richType == "quick_reply")
30+
else if (richType == RichTypeEnum.QuickReply)
3031
{
3132
messages.Add(JsonSerializer.Deserialize<QuickReplyMessage>(m.RootElement.ToString(), options));
3233
}

src/Plugins/BotSharp.Plugin.MetaMessenger/MessagingModels/AttachmentMessage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace BotSharp.Plugin.MetaMessenger.MessagingModels;
66
public class AttachmentMessage : IRichMessage
77
{
88
[JsonPropertyName("rich_type")]
9-
public string RichType => "attachment";
9+
public string RichType => RichTypeEnum.Attachment;
1010

1111
[JsonIgnore]
1212
public string Text { get; set; }

0 commit comments

Comments
 (0)