feat: Add appendN8nAttribution option to sendAndWait operation (#13697)

Co-authored-by: Michael Kret <michael.k@radency.com>
This commit is contained in:
Ria Scholz
2025-03-18 10:43:21 +01:00
committed by GitHub
parent 7e1036187f
commit d6d5a66f5d
16 changed files with 173 additions and 40 deletions

View File

@@ -48,7 +48,8 @@ describe('Test MicrosoftOutlookV2, message => sendAndWait', () => {
mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('my subject');
mockExecuteFunctions.evaluateExpression.mockReturnValueOnce('http://localhost/waiting-webhook');
mockExecuteFunctions.evaluateExpression.mockReturnValueOnce('nodeID');
mockExecuteFunctions.getNodeParameter.mockReturnValueOnce({});
mockExecuteFunctions.getNodeParameter.mockReturnValueOnce({}); // approvalOptions
mockExecuteFunctions.getNodeParameter.mockReturnValueOnce({}); // options
mockExecuteFunctions.getNodeParameter.mockReturnValueOnce('approval');
// configureWaitTillDate

View File

@@ -5,7 +5,10 @@ import type {
INodeProperties,
} from 'n8n-workflow';
import { createEmailBody } from '../../../../../../utils/sendAndWait/email-templates';
import {
createEmailBodyWithN8nAttribution,
createEmailBodyWithoutN8nAttribution,
} from '../../../../../../utils/sendAndWait/email-templates';
import {
getSendAndWaitConfig,
getSendAndWaitProperties,
@@ -34,9 +37,13 @@ export async function execute(this: IExecuteFunctions, index: number, items: INo
buttons.push(createButton(config.url, option.label, option.value, option.style));
}
const instanceId = this.getInstanceId();
const bodyContent = createEmailBody(config.message, buttons.join('\n'), instanceId);
let bodyContent: string;
if (config.appendAttribution !== false) {
const instanceId = this.getInstanceId();
bodyContent = createEmailBodyWithN8nAttribution(config.message, buttons.join('\n'), instanceId);
} else {
bodyContent = createEmailBodyWithoutN8nAttribution(config.message, buttons.join('\n'));
}
const fields: IDataObject = {
subject: config.title,

View File

@@ -23,15 +23,18 @@ export async function execute(this: IExecuteFunctions, i: number, instanceId: st
const chatId = this.getNodeParameter('chatId', i, '', { extractValue: true }) as string;
const config = getSendAndWaitConfig(this);
const attributionText = 'This message was sent automatically with';
const link = createUtmCampaignLink('n8n-nodes-base.microsoftTeams', instanceId);
const attribution = `<em>${attributionText} <a href="${link}">n8n</a></em>`;
const buttons = config.options.map(
(option) => `<a href="${config.url}?approved=${option.value}">${option.label}</a>`,
);
const content = `${config.message}<br><br>${buttons.join(' ')}<br><br>${attribution}`;
let content = `${config.message}<br><br>${buttons.join(' ')}`;
if (config.appendAttribution !== false) {
const attributionText = 'This message was sent automatically with';
const link = createUtmCampaignLink('n8n-nodes-base.microsoftTeams', instanceId);
const attribution = `<em>${attributionText} <a href="${link}">n8n</a></em>`;
content += `<br><br>${attribution}`;
}
const body = {
body: {