@@ -112,34 +112,79 @@ file:
112
112
113
113
With this done, you can now add a RemoteEvent consumer to react to the webhooks::
114
114
115
- use Symfony\C omponent\R emoteEvent\A ttribute\A sRemoteEventConsumer;
116
- use Symfony\C omponent\R emoteEvent\C onsumer\C onsumerInterface;
117
- use Symfony\C omponent\R emoteEvent\E vent\M ailer\M ailerDeliveryEvent;
118
- use Symfony\C omponent\R emoteEvent\E vent\M ailer\M ailerEngagementEvent;
119
- use Symfony\C omponent\R emoteEvent\R emoteEvent;
120
-
121
- #[AsRemoteEventConsumer('mailer_mailgun')]
122
- final readonly class WebhookListener implements ConsumerInterface
123
- {
124
- public function consume(RemoteEvent $event): void
115
+ use Symfony\Component\RemoteEvent\Attribute\AsRemoteEventConsumer;
116
+ use Symfony\Component\RemoteEvent\Consumer\ConsumerInterface;
117
+ use Symfony\Component\RemoteEvent\Event\Mailer\MailerDeliveryEvent;
118
+ use Symfony\Component\RemoteEvent\Event\Mailer\MailerEngagementEvent;
119
+ use Symfony\Component\RemoteEvent\RemoteEvent;
120
+
121
+ #[AsRemoteEventConsumer('mailer_mailgun')]
122
+ class WebhookListener implements ConsumerInterface
125
123
{
126
- if ($event instanceof MailerDeliveryEvent) {
127
- $this->handleMailDelivery($event);
128
- } elseif ($event instanceof MailerEngagementEvent) {
129
- $this->handleMailEngagement($event);
130
- } else {
131
- // This is not an email event
132
- return;
124
+ public function consume(RemoteEvent $event): void
125
+ {
126
+ if ($event instanceof MailerDeliveryEvent) {
127
+ $this->handleMailDelivery($event);
128
+ } elseif ($event instanceof MailerEngagementEvent) {
129
+ $this->handleMailEngagement($event);
130
+ } else {
131
+ // This is not an email event
132
+ return;
133
+ }
133
134
}
134
- }
135
135
136
- private function handleMailDelivery(MailerDeliveryEvent $event): void
137
- {
138
- // Handle the mail delivery event
136
+ private function handleMailDelivery(MailerDeliveryEvent $event): void
137
+ {
138
+ // Handle the mail delivery event
139
+ }
140
+
141
+ private function handleMailEngagement(MailerEngagementEvent $event): void
142
+ {
143
+ // Handle the mail engagement event
144
+ }
139
145
}
140
146
141
- private function handleMailEngagement(MailerEngagementEvent $event): void
147
+ Usage in combination with the Notifier component
148
+ ------------------------------------------------
149
+
150
+ The usage of the Webhook component when using a third-party transport in
151
+ the Notifier is very similar to the usage with the Mailer.
152
+
153
+ Currently, the following third-party sms transports support webhooks:
154
+
155
+ ============ ==========================================
156
+ SMS service Parser service name
157
+ ============ ==========================================
158
+ Twilio ``notifier.webhook.request_parser.twilio ``
159
+ ============ ==========================================
160
+
161
+ .. versionadded :: 6.3
162
+
163
+ The support for Twilio was introduced in Symfony 6.3.
164
+
165
+ For SMS transports, an additional ``SmsEvent `` is available in the RemoteEvent
166
+ consumer::
167
+
168
+ use Symfony\Component\RemoteEvent\Attribute\AsRemoteEventConsumer;
169
+ use Symfony\Component\RemoteEvent\Consumer\ConsumerInterface;
170
+ use Symfony\Component\RemoteEvent\Event\Sms\SmsEvent;
171
+ use Symfony\Component\RemoteEvent\RemoteEvent;
172
+
173
+ #[AsRemoteEventConsumer('notifier_twilio')]
174
+ class WebhookListener implements ConsumerInterface
142
175
{
143
- // Handle the mail engagement event
176
+ public function consume(RemoteEvent $event): void
177
+ {
178
+ if ($event instanceof SmsEvent) {
179
+ $this->handleSmsEvent($event);
180
+ } else {
181
+ // This is not an sms event
182
+ return;
183
+ }
184
+ }
185
+
186
+ private function handleSmsEvent(SmsEvent $event): void
187
+ {
188
+ // Handle the sms event
189
+ }
144
190
}
145
- }
0 commit comments