chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,245 @@
|
||||
import { posthogHelper } from '@botpress/common'
|
||||
import { z, IntegrationDefinition, messages } from '@botpress/sdk'
|
||||
import proactiveConversation from 'bp_modules/proactive-conversation'
|
||||
import proactiveUser from 'bp_modules/proactive-user'
|
||||
import { dmChannelMessages } from './definitions/channel'
|
||||
|
||||
export const INTEGRATION_NAME = 'instagram'
|
||||
export const INTEGRATION_VERSION = '4.1.11'
|
||||
|
||||
const commonConfigSchema = z.object({
|
||||
replyToComments: z
|
||||
.boolean()
|
||||
.default(false)
|
||||
.title('Reply to Comments')
|
||||
.describe('If enabled, the bot will reply to comments on posts.'),
|
||||
})
|
||||
|
||||
export default new IntegrationDefinition({
|
||||
name: INTEGRATION_NAME,
|
||||
version: INTEGRATION_VERSION,
|
||||
title: 'Instagram',
|
||||
description: 'Automate interactions, manage comments, and send/receive messages all in real-time.',
|
||||
icon: 'icon.svg',
|
||||
readme: 'hub.md',
|
||||
configuration: {
|
||||
identifier: {
|
||||
linkTemplateScript: 'linkTemplate.vrl',
|
||||
},
|
||||
schema: commonConfigSchema,
|
||||
},
|
||||
configurations: {
|
||||
manual: {
|
||||
title: 'Manual Configuration',
|
||||
description: 'Configure by manually supplying the Meta app details',
|
||||
schema: z
|
||||
.object({
|
||||
clientSecret: z
|
||||
.string()
|
||||
.secret()
|
||||
.title('Client Secret')
|
||||
.describe('Instagram App secret from API setup View used for webhook signature check'),
|
||||
verifyToken: z
|
||||
.string()
|
||||
.secret()
|
||||
.title('Verify Token')
|
||||
.describe('Token used for verifying the Callback URL at API setup View'),
|
||||
accessToken: z
|
||||
.string()
|
||||
.secret()
|
||||
.title('Access token')
|
||||
.describe('Access Token for the Instagram Account from the API setup View'),
|
||||
instagramId: z.string().title('Instagram account ID').describe('Instagram Account Id from API setup View'),
|
||||
})
|
||||
.merge(commonConfigSchema),
|
||||
},
|
||||
sandbox: {
|
||||
title: 'Sandbox Configuration',
|
||||
description: 'Sandbox configuration, for testing purposes only',
|
||||
schema: z.object({}),
|
||||
identifier: {
|
||||
linkTemplateScript: 'sandboxLinkTemplate.vrl',
|
||||
},
|
||||
},
|
||||
},
|
||||
states: {
|
||||
oauth: {
|
||||
type: 'integration',
|
||||
schema: z.object({
|
||||
accessToken: z
|
||||
.string()
|
||||
.title('Access token')
|
||||
.describe('Access token used to authenticate requests to the Instagram API'),
|
||||
instagramId: z
|
||||
.string()
|
||||
.title('Instagram account ID')
|
||||
.describe('The Instagram account ID associated with the access token'),
|
||||
expirationTime: z
|
||||
.number()
|
||||
.title('Expiration time')
|
||||
.describe('The time when the access token expires, expressed as a Unix timestamp (epoch) in milliseconds'),
|
||||
}),
|
||||
},
|
||||
},
|
||||
identifier: {
|
||||
extractScript: 'extract.vrl',
|
||||
fallbackHandlerScript: 'fallbackHandler.vrl',
|
||||
},
|
||||
channels: {
|
||||
channel: {
|
||||
title: 'Direct Message',
|
||||
description: 'Direct message conversation between an Instagram user and the bot',
|
||||
messages: dmChannelMessages,
|
||||
message: {
|
||||
tags: {
|
||||
id: {
|
||||
title: 'Message ID',
|
||||
description: 'The Instagram message ID',
|
||||
},
|
||||
senderId: {
|
||||
title: 'Sender ID',
|
||||
description: 'The Instagram user ID of the message sender',
|
||||
},
|
||||
recipientId: {
|
||||
title: 'Recipient ID',
|
||||
description: 'The Instagram user ID of the message recipient',
|
||||
},
|
||||
commentId: {
|
||||
title: 'Comment ID',
|
||||
description: 'The Instagram comment ID under which the direct message conversation was started',
|
||||
},
|
||||
},
|
||||
},
|
||||
conversation: {
|
||||
tags: {
|
||||
id: {
|
||||
title: 'Conversation ID',
|
||||
description: 'The Instagram user ID of the user in the conversation',
|
||||
},
|
||||
commentId: {
|
||||
title: 'Comment ID',
|
||||
description: 'The Instagram comment ID under which the direct message conversation was started',
|
||||
},
|
||||
lastCommentId: {
|
||||
title: 'Last Comment ID',
|
||||
description: 'The Instagram comment ID of the last comment from which a direct message was sent',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
commentReplies: {
|
||||
title: 'Comment Replies',
|
||||
description: 'Replies to comments on an Instagram post',
|
||||
messages: {
|
||||
text: messages.defaults.text,
|
||||
},
|
||||
message: {
|
||||
tags: {
|
||||
id: {
|
||||
title: 'Comment ID',
|
||||
description: 'The unique ID of the comment',
|
||||
},
|
||||
postId: {
|
||||
title: 'Post ID',
|
||||
description: 'The Instagram post ID where the comment was posted',
|
||||
},
|
||||
},
|
||||
},
|
||||
conversation: {
|
||||
tags: {
|
||||
id: {
|
||||
title: 'Comment ID',
|
||||
description: 'The Instagram comment ID under which the reply was posted',
|
||||
},
|
||||
postId: {
|
||||
title: 'Post ID',
|
||||
description: 'The Instagram post ID where the comment was posted',
|
||||
},
|
||||
userId: {
|
||||
title: 'User ID',
|
||||
description: 'The Instagram user ID of the user who sent the comment',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
actions: {},
|
||||
events: {},
|
||||
secrets: {
|
||||
...posthogHelper.COMMON_SECRET_NAMES,
|
||||
CLIENT_ID: {
|
||||
description: 'The client ID of the OAuth Meta app.',
|
||||
},
|
||||
CLIENT_SECRET: {
|
||||
description: 'The client secret of the OAuth Meta app.',
|
||||
},
|
||||
VERIFY_TOKEN: {
|
||||
description: 'The verify token of the OAuth Meta app.',
|
||||
},
|
||||
SANDBOX_CLIENT_SECRET: {
|
||||
description: 'The client secret of the Sandbox Meta app',
|
||||
},
|
||||
SANDBOX_VERIFY_TOKEN: {
|
||||
description: 'The verify token for the Sandbox Meta App Webhooks subscription',
|
||||
},
|
||||
SANDBOX_ACCESS_TOKEN: {
|
||||
description: 'Access token for the Sandbox Meta App',
|
||||
},
|
||||
SANDBOX_INSTAGRAM_ID: {
|
||||
description: 'Instagram ID for the Sandbox Instagram profile',
|
||||
},
|
||||
},
|
||||
user: {
|
||||
tags: {
|
||||
id: {
|
||||
title: 'User ID',
|
||||
description: 'The Instagram user ID',
|
||||
},
|
||||
},
|
||||
},
|
||||
entities: {
|
||||
user: {
|
||||
title: 'User',
|
||||
description: 'An Instagram user',
|
||||
schema: z
|
||||
.object({
|
||||
id: z.string().title('ID').describe('The Instagram user ID'),
|
||||
})
|
||||
.title('User')
|
||||
.describe('The user object fields'),
|
||||
},
|
||||
dm: {
|
||||
title: 'Direct Message',
|
||||
description: 'An Instagram direct message conversation',
|
||||
schema: z
|
||||
.object({
|
||||
id: z.string().title('User ID').describe('The Instagram user ID of the user in the conversation'),
|
||||
commentId: z
|
||||
.string()
|
||||
.optional()
|
||||
.title('Comment ID')
|
||||
.describe('The Instagram comment ID under which the direct message conversation was started'),
|
||||
})
|
||||
.title('Conversation')
|
||||
.describe('The conversation object fields'),
|
||||
},
|
||||
},
|
||||
attributes: {
|
||||
category: 'Communication & Channels',
|
||||
guideSlug: 'instagram',
|
||||
repo: 'botpress',
|
||||
},
|
||||
})
|
||||
.extend(proactiveUser, ({ entities }) => ({
|
||||
entities: {
|
||||
user: entities.user,
|
||||
},
|
||||
}))
|
||||
.extend(proactiveConversation, ({ entities }) => ({
|
||||
entities: {
|
||||
conversation: entities.dm,
|
||||
},
|
||||
actions: {
|
||||
getOrCreateConversation: { name: 'getOrCreateConversationDm' },
|
||||
},
|
||||
}))
|
||||
Reference in New Issue
Block a user