Remove RichMessageBase which cause Messenger doesn't work.

This commit is contained in:
Haiping Chen 2023-11-27 16:23:41 -06:00
parent 2cd5337c18
commit 8c1b0bc1e0
11 changed files with 19 additions and 36 deletions

View file

@ -2,6 +2,5 @@ namespace BotSharp.Abstraction.Messaging;
public interface IRichMessage public interface IRichMessage
{ {
string Type { get; }
string Text { get; set; } string Text { get; set; }
} }

View file

@ -1,8 +1,8 @@
namespace BotSharp.Abstraction.Messaging.Models.RichContent namespace BotSharp.Abstraction.Messaging.Models.RichContent
{ {
public class QuickReplyMessage : RichMessageBase, IRichMessage public class QuickReplyMessage : IRichMessage
{ {
public override string Type => "quick reply"; public string Text { get; set; } = string.Empty;
[JsonPropertyName("quick_replies")] [JsonPropertyName("quick_replies")]
public List<QuickReplyElement> QuickReplies { get; set; } = new List<QuickReplyElement>(); public List<QuickReplyElement> QuickReplies { get; set; } = new List<QuickReplyElement>();

View file

@ -3,12 +3,12 @@ namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template
/// <summary> /// <summary>
/// https://developers.facebook.com/docs/messenger-platform/send-messages/buttons /// https://developers.facebook.com/docs/messenger-platform/send-messages/buttons
/// </summary> /// </summary>
public class ButtonTemplateMessage : RichMessageBase, IRichMessage, ITemplateMessage public class ButtonTemplateMessage : IRichMessage
{ {
public override string Type => "template"; public string Text { get; set; } = string.Empty;
[JsonPropertyName("template_type")] [JsonPropertyName("template_type")]
public override string TemplateType => "button"; public string TemplateType => "button";
public List<ButtonElement> Buttons { get; set; } = new List<ButtonElement>(); public List<ButtonElement> Buttons { get; set; } = new List<ButtonElement>();
} }

View file

@ -4,18 +4,16 @@ namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template;
/// Coupon Template /// Coupon Template
/// https://developers.facebook.com/docs/messenger-platform/send-messages/template/coupon /// https://developers.facebook.com/docs/messenger-platform/send-messages/template/coupon
/// </summary> /// </summary>
public class CouponTemplateMessage : RichMessageBase, IRichMessage, ITemplateMessage public class CouponTemplateMessage : IRichMessage, ITemplateMessage
{ {
public override string Type => "template";
[JsonPropertyName("template_type")]
public override string TemplateType => "coupon";
[JsonIgnore] [JsonIgnore]
public override string Text { get; set; } public string Text { get; set; }
public string Title { get; set; } public string Title { get; set; }
public string Subtitle { get; set; } public string Subtitle { get; set; }
[JsonPropertyName("template_type")]
public string TemplateType => "coupon";
[JsonPropertyName("coupon_code")] [JsonPropertyName("coupon_code")]
public string CouponCode { get; set; } public string CouponCode { get; set; }

View file

@ -1,8 +1,8 @@
namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template
{ {
public class MultiSelectTemplateMessage : RichMessageBase, IRichMessage public class MultiSelectTemplateMessage : IRichMessage
{ {
public override string Type => "template"; public string Text { get; set; } = string.Empty;
[JsonPropertyName("template_type")] [JsonPropertyName("template_type")]
public string TemplateType => "multi-select"; public string TemplateType => "multi-select";

View file

@ -1,15 +1,12 @@
namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template namespace BotSharp.Abstraction.Messaging.Models.RichContent.Template
{ {
public class TemplateMessageBase<T> : RichMessageBase public class TemplateMessageBase<T>
{ {
[JsonIgnore] [JsonIgnore]
public string Text { get; set; } public string Text { get; set; }
public override string Type => "template";
[JsonPropertyName("template_type")] [JsonPropertyName("template_type")]
public virtual string TemplateType => string.Empty; public virtual string TemplateType => string.Empty;
public T[] Elements { get; set; } public T[] Elements { get; set; }
} }
} }

View file

@ -1,8 +1,8 @@
namespace BotSharp.Abstraction.Messaging.Models.RichContent; namespace BotSharp.Abstraction.Messaging.Models.RichContent;
public class TextMessage : RichMessageBase, IRichMessage public class TextMessage : IRichMessage
{ {
public string Type => "text"; public string Text { get; set; } = string.Empty;
public TextMessage(string text) public TextMessage(string text)
{ {

View file

@ -1,11 +0,0 @@
namespace BotSharp.Abstraction.Messaging;
public class RichMessageBase
{
public virtual string Type { get; }
public virtual string Text { get; set; }
[JsonPropertyName("template_type")]
public virtual string TemplateType { get; }
}

View file

@ -1,4 +1,5 @@
using BotSharp.Abstraction.Messaging; using BotSharp.Abstraction.Messaging;
using BotSharp.Abstraction.Messaging.Models.RichContent;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
namespace BotSharp.Plugin.ChatHub.Hooks; namespace BotSharp.Plugin.ChatHub.Hooks;
@ -24,7 +25,7 @@ public class ChatHubConversationHook : ConversationHookBase
var welcomeTemplate = agent.Templates.FirstOrDefault(x => x.Name == "welcome"); var welcomeTemplate = agent.Templates.FirstOrDefault(x => x.Name == "welcome");
if (welcomeTemplate != null) if (welcomeTemplate != null)
{ {
var messages = JsonSerializer.Deserialize<RichMessageBase[]>(welcomeTemplate.Content, new JsonSerializerOptions var messages = JsonSerializer.Deserialize<TextMessage[]>(welcomeTemplate.Content, new JsonSerializerOptions
{ {
PropertyNameCaseInsensitive = true PropertyNameCaseInsensitive = true
}); });

View file

@ -10,6 +10,4 @@ public class AttachmentMessage : IRichMessage
[JsonPropertyName("attachment")] [JsonPropertyName("attachment")]
public AttachmentBody Attachment { get; set; } public AttachmentBody Attachment { get; set; }
public string Type => "template";
} }

View file

@ -107,10 +107,11 @@ public class MessageHandleService
// Response to user // Response to user
foreach(var reply in replies) foreach(var reply in replies)
{ {
var content = JsonSerializer.Serialize(reply, _serializerOptions);
await messenger.SendMessage(setting.ApiVersion, setting.PageId, await messenger.SendMessage(setting.ApiVersion, setting.PageId,
new SendingMessageRequest(setting.PageAccessToken, recipient) new SendingMessageRequest(setting.PageAccessToken, recipient)
{ {
Message = JsonSerializer.Serialize(reply, _serializerOptions) Message = content
}); });
Thread.Sleep(500); Thread.Sleep(500);
} }