added code to allow failed messages from bad content url
This commit is contained in:
parent
3a2d1512ab
commit
cb4e3c76d3
2 changed files with 39 additions and 12 deletions
|
@ -14,7 +14,7 @@ const sendConfigurations = require('../models/send-configurations');
|
|||
const links = require('../models/links');
|
||||
const {CampaignSource, CampaignType} = require('../../shared/campaigns');
|
||||
const {toNameTagLangauge} = require('../../shared/lists');
|
||||
const {CampaignMessageStatus} = require('../../shared/campaigns');
|
||||
const {CampaignMessageStatus, CampaignMessageErrorCode} = require('../../shared/campaigns');
|
||||
const tools = require('./tools');
|
||||
const htmlToText = require('html-to-text');
|
||||
const request = require('request-promise');
|
||||
|
@ -202,14 +202,26 @@ class MessageSender {
|
|||
|
||||
const sourceUrl = campaign.data.sourceUrl;
|
||||
|
||||
const response = await request.post({
|
||||
uri: sourceUrl,
|
||||
form,
|
||||
resolveWithFullResponse: true
|
||||
});
|
||||
let response;
|
||||
try {
|
||||
response = await request.post({
|
||||
uri: sourceUrl,
|
||||
form,
|
||||
resolveWithFullResponse: true
|
||||
});
|
||||
} catch (e) {
|
||||
log.error('MessageSender', `Error pulling content from URL (${sourceUrl})`);
|
||||
response = {statusCode: e.message};
|
||||
}
|
||||
|
||||
if (response.statusCode !== 200) {
|
||||
throw new Error(`Received status code ${httpResponse.statusCode} from ${sourceUrl}`);
|
||||
const statusError = new Error(`Received status code ${response.statusCode} from ${sourceUrl}`);
|
||||
if (response.statusCode >= 500) {
|
||||
statusError.code = CampaignMessageErrorCode.RETRY;
|
||||
} else {
|
||||
statusError.code = CampaignMessageErrorCode.NORETRY;
|
||||
}
|
||||
throw statusError;
|
||||
}
|
||||
|
||||
html = response.body;
|
||||
|
@ -504,13 +516,21 @@ class MessageSender {
|
|||
try {
|
||||
result = await this._sendMessage({listId: campaignMessage.list, subscriptionId: campaignMessage.subscription});
|
||||
} catch (err) {
|
||||
await knex('campaign_messages')
|
||||
if (err.code === CampaignMessageErrorCode.NORETRY) {
|
||||
await knex('campaign_messages')
|
||||
.where({id: campaignMessage.id})
|
||||
.update({
|
||||
status: CampaignMessageStatus.FAILED,
|
||||
updated: new Date()
|
||||
});
|
||||
} else {
|
||||
await knex('campaign_messages')
|
||||
.where({id: campaignMessage.id})
|
||||
.update({
|
||||
status: CampaignMessageStatus.SCHEDULED,
|
||||
updated: new Date()
|
||||
});
|
||||
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
|
||||
|
@ -755,4 +775,4 @@ module.exports.queueCampaignMessageTx = queueCampaignMessageTx;
|
|||
module.exports.queueSubscriptionMessage = queueSubscriptionMessage;
|
||||
module.exports.dropQueuedMessage = dropQueuedMessage;
|
||||
module.exports.getMessage = getMessage;
|
||||
module.exports.queueAPITransactionalMessage = queueAPITransactionalMessage;
|
||||
module.exports.queueAPITransactionalMessage = queueAPITransactionalMessage;
|
||||
|
|
|
@ -53,7 +53,13 @@ const CampaignMessageStatus = {
|
|||
COMPLAINED: 4,
|
||||
SCHEDULED: 5,
|
||||
|
||||
MAX: 5
|
||||
MAX: 5,
|
||||
FAILED: 6
|
||||
};
|
||||
|
||||
const CampaignMessageErrorCode = {
|
||||
RETRY: 0,
|
||||
NORETRY: 1
|
||||
};
|
||||
|
||||
|
||||
|
@ -90,5 +96,6 @@ module.exports = {
|
|||
CampaignStatus,
|
||||
campaignOverridables,
|
||||
CampaignMessageStatus,
|
||||
CampaignMessageErrorCode,
|
||||
getSendConfigurationPermissionRequiredForSend
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue