Skip to content

Commit ae3bbda

Browse files
authored
Facebook Messenger Connector (#9)
* Initial implementation of the Facebook Message connector * Improved code and branch coverage
1 parent 5da86a4 commit ae3bbda

26 files changed

Lines changed: 5279 additions & 30 deletions

Deveel.Messaging.Model.sln

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Deveel.Messaging.Connector.
3737
EndProject
3838
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Deveel.Messaging.Connector.Firebase.XUnit", "test\Deveel.Messaging.Connector.Firebase.XUnit\Deveel.Messaging.Connector.Firebase.XUnit.csproj", "{FAA38244-1DFE-A70C-4F12-3012E65A9779}"
3939
EndProject
40+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Deveel.Messaging.Connector.Facebook", "src\Deveel.Messaging.Connector.Facebook\Deveel.Messaging.Connector.Facebook.csproj", "{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}"
41+
EndProject
42+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Deveel.Messaging.Connector.Facebook.XUnit", "test\Deveel.Messaging.Connector.Facebook.XUnit\Deveel.Messaging.Connector.Facebook.XUnit.csproj", "{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}"
43+
EndProject
4044
Global
4145
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4246
Debug|Any CPU = Debug|Any CPU
@@ -191,6 +195,30 @@ Global
191195
{FAA38244-1DFE-A70C-4F12-3012E65A9779}.Release|x64.Build.0 = Release|Any CPU
192196
{FAA38244-1DFE-A70C-4F12-3012E65A9779}.Release|x86.ActiveCfg = Release|Any CPU
193197
{FAA38244-1DFE-A70C-4F12-3012E65A9779}.Release|x86.Build.0 = Release|Any CPU
198+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
199+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Debug|Any CPU.Build.0 = Debug|Any CPU
200+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Debug|x64.ActiveCfg = Debug|Any CPU
201+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Debug|x64.Build.0 = Debug|Any CPU
202+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Debug|x86.ActiveCfg = Debug|Any CPU
203+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Debug|x86.Build.0 = Debug|Any CPU
204+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Release|Any CPU.ActiveCfg = Release|Any CPU
205+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Release|Any CPU.Build.0 = Release|Any CPU
206+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Release|x64.ActiveCfg = Release|Any CPU
207+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Release|x64.Build.0 = Release|Any CPU
208+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Release|x86.ActiveCfg = Release|Any CPU
209+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26}.Release|x86.Build.0 = Release|Any CPU
210+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
211+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
212+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Debug|x64.ActiveCfg = Debug|Any CPU
213+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Debug|x64.Build.0 = Debug|Any CPU
214+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Debug|x86.ActiveCfg = Debug|Any CPU
215+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Debug|x86.Build.0 = Debug|Any CPU
216+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
217+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Release|Any CPU.Build.0 = Release|Any CPU
218+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Release|x64.ActiveCfg = Release|Any CPU
219+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Release|x64.Build.0 = Release|Any CPU
220+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Release|x86.ActiveCfg = Release|Any CPU
221+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE}.Release|x86.Build.0 = Release|Any CPU
194222
EndGlobalSection
195223
GlobalSection(SolutionProperties) = preSolution
196224
HideSolutionNode = FALSE
@@ -208,6 +236,8 @@ Global
208236
{99577C80-2B4C-47DD-A274-788A5CF86B68} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
209237
{3931E0C7-2B09-5C0A-1EDF-1EB97A545F93} = {0F91077D-AC47-4319-96FF-09CA6EE50CC6}
210238
{FAA38244-1DFE-A70C-4F12-3012E65A9779} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
239+
{BAA0E8C8-0BAF-3908-4ACE-48FCDDB9BD26} = {0F91077D-AC47-4319-96FF-09CA6EE50CC6}
240+
{6DE730ED-C03C-7F63-E5C3-06920CD5B0FE} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
211241
EndGlobalSection
212242
GlobalSection(ExtensibilityGlobals) = postSolution
213243
SolutionGuid = {64BF9420-C7A8-4D2B-804F-41EB2E83437F}

docs/README.md

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ This directory contains comprehensive documentation for the Deveel Messaging Fra
2424
|-----------|----------|------|---------------|
2525
| **Twilio SMS** | Twilio | SMS | [?? Complete Guide](connectors/twilio-sms-connector.md) |
2626
| **Twilio WhatsApp** | Twilio | WhatsApp | [?? Complete Guide](connectors/twilio-whatsapp-connector.md) |
27+
| **Facebook Messenger** | Facebook | Messenger | [?? Complete Guide](connectors/facebook-messenger-connector.md) |
2728
| **Firebase FCM** | Firebase | Push | [?? Complete Guide](connectors/firebase-push-connector.md) |
2829
| **SendGrid Email** | SendGrid | Email | [?? Complete Guide](connectors/sendgrid-email-connector.md) |
2930

@@ -39,14 +40,14 @@ Each connector guide includes:
3940

4041
### ?? Quick Connector Comparison
4142

42-
| Feature | SMS | WhatsApp | Push | Email |
43-
|---------|-----|----------|------|-------|
44-
| **Send Messages** | ? | ? | ? | ? |
45-
| **Receive Messages** | ? | ? | ? | ? |
46-
| **Templates** | ? | ? | ? | ? |
47-
| **Media Support** | ? | ? | ? | ? |
48-
| **Batch Operations** | ? | ? | ? | ? |
49-
| **Interactive Elements** | ? | ? | ? | ? |
43+
| Feature | SMS | WhatsApp | Facebook Messenger | Push | Email |
44+
|---------|-----|----------|-------------------|------|-------|
45+
| **Send Messages** | ? | ? | ? | ? | ? |
46+
| **Receive Messages** | ? | ? | ? | ? | ? |
47+
| **Templates** | ? | ? | ? | ? | ? |
48+
| **Media Support** | ? | ? | ? | ? | ? |
49+
| **Batch Operations** | ? | ? | ? | ? | ? |
50+
| **Interactive Elements** | ? | ? | ? | ? | ? |
5051

5152
## ?? Quick Navigation
5253

@@ -68,6 +69,17 @@ Each connector guide includes:
6869

6970
## ?? Latest Framework Features
7071

72+
### ?? Facebook Messenger Platform Integration
73+
- **Interactive Messaging**: Complete Facebook Messenger connector with quick replies and media support
74+
- **Bidirectional Communication**: Send and receive messages via Facebook webhooks
75+
- **Graph API v21.0**: Full compliance with the latest Facebook Graph API version
76+
- **RestSharp Integration**: Modern HTTP client with proper error handling and validation
77+
- **Quick Replies**: Interactive quick reply buttons (up to 13 per message)
78+
- **Media Attachments**: Images, videos, audio, and file sharing
79+
- **Health Monitoring**: Built-in connection testing and comprehensive health checks
80+
81+
**?? [Complete Facebook Messenger Documentation](connectors/facebook-messenger-connector.md)**
82+
7183
### ?? Firebase Cloud Messaging (FCM) Support
7284
- **Push Notifications**: Complete Firebase connector for mobile and web push notifications
7385
- **Device Targeting**: Send to specific device tokens or broadcast to topics
@@ -169,6 +181,18 @@ var whatsAppSchema = new ChannelSchema("Twilio", "WhatsApp", "2.1.0")
169181
ChannelCapability.MediaAttachments);
170182
```
171183

184+
### Facebook Messenger
185+
```csharp
186+
var messengerSchema = new ChannelSchema("Facebook", "Messenger", "1.0.0")
187+
.AllowsMessageEndpoint(EndpointType.FacebookUserId)
188+
.AddContentType(MessageContentType.PlainText)
189+
.AddContentType(MessageContentType.Media)
190+
.WithCapabilities(
191+
ChannelCapability.SendMessages |
192+
ChannelCapability.ReceiveMessages |
193+
ChannelCapability.MediaAttachments);
194+
```
195+
172196
### Push Notifications
173197
```csharp
174198
var pushSchema = new ChannelSchema("Firebase", "Push", "1.0.0")
@@ -285,9 +309,10 @@ The framework provides excellent development experience:
285309
### Connector Capabilities Matrix
286310

287311
| Connector | Send | Receive | Status | Batch | Templates | Media | Health |
288-
|-----------|------|---------|--------|-------|-----------|-------|---------|
312+
|-----------|:----:|:-------:|:------:|:-----:|:---------:|:-----:|:------:|
289313
| Twilio SMS | ? | ? | ? | ? | ? | ? | ? |
290314
| Twilio WhatsApp | ? | ? | ? | ? | ? | ? | ? |
315+
| Facebook Messenger | ? | ? | ? | ? | ? | ? | ? |
291316
| SendGrid Email | ? | ? | ? | ? | ? | ? | ? |
292317
| Firebase FCM | ? | ? | ? | ? | ? | ? | ? |
293318

docs/connectors/README.md

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ This directory contains comprehensive documentation for all available connectors
88
|-----------|----------|------|---------------|---------|
99
| **Twilio SMS** | Twilio | SMS | [?? Complete Guide](twilio-sms-connector.md) | `Deveel.Messaging.Connector.Twilio` |
1010
| **Twilio WhatsApp** | Twilio | WhatsApp | [?? Complete Guide](twilio-whatsapp-connector.md) | `Deveel.Messaging.Connector.Twilio` |
11+
| **Facebook Messenger** | Facebook | Messenger | [?? Complete Guide](facebook-messenger-connector.md) | `Deveel.Messaging.Connector.Facebook` |
1112
| **Firebase FCM** | Firebase | Push | [?? Complete Guide](firebase-push-connector.md) | `Deveel.Messaging.Connector.Firebase` |
1213
| **SendGrid Email** | SendGrid | Email | [?? Complete Guide](sendgrid-email-connector.md) | `Deveel.Messaging.Connector.Sendgrid` |
1314

@@ -27,6 +28,13 @@ dotnet add package Deveel.Messaging.Connector.Twilio
2728
```
2829
?? **[Complete WhatsApp Business Setup Guide](twilio-whatsapp-connector.md)**
2930

31+
### Facebook Messenger
32+
**Install and configure Facebook Messenger Platform:**
33+
```bash
34+
dotnet add package Deveel.Messaging.Connector.Facebook
35+
```
36+
?? **[Complete Facebook Messenger Setup Guide](facebook-messenger-connector.md)**
37+
3038
### Push Notifications
3139
**Install and configure Firebase Cloud Messaging:**
3240
```bash
@@ -45,7 +53,7 @@ dotnet add package Deveel.Messaging.Connector.Sendgrid
4553

4654
Each connector documentation provides comprehensive coverage:
4755

48-
### ? **Installation & Setup**
56+
### ?? **Installation & Setup**
4957
- NuGet package installation instructions
5058
- Required dependencies and prerequisites
5159
- Configuration parameter setup
@@ -83,16 +91,13 @@ Each connector documentation provides comprehensive coverage:
8391

8492
## ?? Connector Capabilities Matrix
8593

86-
| Capability | Twilio SMS | Twilio WhatsApp | Firebase FCM | SendGrid Email |
87-
|------------|------------|------------------|--------------|----------------|
88-
| **Send Messages** | ? | ? | ? | ? |
89-
| **Receive Messages** | ? | ? | ? | ? |
90-
| **Status Tracking** | ? | ? | ? | ? |
91-
| **Batch Operations** | ? | ? | ? | ? |
92-
| **Templates** | ? | ? | ? | ? |
93-
| **Media Attachments** | ? | ? | ? | ? |
94-
| **Health Monitoring** | ? | ? | ? | ? |
95-
| **Webhook Support** | ? | ? | ? | ? |
94+
| Connector | Send Messages | Receive Messages | Status Tracking | Batch Operations | Templates | Media Attachments | Health Monitoring | Webhook Support | Quick Replies | Interactive Elements |
95+
|-----------|:-------------:|:----------------:|:---------------:|:----------------:|:---------:|:-----------------:|:-----------------:|:---------------:|:-------------:|:--------------------:|
96+
| **Twilio SMS** | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
97+
| **Twilio WhatsApp** | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
98+
| **Facebook Messenger** | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
99+
| **Firebase FCM** | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
100+
| **SendGrid Email** | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
96101

97102
## ?? Use Case Recommendations
98103

@@ -104,31 +109,35 @@ Each connector documentation provides comprehensive coverage:
104109
| **SMS Verification** | [Twilio SMS](twilio-sms-connector.md) | High delivery rates, global reach |
105110
| **Push Notifications** | [Firebase FCM](firebase-push-connector.md) | Real-time, cross-platform |
106111
| **WhatsApp Business** | [Twilio WhatsApp](twilio-whatsapp-connector.md) | High engagement, rich media |
107-
108-
### Marketing Campaigns
109-
110-
| Use Case | Recommended Connector | Why |
111-
|----------|----------------------|-----|
112-
| **Email Newsletters** | [SendGrid Email](sendgrid-email-connector.md) | Advanced tracking, templates |
113-
| **SMS Campaigns** | [Twilio SMS](twilio-sms-connector.md) | Bulk messaging, opt-out handling |
114-
| **App Promotions** | [Firebase FCM](firebase-push-connector.md) | Topic messaging, segmentation |
115-
| **WhatsApp Marketing** | [Twilio WhatsApp](twilio-whatsapp-connector.md) | Interactive elements, templates |
112+
| **Facebook Messenger** | [Facebook Messenger](facebook-messenger-connector.md) | Interactive, quick replies |
116113

117114
### Customer Support
118115

119116
| Use Case | Recommended Connector | Why |
120117
|----------|----------------------|-----|
121118
| **Support Tickets** | [SendGrid Email](sendgrid-email-connector.md) | Threading, attachments |
119+
| **Live Chat** | [Facebook Messenger](facebook-messenger-connector.md) | Real-time conversation |
122120
| **Urgent Alerts** | [Twilio SMS](twilio-sms-connector.md) | Immediate delivery |
123121
| **App Notifications** | [Firebase FCM](firebase-push-connector.md) | In-app alerts |
124122
| **WhatsApp Support** | [Twilio WhatsApp](twilio-whatsapp-connector.md) | Two-way conversation |
125123

124+
### Marketing Campaigns
125+
126+
| Use Case | Recommended Connector | Why |
127+
|----------|----------------------|-----|
128+
| **Email Newsletters** | [SendGrid Email](sendgrid-email-connector.md) | Advanced tracking, templates |
129+
| **SMS Campaigns** | [Twilio SMS](twilio-sms-connector.md) | Bulk messaging, opt-out handling |
130+
| **App Promotions** | [Firebase FCM](firebase-push-connector.md) | Topic messaging, segmentation |
131+
| **WhatsApp Marketing** | [Twilio WhatsApp](twilio-whatsapp-connector.md) | Interactive elements, templates |
132+
| **Facebook Engagement** | [Facebook Messenger](facebook-messenger-connector.md) | Quick replies, interactive |
133+
126134
## ?? Multi-Connector Patterns
127135

128136
### Installation for Multiple Providers
129137
```bash
130138
# Install multiple connectors for comprehensive messaging
131139
dotnet add package Deveel.Messaging.Connector.Twilio # SMS + WhatsApp
140+
dotnet add package Deveel.Messaging.Connector.Facebook # Facebook Messenger
132141
dotnet add package Deveel.Messaging.Connector.Firebase # Push notifications
133142
dotnet add package Deveel.Messaging.Connector.Sendgrid # Email delivery
134143
```
@@ -138,6 +147,7 @@ dotnet add package Deveel.Messaging.Connector.Sendgrid # Email delivery
138147
public class NotificationService
139148
{
140149
private readonly TwilioSmsConnector _smsConnector;
150+
private readonly FacebookMessengerConnector _facebookConnector;
141151
private readonly SendGridEmailConnector _emailConnector;
142152
private readonly FirebasePushConnector _pushConnector;
143153

@@ -148,6 +158,9 @@ public class NotificationService
148158
case NotificationChannel.SMS:
149159
await _smsConnector.SendMessageAsync(CreateSmsMessage(user, message));
150160
break;
161+
case NotificationChannel.FacebookMessenger:
162+
await _facebookConnector.SendMessageAsync(CreateFacebookMessage(user, message));
163+
break;
151164
case NotificationChannel.Email:
152165
await _emailConnector.SendMessageAsync(CreateEmailMessage(user, message));
153166
break;
@@ -213,14 +226,15 @@ public async Task SendMessage_RealProvider_DeliversMessage()
213226
| Provider | Documentation | Console | Support |
214227
|----------|---------------|---------|---------|
215228
| **Twilio** | [Docs](https://www.twilio.com/docs) | [Console](https://console.twilio.com) | [Support](https://support.twilio.com) |
229+
| **Facebook** | [Docs](https://developers.facebook.com/docs/messenger-platform) | [Console](https://developers.facebook.com) | [Support](https://developers.facebook.com/support) |
216230
| **Firebase** | [Docs](https://firebase.google.com/docs) | [Console](https://console.firebase.google.com) | [Support](https://firebase.google.com/support) |
217231
| **SendGrid** | [Docs](https://docs.sendgrid.com) | [Console](https://app.sendgrid.com) | [Support](https://support.sendgrid.com) |
218232

219233
## ?? Contributing New Connectors
220234

221235
Planning to add a new connector? Each guide follows our standard template:
222236

223-
1. **? Installation** - Package installation and setup
237+
1. **?? Installation** - Package installation and setup
224238
2. **?? Configuration** - Schema and parameter setup
225239
3. **?? Usage Examples** - Basic to advanced usage patterns
226240
4. **?? Integration** - Webhooks and bidirectional messaging

0 commit comments

Comments
 (0)