Files
2026-07-13 13:34:48 +08:00

101 lines
3.5 KiB
TypeScript

import { IntegrationDefinition, z } from '@botpress/sdk'
import { sendEmailOutputSchema, sendMailInputSchema } from './definitions/actions'
import {
bouncedEmailEventSchema,
clickedEmailLinkEventSchema,
delayedDeliveryEmailEventSchema,
deliveredEmailEventSchema,
failedToSendEmailEventSchema,
markedAsSpamEmailEventSchema,
openedEmailEventSchema,
sentEmailEventSchema,
} from './definitions/events'
export default new IntegrationDefinition({
name: 'resend',
title: 'Resend',
version: '0.1.10',
readme: 'hub.md',
icon: 'icon.svg',
description: 'Send markdown rich-text emails using the Resend email service.',
configuration: {
schema: z.object({
apiKey: z.string().secret().min(1).describe('Your Resend API Key').title('Resend API Key'),
signingSecret: z
.string()
.secret()
.optional()
.describe(
'The secret key used to verify the authenticity of the webhook requests (Found in the webhook details page)'
)
.title('Webhook Signing Secret'),
}),
},
actions: {
sendMail: {
title: 'Send Email',
description: 'Sends an email to the specified email address',
input: {
schema: sendMailInputSchema,
},
output: {
schema: sendEmailOutputSchema,
},
},
},
events: {
delivered: {
title: 'Email delivered',
description:
"An event that triggers when the Resend API delivers an email to the recipient's email server. (This can also trigger alongside email bounces among other events)",
schema: deliveredEmailEventSchema,
},
bounced: {
title: 'Email bounced',
description: 'An event that triggers when a sent email bounces. (e.g. Invalid Address, blocked, etc)',
schema: bouncedEmailEventSchema,
},
delayedDelivery: {
title: 'Email delivery delayed',
description:
"An event that triggers when the Resend API fails a delivery attempt to the recipient's email server. (This will usually re-attempt a few times before stopping)",
schema: delayedDeliveryEmailEventSchema,
},
sent: {
title: 'Email sent',
description: 'An event that triggers when the Resend API has processed and sent the email.',
schema: sentEmailEventSchema,
},
opened: {
title: 'Email opened',
description:
"An event that triggers when the email has been opened by the recipient. (Must have 'Open Tracking' enabled)\n\nNote: This may be subject to privacy regulations of the email recipient's country",
schema: openedEmailEventSchema,
},
clicked: {
title: 'Email link clicked',
description:
"An event that triggers when a link in the email has been clicked on by the recipient. (Must have 'Click Tracking' enabled)\n\nNote: This may be subject to privacy regulations of the email recipient's country",
schema: clickedEmailLinkEventSchema,
},
markedAsSpam: {
title: 'Email marked as spam',
description: 'An event that triggers when the sent email is marked as spam by the recipient.',
schema: markedAsSpamEmailEventSchema,
},
// I was never able to trigger this event
failed: {
title: 'Email failed to send',
description: 'An event that triggers when the email could not be sent at all.',
schema: failedToSendEmailEventSchema,
},
},
__advanced: {
useLegacyZuiTransformer: true,
},
attributes: {
category: 'Marketing & Email',
repo: 'botpress',
},
})