chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,223 @@
|
||||
import * as sdk from '@botpress/sdk'
|
||||
import proactiveConversation from 'bp_modules/proactive-conversation'
|
||||
import proactiveUser from 'bp_modules/proactive-user'
|
||||
|
||||
const emailProps = {
|
||||
cc: sdk.z
|
||||
.array(sdk.z.object({ email: sdk.z.string().email(), name: sdk.z.string().optional() }))
|
||||
.optional()
|
||||
.describe('The CC recipients of the initial email')
|
||||
.title('CC Recipients'),
|
||||
bcc: sdk.z
|
||||
.array(sdk.z.object({ email: sdk.z.string().email(), name: sdk.z.string().optional() }))
|
||||
.optional()
|
||||
.describe('The BCC recipients of the initial email')
|
||||
.title('BCC Recipients'),
|
||||
subject: sdk.z.string().optional().describe('The subject of the email').title('Email Subject'),
|
||||
}
|
||||
|
||||
export default new sdk.IntegrationDefinition({
|
||||
name: 'postmark',
|
||||
title: 'Postmark',
|
||||
description: 'Send and receive emails through Postmark',
|
||||
version: '0.1.1',
|
||||
readme: 'hub.md',
|
||||
icon: 'icon.svg',
|
||||
configuration: {
|
||||
schema: sdk.z.object({
|
||||
serverToken: sdk.z.string().secret().min(1).title('Server Token').describe('Your Postmark Server API Token'),
|
||||
fromEmail: sdk.z.string().email().min(1).title('From Email').describe('Default sender email address'),
|
||||
webhookSecret: sdk.z
|
||||
.string()
|
||||
.secret()
|
||||
.optional()
|
||||
.title('Webhook Secret')
|
||||
.describe(
|
||||
'Optional secret to verify inbound webhooks. Append ?secret=YOUR_SECRET to your Postmark webhook URL.'
|
||||
),
|
||||
}),
|
||||
},
|
||||
actions: {
|
||||
sendEmail: {
|
||||
title: 'Send Email',
|
||||
description: 'Send an email through Postmark',
|
||||
input: {
|
||||
schema: sdk.z
|
||||
.object({
|
||||
conversationInformation: sdk.z
|
||||
.object({
|
||||
rootEmailId: sdk.z
|
||||
.string()
|
||||
.optional()
|
||||
.describe('The ID of the root email in the thread')
|
||||
.title('Root Email ID'),
|
||||
lastEmailId: sdk.z
|
||||
.string()
|
||||
.optional()
|
||||
.describe('The ID of the last email in the thread')
|
||||
.title('Last Email ID'),
|
||||
})
|
||||
.optional()
|
||||
.describe('Information about the conversation thread, used to group emails into threads')
|
||||
.title('Conversation Information'),
|
||||
userEmailAddress: sdk.z.string().describe('The recipient email address').title('Recipient Email Address'),
|
||||
userName: sdk.z.string().optional().describe('The recipient name').title('Recipient Name'),
|
||||
cc: sdk.z
|
||||
.array(sdk.z.object({ email: sdk.z.string().email(), name: sdk.z.string().optional() }))
|
||||
.optional()
|
||||
.describe('The CC recipients of the initial email')
|
||||
.title('CC Recipients'),
|
||||
bcc: sdk.z
|
||||
.array(sdk.z.object({ email: sdk.z.string().email(), name: sdk.z.string().optional() }))
|
||||
.optional()
|
||||
.describe('The BCC recipients of the initial email')
|
||||
.title('BCC Recipients'),
|
||||
subject: sdk.z
|
||||
.string()
|
||||
.optional()
|
||||
.describe('The subject of the initial email')
|
||||
.title('Initial Email Subject'),
|
||||
text: sdk.z
|
||||
.string()
|
||||
.min(1)
|
||||
.describe('The body of the initial email that opens the thread')
|
||||
.title('Initial Email Body'),
|
||||
})
|
||||
.title('Conversation')
|
||||
.describe('The conversation object fields'),
|
||||
},
|
||||
output: {
|
||||
schema: sdk.z.object({
|
||||
conversationId: sdk.z
|
||||
.string()
|
||||
.describe('The ID of the conversation associated with the email')
|
||||
.title('Conversation ID'),
|
||||
}),
|
||||
},
|
||||
},
|
||||
},
|
||||
user: {
|
||||
tags: {
|
||||
emailAddress: {
|
||||
title: 'Email Address',
|
||||
description: 'Email address of the user',
|
||||
},
|
||||
},
|
||||
},
|
||||
channels: {
|
||||
mail: {
|
||||
title: 'Mail',
|
||||
description: 'Send and receive emails through Postmark',
|
||||
conversation: {
|
||||
tags: {
|
||||
threadRootMessageId: {
|
||||
title: 'Thread Root Message ID',
|
||||
description: 'The Message-ID of the first email in the thread, used to group replies into one conversation',
|
||||
},
|
||||
postmarkEmailAddress: {
|
||||
title: 'Postmark Email Address',
|
||||
description: 'The email address used in Postmark',
|
||||
},
|
||||
userEmailAddress: {
|
||||
title: 'User Email Address',
|
||||
description: 'The email address of the user',
|
||||
},
|
||||
},
|
||||
},
|
||||
message: {
|
||||
tags: {
|
||||
id: {
|
||||
title: 'Message ID',
|
||||
description: 'The ID of the email message',
|
||||
},
|
||||
emailMessageId: {
|
||||
title: 'Email Message-ID',
|
||||
description:
|
||||
'RFC 5322 Message-ID of the email. Absent on attachment sub-messages so they are excluded from thread reconstruction.',
|
||||
},
|
||||
subject: {
|
||||
title: 'Subject',
|
||||
description: 'The subject of the email',
|
||||
},
|
||||
cc: {
|
||||
title: 'CC',
|
||||
description: 'The CC recipients of the email',
|
||||
},
|
||||
bcc: {
|
||||
title: 'BCC',
|
||||
description: 'The BCC recipients of the email',
|
||||
},
|
||||
spamScore: {
|
||||
title: 'Spam Score',
|
||||
description: 'The spam score of the email as calculated by Postmark',
|
||||
},
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
text: { schema: sdk.messages.defaults.text.schema.extend(emailProps) },
|
||||
image: { schema: sdk.messages.defaults.image.schema.extend(emailProps) },
|
||||
audio: { schema: sdk.messages.defaults.audio.schema.extend(emailProps) },
|
||||
video: { schema: sdk.messages.defaults.video.schema.extend(emailProps) },
|
||||
file: { schema: sdk.messages.defaults.file.schema.extend(emailProps) },
|
||||
location: { schema: sdk.messages.defaults.location.schema.extend(emailProps) },
|
||||
carousel: { schema: sdk.messages.defaults.carousel.schema.extend(emailProps) },
|
||||
card: { schema: sdk.messages.defaults.card.schema.extend(emailProps) },
|
||||
dropdown: { schema: sdk.messages.defaults.dropdown.schema.extend(emailProps) },
|
||||
choice: { schema: sdk.messages.defaults.choice.schema.extend(emailProps) },
|
||||
bloc: { schema: sdk.messages.defaults.bloc.schema.extend(emailProps) },
|
||||
},
|
||||
},
|
||||
},
|
||||
entities: {
|
||||
conversation: {
|
||||
title: 'Conversation',
|
||||
description: 'A postmark replyThread',
|
||||
schema: sdk.z.object({
|
||||
conversationInformation: sdk.z
|
||||
.object({
|
||||
rootEmailId: sdk.z
|
||||
.string()
|
||||
.optional()
|
||||
.describe('The ID of the root email in the thread')
|
||||
.title('Root Email ID'),
|
||||
lastEmailId: sdk.z
|
||||
.string()
|
||||
.optional()
|
||||
.describe('The ID of the last email in the thread')
|
||||
.title('Last Email ID'),
|
||||
})
|
||||
.describe('Information about the conversation thread, used to group emails into threads')
|
||||
.title('Conversation Information'),
|
||||
}),
|
||||
},
|
||||
user: {
|
||||
title: 'User',
|
||||
description: 'A user in the Postmark channel',
|
||||
schema: sdk.z.object({}),
|
||||
},
|
||||
},
|
||||
attributes: {
|
||||
category: 'Communication & Channels',
|
||||
repo: 'botpress',
|
||||
},
|
||||
})
|
||||
.extend(proactiveConversation, ({ entities }) => ({
|
||||
entities: { conversation: entities.conversation },
|
||||
actions: {
|
||||
getOrCreateConversation: {
|
||||
name: 'getOrCreateReplyThreadConversation',
|
||||
title: 'Get or Create Reply Thread Conversation',
|
||||
description: 'Get or create a conversation for a reply thread',
|
||||
},
|
||||
},
|
||||
}))
|
||||
.extend(proactiveUser, ({ entities }) => ({
|
||||
entities: { user: entities.user },
|
||||
actions: {
|
||||
getOrCreateUser: {
|
||||
name: 'getOrCreateUser',
|
||||
title: 'Get or Create User',
|
||||
description: 'Get or create a user in the Postmark channel',
|
||||
},
|
||||
},
|
||||
}))
|
||||
Reference in New Issue
Block a user