mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Completed webhook management from Mailgunb
This commit is contained in:
parent
809dc58a87
commit
a86df7b374
@ -116,11 +116,11 @@ class ProcessMailgunWebhook implements ShouldQueue
|
|||||||
switch ($this->request['event-data']['event']) {
|
switch ($this->request['event-data']['event']) {
|
||||||
case 'delivered':
|
case 'delivered':
|
||||||
return $this->processDelivery();
|
return $this->processDelivery();
|
||||||
case 'Bounce':
|
case 'failed':
|
||||||
return $this->processBounce();
|
return $this->processBounce();
|
||||||
case 'complained':
|
case 'complained':
|
||||||
return $this->processSpamComplaint();
|
return $this->processSpamComplaint();
|
||||||
case 'Open':
|
case 'opened':
|
||||||
return $this->processOpen();
|
return $this->processOpen();
|
||||||
default:
|
default:
|
||||||
# code...
|
# code...
|
||||||
@ -177,14 +177,28 @@ class ProcessMailgunWebhook implements ShouldQueue
|
|||||||
$this->invitation->opened_date = now();
|
$this->invitation->opened_date = now();
|
||||||
$this->invitation->save();
|
$this->invitation->save();
|
||||||
|
|
||||||
SystemLogger::dispatch(
|
$sl = $this->getSystemLog($this->request['MessageID']);
|
||||||
$this->request,
|
|
||||||
SystemLog::CATEGORY_MAIL,
|
/** Prevents Gmail tracking from firing inappropriately */
|
||||||
SystemLog::EVENT_MAIL_OPENED,
|
if($this->request['signature']['timestamp'] < $sl->log['signature']['timestamp'] + 3)
|
||||||
SystemLog::TYPE_WEBHOOK_RESPONSE,
|
return;
|
||||||
$this->invitation->contact->client,
|
|
||||||
$this->invitation->company
|
$event = [
|
||||||
);
|
'bounce_id' => '',
|
||||||
|
'recipient' => $this->request['event-data']['recipient'] ?? '',
|
||||||
|
'status' => $this->request['event-data']['event'] ?? '',
|
||||||
|
'delivery_message' => collect($this->request['event-data']['client-info'])->implode(" ") ?? '',
|
||||||
|
'server' => collect($this->request['event-data']['geolocation'])->implode(" - ") ?? '',
|
||||||
|
'server_ip' => $this->request['event-data']['ip'] ?? '',
|
||||||
|
'date' => \Carbon\Carbon::parse($this->request['event-data']['timestamp'])->format('Y-m-d H:i:s') ?? '',
|
||||||
|
];
|
||||||
|
|
||||||
|
if($sl) {
|
||||||
|
$data = $sl->log;
|
||||||
|
$data['history']['events'][] = $event;
|
||||||
|
$this->updateSystemLog($sl, $data);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -344,13 +358,29 @@ class ProcessMailgunWebhook implements ShouldQueue
|
|||||||
|
|
||||||
$bounce = new EmailBounce(
|
$bounce = new EmailBounce(
|
||||||
$this->request['event-data']['tags'][0],
|
$this->request['event-data']['tags'][0],
|
||||||
$this->request['From'],
|
$this->request['event-data']['envelope']['sender'],
|
||||||
$this->request['MessageID']
|
$this->message_id
|
||||||
);
|
);
|
||||||
|
|
||||||
LightLogs::create($bounce)->queue();
|
LightLogs::create($bounce)->queue();
|
||||||
|
|
||||||
SystemLogger::dispatch($this->request, SystemLog::CATEGORY_MAIL, SystemLog::EVENT_MAIL_BOUNCED, SystemLog::TYPE_WEBHOOK_RESPONSE, $this->invitation->contact->client, $this->invitation->company);
|
$sl = $this->getSystemLog($this->message_id);
|
||||||
|
|
||||||
|
$event = [
|
||||||
|
'bounce_id' => $this->request['event-data']['id'],
|
||||||
|
'recipient' => $this->request['event-data']['recipient'] ?? '',
|
||||||
|
'status' => $this->request['event-data']['event'] ?? '',
|
||||||
|
'delivery_message' => $this->request['event-data']['delivery-status']['description'] ?? $this->request['event-data']['delivery-status']['message'] ?? '',
|
||||||
|
'server' => $this->request['event-data']['delivery-status']['mx-host'] ?? '',
|
||||||
|
'server_ip' => $this->request['event-data']['envelope']['sending-ip'] ?? '',
|
||||||
|
'date' => \Carbon\Carbon::parse($this->request['event-data']['timestamp'])->format('Y-m-d H:i:s') ?? '',
|
||||||
|
];
|
||||||
|
|
||||||
|
if($sl) {
|
||||||
|
$data = $sl->log;
|
||||||
|
$data['history']['events'][] = $event;
|
||||||
|
$this->updateSystemLog($sl, $data);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -402,17 +432,30 @@ class ProcessMailgunWebhook implements ShouldQueue
|
|||||||
|
|
||||||
$spam = new EmailSpam(
|
$spam = new EmailSpam(
|
||||||
$this->request['event-data']['tags'][0],
|
$this->request['event-data']['tags'][0],
|
||||||
$this->request['From'],
|
$this->request['event-data']['message']['headers']['from'],
|
||||||
$this->request['MessageID']
|
$this->message_id
|
||||||
);
|
);
|
||||||
|
|
||||||
LightLogs::create($spam)->queue();
|
LightLogs::create($spam)->queue();
|
||||||
|
|
||||||
SystemLogger::dispatch($this->request, SystemLog::CATEGORY_MAIL, SystemLog::EVENT_MAIL_SPAM_COMPLAINT, SystemLog::TYPE_WEBHOOK_RESPONSE, $this->invitation->contact->client, $this->invitation->company);
|
$sl = $this->getSystemLog($this->message_id);
|
||||||
|
|
||||||
if (config('ninja.notification.slack')) {
|
$event = [
|
||||||
$this->invitation->company->notification(new EmailSpamNotification($this->invitation->company->account))->ninja();
|
'bounce_id' => '',
|
||||||
|
'recipient' => $this->request['event-data']['recipient'] ?? '',
|
||||||
|
'status' => $this->request['event-data']['event'] ?? '',
|
||||||
|
'delivery_message' => 'Spam Complaint',
|
||||||
|
'server' => '',
|
||||||
|
'server_ip' => $this->request['event-data']['envelope']['sending-ip'] ?? '',
|
||||||
|
'date' => \Carbon\Carbon::parse($this->request['event-data']['timestamp'])->format('Y-m-d H:i:s') ?? '',
|
||||||
|
];
|
||||||
|
|
||||||
|
if($sl) {
|
||||||
|
$data = $sl->log;
|
||||||
|
$data['history']['events'][] = $event;
|
||||||
|
$this->updateSystemLog($sl, $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function discoverInvitation($message_id)
|
private function discoverInvitation($message_id)
|
||||||
@ -470,7 +513,7 @@ class ProcessMailgunWebhook implements ShouldQueue
|
|||||||
$recipients = $this->request['event-data']['recipient'] ?? '';
|
$recipients = $this->request['event-data']['recipient'] ?? '';
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'bounce_id' => $this->request['event-data']['id'] ?? '',
|
'bounce_id' => '',
|
||||||
'recipient' => $recipients,
|
'recipient' => $recipients,
|
||||||
'status' => $this->request['event-data']['event'] ?? '',
|
'status' => $this->request['event-data']['event'] ?? '',
|
||||||
'delivery_message' => $this->request['event-details']['delivery-status']['description'] ?? $this->request['event-details']['delivery-status']['message'] ?? '',
|
'delivery_message' => $this->request['event-details']['delivery-status']['description'] ?? $this->request['event-details']['delivery-status']['message'] ?? '',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user