mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-11 13:42:49 +01:00
changes to WebhookHandler
This commit is contained in:
parent
c9178a6a01
commit
629c9c1b12
@ -101,6 +101,7 @@ class ProcessBrevoWebhook implements ShouldQueue
|
|||||||
case 'soft_bounce':
|
case 'soft_bounce':
|
||||||
case 'hard_bounce':
|
case 'hard_bounce':
|
||||||
case 'invalid_email':
|
case 'invalid_email':
|
||||||
|
case 'blocked':
|
||||||
return $this->processBounce();
|
return $this->processBounce();
|
||||||
case 'spam':
|
case 'spam':
|
||||||
return $this->processSpamComplaint();
|
return $this->processSpamComplaint();
|
||||||
@ -114,28 +115,40 @@ class ProcessBrevoWebhook implements ShouldQueue
|
|||||||
}
|
}
|
||||||
|
|
||||||
// {
|
// {
|
||||||
|
// "id": 948562,
|
||||||
|
// "email": "test@example.com",
|
||||||
|
// "message-id": "<202312211546.94160606300@smtp-relay.mailin.fr>",
|
||||||
|
// "date": "2023-12-21 18:34:42",
|
||||||
|
// "tags": [
|
||||||
|
// "gMtwiTIJtJxklXCj1OUFANgY6YYynQxV"
|
||||||
|
// ],
|
||||||
|
// "tag": "[\"gMtwiTIJtJxklXCj1OUFANgY6YYynQxV\"]",
|
||||||
// "event": "unique_opened",
|
// "event": "unique_opened",
|
||||||
// "email" : "example@example.com",
|
// "subject": "Reminder: Invoice 0002 from Untitled Company",
|
||||||
// "id" : 1,
|
// "sending_ip": "74.125.208.8",
|
||||||
// "date" : "yyyy-m-d h:i:s",
|
// "ts": 1703180082,
|
||||||
// "message-id" : "<xxx@msgid.domain>",
|
// "ts_epoch": 1703180082286,
|
||||||
// "subject" : "Test subject",
|
// "ts_event": 1703180082,
|
||||||
// "tag" : "<defined-tag>",
|
// "link": "",
|
||||||
// "sending_ip" : "xxx.xx.xxx.xx",
|
// "sender_email": "user@example.com"
|
||||||
// "ts_epoch" : 1534486682000,
|
|
||||||
// "template_id" : 1
|
|
||||||
// }
|
// }
|
||||||
// {
|
// {
|
||||||
|
// "id": 948562,
|
||||||
|
// "email": "test@example.com",
|
||||||
|
// "message-id": "<202312211555.14720890391@smtp-relay.mailin.fr>",
|
||||||
|
// "date": "2023-12-21 18:34:53",
|
||||||
|
// "tags": [
|
||||||
|
// "gMtwiTIJtJxklXCj1OUFANgY6YYynQxV"
|
||||||
|
// ],
|
||||||
|
// "tag": "[\"gMtwiTIJtJxklXCj1OUFANgY6YYynQxV\"]",
|
||||||
// "event": "opened",
|
// "event": "opened",
|
||||||
// "email" : "frichris@hotmail.fr",
|
// "subject": "Reminder: Invoice 0002 from Untitled Company",
|
||||||
// "id" : 1,
|
// "sending_ip": "74.125.208.8",
|
||||||
// "date" : "yyyy-m-d h:i:s",
|
// "ts": 1703180093,
|
||||||
// "message-id" : "<xxx@msgid.domain>",
|
// "ts_epoch": 1703180093075,
|
||||||
// "subject" : "Test subject",
|
// "ts_event": 1703180093,
|
||||||
// "tag" : "<defined-tag>",
|
// "link": "",
|
||||||
// "sending_ip" : "xxx.xx.xxx.xx",
|
// "sender_email": "user@example.com"
|
||||||
// "ts_epoch" : 1534486682000,
|
|
||||||
// "template_id" : 1
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
private function processOpen()
|
private function processOpen()
|
||||||
@ -163,16 +176,22 @@ class ProcessBrevoWebhook implements ShouldQueue
|
|||||||
}
|
}
|
||||||
|
|
||||||
// {
|
// {
|
||||||
|
// "id": 948562,
|
||||||
|
// "email": "test@example",
|
||||||
|
// "message-id": "<202312211742.12697514322@smtp-relay.mailin.fr>",
|
||||||
|
// "date": "2023-12-21 18:42:31",
|
||||||
|
// "tags": [
|
||||||
|
// "gMtwiTIJtJxklXCj1OUFANgY6YYynQxV"
|
||||||
|
// ],
|
||||||
|
// "tag": "[\"gMtwiTIJtJxklXCj1OUFANgY6YYynQxV\"]",
|
||||||
// "event": "delivered",
|
// "event": "delivered",
|
||||||
// "email" : "example@example.com",
|
// "subject": "Reminder: Invoice 0002 from Untitled Company",
|
||||||
// "id" : 1,
|
// "sending_ip": "77.32.148.26",
|
||||||
// "date" : "yyyy-m-d h:i:s",
|
// "ts_event": 1703180551,
|
||||||
// "message-id" : "<xxx@msgid.domain>",
|
// "ts": 1703180551,
|
||||||
// "subject" : "Test subject",
|
// "reason": "sent",
|
||||||
// "tag" : "<defined-tag>",
|
// "ts_epoch": 1703180551324,
|
||||||
// "sending_ip" : "xxx.xx.xxx.xx",
|
// "sender_email": "user@example.com"
|
||||||
// "ts_epoch" : 1534486682000,
|
|
||||||
// "template_id" : 1
|
|
||||||
// }
|
// }
|
||||||
private function processDelivery()
|
private function processDelivery()
|
||||||
{
|
{
|
||||||
@ -199,28 +218,40 @@ class ProcessBrevoWebhook implements ShouldQueue
|
|||||||
}
|
}
|
||||||
|
|
||||||
// {
|
// {
|
||||||
|
// "id": 948562,
|
||||||
|
// "email": "ryder36@example.net",
|
||||||
|
// "message-id": "<202312211744.55168080257@smtp-relay.mailin.fr>",
|
||||||
|
// "date": "2023-12-21 18:44:52",
|
||||||
|
// "tags": [
|
||||||
|
// "gMtwiTIJtJxklXCj1OUFANgY6YYynQxV"
|
||||||
|
// ],
|
||||||
|
// "tag": "[\"gMtwiTIJtJxklXCj1OUFANgY6YYynQxV\"]",
|
||||||
// "event": "soft_bounce",
|
// "event": "soft_bounce",
|
||||||
// "email" : "example@example.com",
|
// "subject": "Reminder: Invoice 0001 from Untitled Company",
|
||||||
// "id" : 1,
|
// "sending_ip": "77.32.148.26",
|
||||||
// "date" : "yyyy-mm-dd hh:i:s",
|
// "ts_event": 1703180692,
|
||||||
// "message-id" : "<xxx@msgid.domain>",
|
// "ts": 1703180692,
|
||||||
// "reason" : "<reason-for-deferred>",
|
// "reason": "Unable to find MX of domain example.net",
|
||||||
// "tag" : "<defined-tag>",
|
// "ts_epoch": 1703180692382,
|
||||||
// "sending_ip" : "xxx.xx.xxx.xx",
|
// "sender_email": "user@example.com"
|
||||||
// "ts_epoch" : 1534486682000,
|
|
||||||
// "template_id" : 1
|
|
||||||
// }
|
// }
|
||||||
// {
|
// {
|
||||||
|
// "id": 948562,
|
||||||
|
// "email": "gloria46@example.com",
|
||||||
|
// "message-id": "<202312211744.57456703957@smtp-relay.mailin.fr>",
|
||||||
|
// "date": "2023-12-21 18:44:54",
|
||||||
|
// "tags": [
|
||||||
|
// "gMtwiTIJtJxklXCj1OUFANgY6YYynQxV"
|
||||||
|
// ],
|
||||||
|
// "tag": "[\"gMtwiTIJtJxklXCj1OUFANgY6YYynQxV\"]",
|
||||||
// "event": "hard_bounce",
|
// "event": "hard_bounce",
|
||||||
// "email" : "example@example.com",
|
// "subject": "Reminder: Invoice 0001 from Untitled Company",
|
||||||
// "id" : 1,
|
// "sending_ip": "77.32.148.25",
|
||||||
// "date" : "yyyy-mm-dd hh:i:s",
|
// "ts_event": 1703180694,
|
||||||
// "message-id" : "<xxx@msgid.domain>",
|
// "ts": 1703180694,
|
||||||
// "reason" : "<reason-for-deferred>",
|
// "reason": "blocked by Admin",
|
||||||
// "tag" : "<defined-tag>",
|
// "ts_epoch": 1703180694175,
|
||||||
// "sending_ip" : "xxx.xx.xxx.xx",
|
// "sender_email": "user@example.com"
|
||||||
// "ts_epoch" : 1534486682000,
|
|
||||||
// "template_id" : 1
|
|
||||||
// }
|
// }
|
||||||
// {
|
// {
|
||||||
// "event" : "invalid_email",
|
// "event" : "invalid_email",
|
||||||
@ -229,10 +260,31 @@ class ProcessBrevoWebhook implements ShouldQueue
|
|||||||
// "date" : "yyyy-mm-dd hh:i:s",
|
// "date" : "yyyy-mm-dd hh:i:s",
|
||||||
// "message-id" : "<xxx@msgid.domain>",
|
// "message-id" : "<xxx@msgid.domain>",
|
||||||
// "subject" : "Test subject",
|
// "subject" : "Test subject",
|
||||||
// "tag" : "<defined-tag>",
|
// "tag" : "<defined-tag>",//json of array
|
||||||
|
// "tags": [
|
||||||
|
// "company_key"
|
||||||
|
// ],
|
||||||
// "sending_ip" : "xxx.xx.xxx.xx",
|
// "sending_ip" : "xxx.xx.xxx.xx",
|
||||||
// "ts_epoch" : 1534486682000,
|
// "ts_epoch" : 1534486682000,
|
||||||
// "template_id" : 1
|
// "template_id" : 1,
|
||||||
|
// "sender_email": "user@example.com",
|
||||||
|
// }
|
||||||
|
// {
|
||||||
|
// "id": 948562,
|
||||||
|
// "email": "neoma.langosh@example.com",
|
||||||
|
// "message-id": "<202312211745.65538701430@smtp-relay.mailin.fr>",
|
||||||
|
// "date": "2023-12-21 18:45:48",
|
||||||
|
// "tags": [
|
||||||
|
// "gMtwiTIJtJxklXCj1OUFANgY6YYynQxV"
|
||||||
|
// ],
|
||||||
|
// "tag": "[\"gMtwiTIJtJxklXCj1OUFANgY6YYynQxV\"]",
|
||||||
|
// "event": "blocked",
|
||||||
|
// "subject": "Reminder: Invoice 0001 from Untitled Company",
|
||||||
|
// "ts_event": 1703180748,
|
||||||
|
// "ts": 1703180748,
|
||||||
|
// "reason": "blocked : due to blacklist user",
|
||||||
|
// "ts_epoch": 1703180748987,
|
||||||
|
// "sender_email": "user@example.com"
|
||||||
// }
|
// }
|
||||||
|
|
||||||
private function processBounce()
|
private function processBounce()
|
||||||
@ -241,8 +293,8 @@ class ProcessBrevoWebhook implements ShouldQueue
|
|||||||
$this->invitation->save();
|
$this->invitation->save();
|
||||||
|
|
||||||
$bounce = new EmailBounce(
|
$bounce = new EmailBounce(
|
||||||
$this->request['tag'],
|
$this->request['tags'][0],
|
||||||
$this->request['From'], // TODO: @turbo124 is this the recipent?
|
$this->request['sender_email'], // TODO: @turbo124 is this the recipent?
|
||||||
$this->request['message-id']
|
$this->request['message-id']
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -269,8 +321,12 @@ class ProcessBrevoWebhook implements ShouldQueue
|
|||||||
// "id" : 1,
|
// "id" : 1,
|
||||||
// "date" : "yyyy-mm-dd hh:i:s",
|
// "date" : "yyyy-mm-dd hh:i:s",
|
||||||
// "message-id" : "<xxx@msgid.domain>",
|
// "message-id" : "<xxx@msgid.domain>",
|
||||||
// "tag" : "<defined-tag>",
|
// "tag" : "<defined-tag>",//json of array
|
||||||
|
// "tags": [
|
||||||
|
// "company_key"
|
||||||
|
// ],
|
||||||
// "sending_ip" : "xxx.xx.xxx.xx",
|
// "sending_ip" : "xxx.xx.xxx.xx",
|
||||||
|
// "sender_email": "user@example.com",
|
||||||
// }
|
// }
|
||||||
private function processSpamComplaint()
|
private function processSpamComplaint()
|
||||||
{
|
{
|
||||||
@ -278,8 +334,8 @@ class ProcessBrevoWebhook implements ShouldQueue
|
|||||||
$this->invitation->save();
|
$this->invitation->save();
|
||||||
|
|
||||||
$spam = new EmailSpam(
|
$spam = new EmailSpam(
|
||||||
$this->request['tag'],
|
$this->request['tags'][0],
|
||||||
$this->request['From'], // TODO
|
$this->request['sender_email'],
|
||||||
$this->request['message-id']
|
$this->request['message-id']
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -362,10 +418,10 @@ class ProcessBrevoWebhook implements ShouldQueue
|
|||||||
|
|
||||||
$messageDetail = $this->getRawMessage($this->request['message-id']);
|
$messageDetail = $this->getRawMessage($this->request['message-id']);
|
||||||
|
|
||||||
$recipients = collect($messageDetail['recipients'])->flatten()->implode(',');
|
$recipients = $this->request["email"];
|
||||||
$subject = $messageDetail->getSubject() ?? '';
|
$subject = $messageDetail->getSubject() ?? '';
|
||||||
|
|
||||||
$events = collect($messageDetail->getEvents())->map(function (GetTransacEmailContentEvents $event) {
|
$events = collect($messageDetail->getEvents())->map(function (GetTransacEmailContentEvents $event) { // @turbo124 event does only contain name & time property, how to handle transformation?!
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'bounce_id' => $event?->Details?->BounceID ?? '',
|
'bounce_id' => $event?->Details?->BounceID ?? '',
|
||||||
|
Loading…
Reference in New Issue
Block a user