diff --git a/.github/scripts/utils/docs-generator.js b/.github/scripts/utils/docs-generator.js index 4261f869..8f35b763 100644 --- a/.github/scripts/utils/docs-generator.js +++ b/.github/scripts/utils/docs-generator.js @@ -3,197 +3,198 @@ import { join, dirname } from 'path' import { fileURLToPath } from 'url' function fileExists(filePath) { - try { - return existsSync(filePath); - } catch { - return false; - } + try { + return existsSync(filePath) + } catch { + return false + } } function getFileHash(content) { - // Simple hash function for content comparison - let hash = 0; - for (let i = 0; i < content.length; i++) { - const char = content.charCodeAt(i); - hash = ((hash << 5) - hash) + char; - hash = hash & hash; // Convert to 32-bit integer - } - return hash.toString(); + // Simple hash function for content comparison + let hash = 0 + for (let i = 0; i < content.length; i++) { + const char = content.charCodeAt(i) + hash = (hash << 5) - hash + char + hash = hash & hash // Convert to 32-bit integer + } + return hash.toString() } function capitalize(str) { - // Add spaces before uppercase letters (for camelCase) and capitalize first letter - return str - .replace(/([a-z])([A-Z])/g, '$1 $2') - .charAt(0).toUpperCase() + str.replace(/([a-z])([A-Z])/g, '$1 $2').slice(1) + // Add spaces before uppercase letters (for camelCase) and capitalize first letter + return ( + str + .replace(/([a-z])([A-Z])/g, '$1 $2') + .charAt(0) + .toUpperCase() + str.replace(/([a-z])([A-Z])/g, '$1 $2').slice(1) + ) } function preserveEscaping(text) { - if (!text) return ''; - const escapedText = JSON.stringify(text) - return `{${escapedText}}`; + if (!text) return '' + const escapedText = JSON.stringify(text) + return `{${escapedText}}` } function generateResponseField(name, field, required = []) { - const isRequired = required.includes(name) - const title = field['x-zui']?.title || name - - // Handle type display with multiple types and enums - let typeDisplay = 'string' // default - let enumOptions = null - - if (field.type) { - if (Array.isArray(field.type)) { - // Multiple types - join with " | " - typeDisplay = field.type.join(' | ') - } else { - typeDisplay = field.type - } - } - - // Handle anyOf/oneOf for multiple types - if (field.anyOf || field.oneOf) { - const schemas = field.anyOf || field.oneOf - const types = schemas.map(schema => { - if (schema.type === 'null') return 'null' - return schema.type || 'string' - }) - typeDisplay = types.join(' | ') - } - - // Handle format - if (field.format && !field.enum) { - typeDisplay = `${typeDisplay} (${field.format})` - } - - // Handle enums - use enum format - if (field.enum) { - const baseType = field.type || 'string' - typeDisplay = `enum<${baseType}>` - enumOptions = field.enum - } - - const requiredProp = isRequired ? '\n required' : '' - let defaultProp = '' - if (field.default !== undefined) { - if (typeof field.default === 'string') { - defaultProp = `\n default="${field.default}"` - } else { - defaultProp = `\n default={${JSON.stringify(field.default)}}` - } + const isRequired = required.includes(name) + const title = field['x-zui']?.title || name + + // Handle type display with multiple types and enums + let typeDisplay = 'string' // default + let enumOptions = null + + if (field.type) { + if (Array.isArray(field.type)) { + // Multiple types - join with " | " + typeDisplay = field.type.join(' | ') + } else { + typeDisplay = field.type } - let description = preserveEscaping(field.description || '') - - // Add enum options to description if present - if (enumOptions) { - const formattedOptions = enumOptions.map(option => `\`${option}\``).join(', ') - const enumText = `\n\nAvailable options: ${formattedOptions}` - description = description ? description + enumText : enumText.trim() + } + + // Handle anyOf/oneOf for multiple types + if (field.anyOf || field.oneOf) { + const schemas = field.anyOf || field.oneOf + const types = schemas.map((schema) => { + if (schema.type === 'null') return 'null' + return schema.type || 'string' + }) + typeDisplay = types.join(' | ') + } + + // Handle format + if (field.format && !field.enum) { + typeDisplay = `${typeDisplay} (${field.format})` + } + + // Handle enums - use enum format + if (field.enum) { + const baseType = field.type || 'string' + typeDisplay = `enum<${baseType}>` + enumOptions = field.enum + } + + const requiredProp = isRequired ? '\n required' : '' + let defaultProp = '' + if (field.default !== undefined) { + if (typeof field.default === 'string') { + defaultProp = `\n default="${field.default}"` + } else { + defaultProp = `\n default={${JSON.stringify(field.default)}}` } - - let fieldContent = ` `\`${option}\``).join(', ') + const enumText = `\n\nAvailable options: ${formattedOptions}` + description = description ? description + enumText : enumText.trim() + } + + let fieldContent = ` ${description}` - - // Handle nested properties for objects - if (field.type === 'object' && field.properties) { - const nestedRequired = field.required || [] - const nestedFields = Object.entries(field.properties) - .map(([nestedName, nestedField]) => generateResponseField(nestedName, nestedField, nestedRequired)) - .join('\n') - - if (nestedFields) { - fieldContent += `\n\n \n${nestedFields}\n ` - } + + // Handle nested properties for objects + if (field.type === 'object' && field.properties) { + const nestedRequired = field.required || [] + const nestedFields = Object.entries(field.properties) + .map(([nestedName, nestedField]) => generateResponseField(nestedName, nestedField, nestedRequired)) + .join('\n') + + if (nestedFields) { + fieldContent += `\n\n \n${nestedFields}\n ` } - - // Handle arrays with object items - if (field.type === 'array' && field.items) { - let arrayItemContent = '' - - // Handle simple object items - if (field.items.properties) { - const nestedRequired = field.items.required || [] - const nestedFields = Object.entries(field.items.properties) - .map(([nestedName, nestedField]) => generateResponseField(nestedName, nestedField, nestedRequired)) - .join('\n') - - if (nestedFields) { - arrayItemContent = `\n\n \n${nestedFields}\n ` - } - } - - // Handle anyOf/oneOf schemas (multiple possible item types) - else if (field.items.anyOf || field.items.oneOf) { - const schemas = field.items.anyOf || field.items.oneOf - let tabContent = '' - - schemas.forEach((schema, index) => { - if (schema.properties) { - const schemaRequired = schema.required || [] - const schemaFields = Object.entries(schema.properties) - .map(([nestedName, nestedField]) => generateResponseField(nestedName, nestedField, schemaRequired)) - .join('\n') - - if (schemaFields) { - const tabTitle = schema.properties.type?.const - ? schema.properties.type.const - : `Option ${index + 1}` - tabContent += `\n + } + + // Handle arrays with object items + if (field.type === 'array' && field.items) { + let arrayItemContent = '' + + // Handle simple object items + if (field.items.properties) { + const nestedRequired = field.items.required || [] + const nestedFields = Object.entries(field.items.properties) + .map(([nestedName, nestedField]) => generateResponseField(nestedName, nestedField, nestedRequired)) + .join('\n') + + if (nestedFields) { + arrayItemContent = `\n\n \n${nestedFields}\n ` + } + } + + // Handle anyOf/oneOf schemas (multiple possible item types) + else if (field.items.anyOf || field.items.oneOf) { + const schemas = field.items.anyOf || field.items.oneOf + let tabContent = '' + + schemas.forEach((schema, index) => { + if (schema.properties) { + const schemaRequired = schema.required || [] + const schemaFields = Object.entries(schema.properties) + .map(([nestedName, nestedField]) => generateResponseField(nestedName, nestedField, schemaRequired)) + .join('\n') + + if (schemaFields) { + const tabTitle = schema.properties.type?.const ? schema.properties.type.const : `Option ${index + 1}` + tabContent += `\n ${schemaFields} ` - } - } - }) - - if (tabContent) { - arrayItemContent = `\n\n ${tabContent}\n ` - } - } - - if (arrayItemContent) { - fieldContent += arrayItemContent + } } + }) + + if (tabContent) { + arrayItemContent = `\n\n ${tabContent}\n ` + } + } + + if (arrayItemContent) { + fieldContent += arrayItemContent } - - fieldContent += `\n ` - - return fieldContent + } + + fieldContent += `\n ` + + return fieldContent } function generateExpandableSection(schema, title) { - if (!schema?.properties) { - return `\n \n No specific fields documented.\n \n` - } - - const required = schema.required || [] - const fields = Object.entries(schema.properties) - .map(([name, field]) => generateResponseField(name, field, required)) - .join('\n') - - return `\n${fields}\n` + if (!schema?.properties) { + return `\n \n No specific fields documented.\n \n` + } + + const required = schema.required || [] + const fields = Object.entries(schema.properties) + .map(([name, field]) => generateResponseField(name, field, required)) + .join('\n') + + return `\n${fields}\n` } function generateActionSection(actionName, actionData) { - const title = actionData.title || capitalize(actionName) - const description = preserveEscaping(actionData.description || '') - - // Generate input section wrapped in ResponseField - let inputSection = '' - if (actionData.input?.schema?.properties && Object.keys(actionData.input.schema.properties).length > 0) { - const required = actionData.input.schema.required || [] - const fields = Object.entries(actionData.input.schema.properties) - .map(([name, field]) => generateResponseField(name, field, required)) - .join('\n') - - const inputDescription = preserveEscaping(actionData.input.schema.description || '') - const descriptionSection = inputDescription ? ` ${inputDescription}\n\n` : '' - - inputSection = ` 0) { + const required = actionData.input.schema.required || [] + const fields = Object.entries(actionData.input.schema.properties) + .map(([name, field]) => generateResponseField(name, field, required)) + .join('\n') + + const inputDescription = preserveEscaping(actionData.input.schema.description || '') + const descriptionSection = inputDescription ? ` ${inputDescription}\n\n` : '' + + inputSection = ` @@ -201,27 +202,27 @@ ${descriptionSection} ${fields} ` - } else { - inputSection = ` This Card has no input fields. ` - } - - // Generate output section wrapped in ResponseField - let outputSection = '' - if (actionData.output?.schema?.properties && Object.keys(actionData.output.schema.properties).length > 0) { - const required = actionData.output.schema.required || [] - const fields = Object.entries(actionData.output.schema.properties) - .map(([name, field]) => generateResponseField(name, field, required)) - .join('\n') - - const outputDescription = preserveEscaping(actionData.output.schema.description || '') - const descriptionSection = outputDescription ? ` ${outputDescription}\n\n` : '' - - outputSection = ` 0) { + const required = actionData.output.schema.required || [] + const fields = Object.entries(actionData.output.schema.properties) + .map(([name, field]) => generateResponseField(name, field, required)) + .join('\n') + + const outputDescription = preserveEscaping(actionData.output.schema.description || '') + const descriptionSection = outputDescription ? ` ${outputDescription}\n\n` : '' + + outputSection = ` @@ -229,40 +230,40 @@ ${descriptionSection} ${fields} ` - } else { - outputSection = ` This Card has no output. ` - } - - // Build the section with optional description - let section = `### ${title}\n\n` - - if (description) { - section += `${description}\n\n` - } - - section += `${inputSection}\n\n${outputSection}\n\n` - - return section + } + + // Build the section with optional description + let section = `### ${title}\n\n` + + if (description) { + section += `${description}\n\n` + } + + section += `${inputSection}\n\n${outputSection}\n\n` + + return section } function generateTriggerSection(eventName, eventData) { - const title = eventData.title || capitalize(eventName) - const description = preserveEscaping(eventData.description || '') - - // Generate payload section - let payloadSection - if (eventData.schema?.properties && Object.keys(eventData.schema.properties).length > 0) { - const required = eventData.schema.required || [] - const fields = Object.entries(eventData.schema.properties) - .map(([name, field]) => generateResponseField(name, field, required)) - .join('\n') - - payloadSection = ` 0) { + const required = eventData.schema.required || [] + const fields = Object.entries(eventData.schema.properties) + .map(([name, field]) => generateResponseField(name, field, required)) + .join('\n') + + payloadSection = ` @@ -272,48 +273,53 @@ function generateTriggerSection(eventName, eventData) { ${fields} ` - } else { - payloadSection = ` This Trigger has no payload. ` - } - - // Build the section with optional description - let section = `### ${title}\n\n` - - if (description) { - section += `${description}\n\n` - } - - section += `${payloadSection}\n\n` - - return section + } + + // Build the section with optional description + let section = `### ${title}\n\n` + + if (description) { + section += `${description}\n\n` + } + + section += `${payloadSection}\n\n` + + return section } function generateCardDocumentation(integrationName, actions) { - let mdxContent = `{/* This file is auto-generated. Do not edit directly. */} + let mdxContent = `{/* This file is auto-generated. Do not edit directly. */} {/* vale off */} Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: ` - - // Generate action sections - for (const [actionName, actionData] of Object.entries(actions)) { - mdxContent += generateActionSection(actionName, actionData) + + // Generate action sections + for (const [actionName, actionData] of Object.entries(actions)) { + // Skip actions hidden in studio (API returns string "true", not boolean) + const isHidden = actionData.attributes?.bpActionHiddenInStudio + if (isHidden === true || isHidden === 'true') { + continue } - - // Add vale on comment at the end - mdxContent += '\n{/* vale on */}' - - return mdxContent + mdxContent += generateActionSection(actionName, actionData) + } + + // Add vale on comment at the end + mdxContent += '\n{/* vale on */}' + + return mdxContent } function generateTriggerDocumentation(integrationName, events) { - let mdxContent = `{/* This file is auto-generated. Do not edit directly. */} + let mdxContent = `{/* This file is auto-generated. Do not edit directly. */} {/* vale off */} Here's a reference for all [Triggers](/studio/concepts/triggers/) available with the integration: @@ -325,16 +331,21 @@ You can access data returned from any of these Triggers by reading \`event.paylo ` - - // Generate trigger sections - for (const [eventName, eventData] of Object.entries(events)) { - mdxContent += generateTriggerSection(eventName, eventData) + + // Generate trigger sections + for (const [eventName, eventData] of Object.entries(events)) { + // Skip events hidden in studio (API returns string "true", not boolean) + const isHidden = eventData.attributes?.bpActionHiddenInStudio + if (isHidden === true || isHidden === 'true') { + continue } - - // Add vale on comment at the end - mdxContent += '\n{/* vale on */}' - - return mdxContent + mdxContent += generateTriggerSection(eventName, eventData) + } + + // Add vale on comment at the end + mdxContent += '\n{/* vale on */}' + + return mdxContent } /** @@ -345,59 +356,58 @@ You can access data returned from any of these Triggers by reading \`event.paylo * @param {string} [baseDir] - Base directory for the script (defaults to current script's directory) */ async function updateVersionsFile(integrationName, version, id, baseDir = null) { - // Get the directory of the current script or use provided baseDir - const __filename = fileURLToPath(import.meta.url) - const __dirname = baseDir || dirname(__filename) - - // Path to versions.mdx file - const versionsFilePath = join(__dirname, '../../../snippets/integrations/versions.mdx') - - if (!existsSync(versionsFilePath)) { - console.log(`versions.mdx file not found at ${versionsFilePath}`) - return false + // Get the directory of the current script or use provided baseDir + const __filename = fileURLToPath(import.meta.url) + const __dirname = baseDir || dirname(__filename) + + // Path to versions.mdx file + const versionsFilePath = join(__dirname, '../../../snippets/integrations/versions.mdx') + + if (!existsSync(versionsFilePath)) { + console.log(`versions.mdx file not found at ${versionsFilePath}`) + return false + } + + try { + // Read and evaluate the versions.mdx file to get the integrationVersions object + const fileContent = readFileSync(versionsFilePath, 'utf8') + + // Extract the integrationVersions object from the file content + // The file exports: export const integrationVersions = { ... } + const match = fileContent.match(/export const integrationVersions = ({[\s\S]*})/m) + if (!match) { + throw new Error('Could not find integrationVersions export in versions.mdx') } - - try { - // Read and evaluate the versions.mdx file to get the integrationVersions object - const fileContent = readFileSync(versionsFilePath, 'utf8') - - // Extract the integrationVersions object from the file content - // The file exports: export const integrationVersions = { ... } - const match = fileContent.match(/export const integrationVersions = ({[\s\S]*})/m) - if (!match) { - throw new Error('Could not find integrationVersions export in versions.mdx') - } - - // Parse the JSON object - const integrationVersions = JSON.parse(match[1]) - - // Check if this is an update or new entry - const isUpdate = integrationVersions.hasOwnProperty(integrationName) - - // Update the object - integrationVersions[integrationName] = { - version: version, - id: id - } - - // Generate the new file content - const newContent = `export const integrationVersions = ${JSON.stringify(integrationVersions, null, 2)}\n` - - // Write the updated content back to the file - writeFileSync(versionsFilePath, newContent, 'utf8') - - if (isUpdate) { - console.log(`Updated ${integrationName} version (${version})...`) - } else { - console.log(`Added ${integrationName} version (${version})...`) - } - - return true - - } catch (error) { - console.error(`Error updating version for ${integrationName}:`, error.message) - return false + + // Parse the JSON object + const integrationVersions = JSON.parse(match[1]) + + // Check if this is an update or new entry + const isUpdate = integrationVersions.hasOwnProperty(integrationName) + + // Update the object + integrationVersions[integrationName] = { + version: version, + id: id, + } + + // Generate the new file content + const newContent = `export const integrationVersions = ${JSON.stringify(integrationVersions, null, 2)}\n` + + // Write the updated content back to the file + writeFileSync(versionsFilePath, newContent, 'utf8') + + if (isUpdate) { + console.log(`Updated ${integrationName} version (${version})...`) + } else { + console.log(`Added ${integrationName} version (${version})...`) } + + return true + } catch (error) { + console.error(`Error updating version for ${integrationName}:`, error.message) + return false + } } /** @@ -408,121 +418,121 @@ async function updateVersionsFile(integrationName, version, id, baseDir = null) * @returns {Object} Result object with update information */ export async function processIntegration(integrationName, integrationData, baseDir = null) { - // Get the directory of the current script or use provided baseDir - const __filename = fileURLToPath(import.meta.url) - const __dirname = baseDir || dirname(__filename) - - // Create the paths to the cards and triggers directories - const cardsDir = join(__dirname, '../../../snippets/integrations/cards') - const triggersDir = join(__dirname, '../../../snippets/integrations/triggers') - - const result = { - cards: { updated: false, isNew: false, count: 0 }, - triggers: { updated: false, isNew: false, count: 0 } + // Get the directory of the current script or use provided baseDir + const __filename = fileURLToPath(import.meta.url) + const __dirname = baseDir || dirname(__filename) + + // Create the paths to the cards and triggers directories + const cardsDir = join(__dirname, '../../../snippets/integrations/cards') + const triggersDir = join(__dirname, '../../../snippets/integrations/triggers') + + const result = { + cards: { updated: false, isNew: false, count: 0 }, + triggers: { updated: false, isNew: false, count: 0 }, + } + + const { actions: integrationActions, events: integrationEvents, workspace, version, id } = integrationData + + // Sanitize integration name for file system (replace slashes with hyphens) + const sanitizedName = integrationName.replace(/\//g, '-') + + // Handle Cards documentation + if (integrationActions && Object.keys(integrationActions).length > 0) { + // Create workspace subdirectory for cards + const cardsWorkspaceDir = join(cardsDir, workspace) + if (!existsSync(cardsWorkspaceDir)) { + mkdirSync(cardsWorkspaceDir, { recursive: true }) } - - const { actions: integrationActions, events: integrationEvents, workspace, version, id } = integrationData - - // Sanitize integration name for file system (replace slashes with hyphens) - const sanitizedName = integrationName.replace(/\//g, '-') - - // Handle Cards documentation - if (integrationActions && Object.keys(integrationActions).length > 0) { - // Create workspace subdirectory for cards - const cardsWorkspaceDir = join(cardsDir, workspace) - if (!existsSync(cardsWorkspaceDir)) { - mkdirSync(cardsWorkspaceDir, { recursive: true }) - } - - // Generate new card content - const cardFilePath = join(cardsWorkspaceDir, `${sanitizedName}.mdx`) - const newCardContent = generateCardDocumentation(integrationName, integrationActions) - - // Check if file exists and content has changed - const cardFileExisted = fileExists(cardFilePath) - let cardHasChanged = true - - if (cardFileExisted) { - try { - const existingContent = readFileSync(cardFilePath, 'utf8') - const existingHash = getFileHash(existingContent) - const newHash = getFileHash(newCardContent) - cardHasChanged = existingHash !== newHash - } catch (error) { - console.log(`Could not read existing card file ${cardFilePath}, treating as new...`) - cardHasChanged = true - } - } - - if (cardHasChanged || !cardFileExisted) { - writeFileSync(cardFilePath, newCardContent, 'utf8') - - const actionCount = Object.keys(integrationActions).length - result.cards.updated = true - result.cards.isNew = !cardFileExisted - result.cards.count = actionCount - - if (!cardFileExisted) { - console.log(`Created ${sanitizedName} Cards reference...`) - } else { - console.log(`Updated ${sanitizedName} Cards reference...`) - } - } + + // Generate new card content + const cardFilePath = join(cardsWorkspaceDir, `${sanitizedName}.mdx`) + const newCardContent = generateCardDocumentation(integrationName, integrationActions) + + // Check if file exists and content has changed + const cardFileExisted = fileExists(cardFilePath) + let cardHasChanged = true + + if (cardFileExisted) { + try { + const existingContent = readFileSync(cardFilePath, 'utf8') + const existingHash = getFileHash(existingContent) + const newHash = getFileHash(newCardContent) + cardHasChanged = existingHash !== newHash + } catch (error) { + console.log(`Could not read existing card file ${cardFilePath}, treating as new...`) + cardHasChanged = true + } } - - // Handle Triggers documentation - if (integrationEvents && Object.keys(integrationEvents).length > 0) { - // Create workspace subdirectory for triggers - const triggersWorkspaceDir = join(triggersDir, workspace) - if (!existsSync(triggersWorkspaceDir)) { - mkdirSync(triggersWorkspaceDir, { recursive: true }) - } - - // Generate new trigger content - const triggerFilePath = join(triggersWorkspaceDir, `${sanitizedName}.mdx`) - const newTriggerContent = generateTriggerDocumentation(integrationName, integrationEvents) - - // Check if file exists and content has changed - const triggerFileExisted = fileExists(triggerFilePath) - let triggerHasChanged = true - - if (triggerFileExisted) { - try { - const existingContent = readFileSync(triggerFilePath, 'utf8') - const existingHash = getFileHash(existingContent) - const newHash = getFileHash(newTriggerContent) - triggerHasChanged = existingHash !== newHash - } catch (error) { - console.log(`Could not read existing trigger file ${triggerFilePath}, treating as new...`) - triggerHasChanged = true - } - } - - if (triggerHasChanged || !triggerFileExisted) { - writeFileSync(triggerFilePath, newTriggerContent, 'utf8') - - const eventCount = Object.keys(integrationEvents).length - result.triggers.updated = true - result.triggers.isNew = !triggerFileExisted - result.triggers.count = eventCount - - if (!triggerFileExisted) { - console.log(`Created ${sanitizedName} Triggers reference...`) - } else { - console.log(`Updated ${sanitizedName} Triggers reference...`) - } - } + + if (cardHasChanged || !cardFileExisted) { + writeFileSync(cardFilePath, newCardContent, 'utf8') + + const actionCount = Object.keys(integrationActions).length + result.cards.updated = true + result.cards.isNew = !cardFileExisted + result.cards.count = actionCount + + if (!cardFileExisted) { + console.log(`Created ${sanitizedName} Cards reference...`) + } else { + console.log(`Updated ${sanitizedName} Cards reference...`) + } } - - // Update versions.mdx file if we have version and id information - if (version && id && (result.cards.updated || result.triggers.updated)) { - const versionUpdated = await updateVersionsFile(integrationName, version, id, baseDir) - if (versionUpdated) { - result.versionUpdated = true - } + } + + // Handle Triggers documentation + if (integrationEvents && Object.keys(integrationEvents).length > 0) { + // Create workspace subdirectory for triggers + const triggersWorkspaceDir = join(triggersDir, workspace) + if (!existsSync(triggersWorkspaceDir)) { + mkdirSync(triggersWorkspaceDir, { recursive: true }) } - - return result + + // Generate new trigger content + const triggerFilePath = join(triggersWorkspaceDir, `${sanitizedName}.mdx`) + const newTriggerContent = generateTriggerDocumentation(integrationName, integrationEvents) + + // Check if file exists and content has changed + const triggerFileExisted = fileExists(triggerFilePath) + let triggerHasChanged = true + + if (triggerFileExisted) { + try { + const existingContent = readFileSync(triggerFilePath, 'utf8') + const existingHash = getFileHash(existingContent) + const newHash = getFileHash(newTriggerContent) + triggerHasChanged = existingHash !== newHash + } catch (error) { + console.log(`Could not read existing trigger file ${triggerFilePath}, treating as new...`) + triggerHasChanged = true + } + } + + if (triggerHasChanged || !triggerFileExisted) { + writeFileSync(triggerFilePath, newTriggerContent, 'utf8') + + const eventCount = Object.keys(integrationEvents).length + result.triggers.updated = true + result.triggers.isNew = !triggerFileExisted + result.triggers.count = eventCount + + if (!triggerFileExisted) { + console.log(`Created ${sanitizedName} Triggers reference...`) + } else { + console.log(`Updated ${sanitizedName} Triggers reference...`) + } + } + } + + // Update versions.mdx file if we have version and id information + if (version && id && (result.cards.updated || result.triggers.updated)) { + const versionUpdated = await updateVersionsFile(integrationName, version, id, baseDir) + if (versionUpdated) { + result.versionUpdated = true + } + } + + return result } /** @@ -532,35 +542,35 @@ export async function processIntegration(integrationName, integrationData, baseD * @returns {Object} Summary of all updates */ export async function processIntegrations(integrations, baseDir = null) { - const updatedCards = [] - const newCards = [] - const updatedTriggers = [] - const newTriggers = [] - - for (const [integrationName, integrationData] of Object.entries(integrations)) { - const result = await processIntegration(integrationName, integrationData, baseDir) - - if (result.cards.updated) { - if (result.cards.isNew) { - newCards.push(integrationName) - } else { - updatedCards.push(integrationName) - } - } - - if (result.triggers.updated) { - if (result.triggers.isNew) { - newTriggers.push(integrationName) - } else { - updatedTriggers.push(integrationName) - } - } + const updatedCards = [] + const newCards = [] + const updatedTriggers = [] + const newTriggers = [] + + for (const [integrationName, integrationData] of Object.entries(integrations)) { + const result = await processIntegration(integrationName, integrationData, baseDir) + + if (result.cards.updated) { + if (result.cards.isNew) { + newCards.push(integrationName) + } else { + updatedCards.push(integrationName) + } } - - return { - updatedCards, - newCards, - updatedTriggers, - newTriggers + + if (result.triggers.updated) { + if (result.triggers.isNew) { + newTriggers.push(integrationName) + } else { + updatedTriggers.push(integrationName) + } } + } + + return { + updatedCards, + newCards, + updatedTriggers, + newTriggers, + } } diff --git a/snippets/integrations/cards/botpress/confluence.mdx b/snippets/integrations/cards/botpress/confluence.mdx index b40380a8..094e1a6c 100644 --- a/snippets/integrations/cards/botpress/confluence.mdx +++ b/snippets/integrations/cards/botpress/confluence.mdx @@ -233,286 +233,6 @@ Available options: `current`, `draft`, `archived`, `historical`, `trashed`, `any This Card has no output. -### List items in folder - -{"List the files and folders in a folder"} - - - - - {"The folder's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - {"Optional search filters"} - - - - {"The entity type"} - -Available options: `file`, `folder` - - - {"Filter the items by maximum size (in bytes)"} - - - {"Filter the items modified after the given date"} - - - - - {"The token to get the next page of items. Leave empty to get the first page."} - - - - - - - - {"The files and folders in the folder"} - - - - - - {"The file's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The file's name. This will be displayed in the Botpress UI and be used as the file's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the file is in the root folder."} - - - {"The absolute path of the file. Leave empty if not available."} - - - {"The file size in bytes, if available"} - - - {"The last modified date of the file, if available"} - - - {"The hash of the file content, or version/revision number, if available"} - - - - - - - {"The folder's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The folder's name. This will be displayed in the Botpress UI and be used as the folder's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the folder is in the root folder."} - - - {"The absolute path of the folder. Leave empty if not available."} - - - - - - - - - - - {"The token to get the next page of items."} - - - - - - -### Transfer file to Botpress - -{"Transfer a file from an external service to Botpress"} - - - - - {"The file to transfer"} - - - - {"The file's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The file's name. This will be displayed in the Botpress UI and be used as the file's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the file is in the root folder."} - - - {"The absolute path of the file. Leave empty if not available."} - - - {"The file size in bytes, if available"} - - - {"The last modified date of the file, if available"} - - - {"The hash of the file content, or version/revision number, if available"} - - - - - {"The file key to use in Botpress"} - - - {"Whether to index the file in vector storage"} - - - - - - - - {"The file ID of the uploaded file on Botpress"} - - - - ### Get Page -### List items in folder - -{"List the files and folders in a folder"} - - - - - {"The folder's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - {"Optional search filters"} - - - - {"The entity type"} - -Available options: `file`, `folder` - - - {"Filter the items by maximum size (in bytes)"} - - - {"Filter the items modified after the given date"} - - - - - {"The token to get the next page of items. Leave empty to get the first page."} - - - - - - - - {"The files and folders in the folder"} - - - - - - {"The file's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The file's name. This will be displayed in the Botpress UI and be used as the file's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the file is in the root folder."} - - - {"The absolute path of the file. Leave empty if not available."} - - - {"The file size in bytes, if available"} - - - {"The last modified date of the file, if available"} - - - {"The hash of the file content, or version/revision number, if available"} - - - - - - - {"The folder's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The folder's name. This will be displayed in the Botpress UI and be used as the folder's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the folder is in the root folder."} - - - {"The absolute path of the folder. Leave empty if not available."} - - - - - - - - - - - {"The token to get the next page of items."} - - - - - - -### Transfer file to Botpress - -{"Transfer a file from an external service to Botpress"} - - - - - {"The file to transfer"} - - - - {"The file's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The file's name. This will be displayed in the Botpress UI and be used as the file's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the file is in the root folder."} - - - {"The absolute path of the file. Leave empty if not available."} - - - {"The file size in bytes, if available"} - - - {"The last modified date of the file, if available"} - - - {"The hash of the file content, or version/revision number, if available"} - - - - - {"The file key to use in Botpress"} - - - {"Whether to index the file in vector storage"} - - - - - - - - {"The file ID of the uploaded file on Botpress"} - - - - ### List items in a folder {"List files and folders in dropbox within a directory"} diff --git a/snippets/integrations/cards/botpress/freshchat.mdx b/snippets/integrations/cards/botpress/freshchat.mdx index 7da9efe5..355f6533 100644 --- a/snippets/integrations/cards/botpress/freshchat.mdx +++ b/snippets/integrations/cards/botpress/freshchat.mdx @@ -3,963 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Create external user - -{"Create an end user in the external service and in Botpress"} - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - -### Start new HITL session - -{"Create a new HITL session in the external service and in Botpress"} - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - - {"Priority of the conversation. Leave empty for default priority."} - -Available options: `Low`, `Medium`, `High`, `Urgent` - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop HITL session - -{"Stop an existing HITL session in the external service"} - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/botpress/googledrive.mdx b/snippets/integrations/cards/botpress/googledrive.mdx index 0ae320dc..fdd586db 100644 --- a/snippets/integrations/cards/botpress/googledrive.mdx +++ b/snippets/integrations/cards/botpress/googledrive.mdx @@ -165,286 +165,6 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl -### List items in folder - -{"List the files and folders in a folder"} - - - - - {"The folder's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - {"Optional search filters"} - - - - {"The entity type"} - -Available options: `file`, `folder` - - - {"Filter the items by maximum size (in bytes)"} - - - {"Filter the items modified after the given date"} - - - - - {"The token to get the next page of items. Leave empty to get the first page."} - - - - - - - - {"The files and folders in the folder"} - - - - - - {"The file's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The file's name. This will be displayed in the Botpress UI and be used as the file's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the file is in the root folder."} - - - {"The absolute path of the file. Leave empty if not available."} - - - {"The file size in bytes, if available"} - - - {"The last modified date of the file, if available"} - - - {"The hash of the file content, or version/revision number, if available"} - - - - - - - {"The folder's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The folder's name. This will be displayed in the Botpress UI and be used as the folder's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the folder is in the root folder."} - - - {"The absolute path of the folder. Leave empty if not available."} - - - - - - - - - - - {"The token to get the next page of items."} - - - - - - -### Transfer file to Botpress - -{"Transfer a file from an external service to Botpress"} - - - - - {"The file to transfer"} - - - - {"The file's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The file's name. This will be displayed in the Botpress UI and be used as the file's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the file is in the root folder."} - - - {"The absolute path of the file. Leave empty if not available."} - - - {"The file size in bytes, if available"} - - - {"The last modified date of the file, if available"} - - - {"The hash of the file content, or version/revision number, if available"} - - - - - {"The file key to use in Botpress"} - - - {"Whether to index the file in vector storage"} - - - - - - - - {"The file ID of the uploaded file on Botpress"} - - - - ### List Files {"List files in Google Drive"} diff --git a/snippets/integrations/cards/botpress/hitl.mdx b/snippets/integrations/cards/botpress/hitl.mdx index 1f7cd9ad..355f6533 100644 --- a/snippets/integrations/cards/botpress/hitl.mdx +++ b/snippets/integrations/cards/botpress/hitl.mdx @@ -3,952 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Create external user - -{"Create an end user in the external service and in Botpress"} - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - -### Start new HITL session - -{"Create a new HITL session in the external service and in Botpress"} - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop HITL session - -{"Stop an existing HITL session in the external service"} - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/botpress/line.mdx b/snippets/integrations/cards/botpress/line.mdx index b11530e3..6774fc45 100644 --- a/snippets/integrations/cards/botpress/line.mdx +++ b/snippets/integrations/cards/botpress/line.mdx @@ -116,73 +116,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl -### Start Typing Indicator - - - - - - - - {"The message ID to which the typing indicator should be attached"} - - - {"The timeout in milliseconds after which the typing indicator should stop"} - - - - - - This Card has no output. - - -### Stop Typing Indicator - - - - - - - - {"The message ID from which the typing indicator should be removed"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/botpress/messenger.mdx b/snippets/integrations/cards/botpress/messenger.mdx index 8e946c30..c714ae42 100644 --- a/snippets/integrations/cards/botpress/messenger.mdx +++ b/snippets/integrations/cards/botpress/messenger.mdx @@ -148,73 +148,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl This Card has no output. -### Start Typing Indicator - - - - - - - - {"The message ID to which the typing indicator should be attached"} - - - {"The timeout in milliseconds after which the typing indicator should stop"} - - - - - - This Card has no output. - - -### Stop Typing Indicator - - - - - - - - {"The message ID from which the typing indicator should be removed"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/botpress/notion.mdx b/snippets/integrations/cards/botpress/notion.mdx index d12f7e09..0e9cedbb 100644 --- a/snippets/integrations/cards/botpress/notion.mdx +++ b/snippets/integrations/cards/botpress/notion.mdx @@ -128,286 +128,6 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl This Card has no output. -### List items in folder - -{"List the files and folders in a folder"} - - - - - {"The folder's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - {"Optional search filters"} - - - - {"The entity type"} - -Available options: `file`, `folder` - - - {"Filter the items by maximum size (in bytes)"} - - - {"Filter the items modified after the given date"} - - - - - {"The token to get the next page of items. Leave empty to get the first page."} - - - - - - - - {"The files and folders in the folder"} - - - - - - {"The file's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The file's name. This will be displayed in the Botpress UI and be used as the file's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the file is in the root folder."} - - - {"The absolute path of the file. Leave empty if not available."} - - - {"The file size in bytes, if available"} - - - {"The last modified date of the file, if available"} - - - {"The hash of the file content, or version/revision number, if available"} - - - - - - - {"The folder's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The folder's name. This will be displayed in the Botpress UI and be used as the folder's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the folder is in the root folder."} - - - {"The absolute path of the folder. Leave empty if not available."} - - - - - - - - - - - {"The token to get the next page of items."} - - - - - - -### Transfer file to Botpress - -{"Transfer a file from an external service to Botpress"} - - - - - {"The file to transfer"} - - - - {"The file's ID. This could be a unique identifier from the external service, or a relative or absolute path, so long as it's unique."} - - - - - - {"The file's name. This will be displayed in the Botpress UI and be used as the file's name on Files API.\""} - - - {"The parent folder ID. Leave empty if the file is in the root folder."} - - - {"The absolute path of the file. Leave empty if not available."} - - - {"The file size in bytes, if available"} - - - {"The last modified date of the file, if available"} - - - {"The hash of the file content, or version/revision number, if available"} - - - - - {"The file key to use in Botpress"} - - - {"Whether to index the file in vector storage"} - - - - - - - - {"The file ID of the uploaded file on Botpress"} - - - - ### Get Database {"Get a database from Notion"} diff --git a/snippets/integrations/cards/botpress/slack.mdx b/snippets/integrations/cards/botpress/slack.mdx index a38adfe5..992bbb09 100644 --- a/snippets/integrations/cards/botpress/slack.mdx +++ b/snippets/integrations/cards/botpress/slack.mdx @@ -293,74 +293,6 @@ Available options: `dm`, `channel` -### Start Typing Indicator - - - - - - - - {"The message ID to which the typing indicator should be attached"} - - - {"The timeout in milliseconds after which the typing indicator should stop"} - - - - - - This Card has no output. - - -### Stop Typing Indicator - - - - - - - - {"The message ID from which the typing indicator should be removed"} - - - - - - This Card has no output. - - ### Sync Members {"Sync Slack workspace members to Botpress users. This action keeps track of the last sync timestamp and will only sync updated members since the last sync."} diff --git a/snippets/integrations/cards/botpress/sunco.mdx b/snippets/integrations/cards/botpress/sunco.mdx index 5084c66b..f9fc0976 100644 --- a/snippets/integrations/cards/botpress/sunco.mdx +++ b/snippets/integrations/cards/botpress/sunco.mdx @@ -109,73 +109,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl -### Start Typing Indicator - - - - - - - - {"The message ID to which the typing indicator should be attached"} - - - {"The timeout in milliseconds after which the typing indicator should stop"} - - - - - - This Card has no output. - - -### Stop Typing Indicator - - - - - - - - {"The message ID from which the typing indicator should be removed"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/botpress/teams.mdx b/snippets/integrations/cards/botpress/teams.mdx index fc9e909a..037c2fde 100644 --- a/snippets/integrations/cards/botpress/teams.mdx +++ b/snippets/integrations/cards/botpress/teams.mdx @@ -55,73 +55,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl -### Start Typing Indicator - - - - - - - - {"The message ID to which the typing indicator should be attached"} - - - {"The timeout in milliseconds after which the typing indicator should stop"} - - - - - - This Card has no output. - - -### Stop Typing Indicator - - - - - - - - {"The message ID from which the typing indicator should be removed"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/botpress/telegram.mdx b/snippets/integrations/cards/botpress/telegram.mdx index fdd6a0a4..355f6533 100644 --- a/snippets/integrations/cards/botpress/telegram.mdx +++ b/snippets/integrations/cards/botpress/telegram.mdx @@ -3,73 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Start Typing Indicator - - - - - - - - {"The message ID to which the typing indicator should be attached"} - - - {"The timeout in milliseconds after which the typing indicator should stop"} - - - - - - This Card has no output. - - -### Stop Typing Indicator - - - - - - - - {"The message ID from which the typing indicator should be removed"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/botpress/webchat.mdx b/snippets/integrations/cards/botpress/webchat.mdx index 5e524784..cf1ce74d 100644 --- a/snippets/integrations/cards/botpress/webchat.mdx +++ b/snippets/integrations/cards/botpress/webchat.mdx @@ -223,74 +223,6 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl This Card has no output. -### Start Typing Indicator - - - - - - - - - - - - - - - - - This Card has no output. - - -### Stop Typing Indicator - - - - - - - - - - - - - - This Card has no output. - - ### Toggle Webchat {"Toggle the visibility of the webchat widget"} diff --git a/snippets/integrations/cards/botpress/whatsapp.mdx b/snippets/integrations/cards/botpress/whatsapp.mdx index d4b010f1..16dc324f 100644 --- a/snippets/integrations/cards/botpress/whatsapp.mdx +++ b/snippets/integrations/cards/botpress/whatsapp.mdx @@ -141,73 +141,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl -### Start Typing Indicator - - - - - - - - {"The message ID to which the typing indicator should be attached"} - - - {"The timeout in milliseconds after which the typing indicator should stop"} - - - - - - This Card has no output. - - -### Stop Typing Indicator - - - - - - - - {"The message ID from which the typing indicator should be removed"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/botpress/zendesk.mdx b/snippets/integrations/cards/botpress/zendesk.mdx index 31b28882..691c355a 100644 --- a/snippets/integrations/cards/botpress/zendesk.mdx +++ b/snippets/integrations/cards/botpress/zendesk.mdx @@ -417,52 +417,6 @@ Available options: `GET`, `POST`, `PUT`, `PATCH`, `DELETE` -### Create external user - -{"Create an end user in the external service and in Botpress"} - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - ### Find Customer {"Find a Customer in Zendesk"} @@ -853,942 +807,6 @@ Available options: `GET`, `POST`, `PUT`, `PATCH`, `DELETE` -### Start new HITL session - -{"Create a new HITL session in the external service and in Botpress"} - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - - {"Priority of the ticket. Leave empty for default priority."} - -Available options: `low`, `normal`, `high`, `urgent` - - - {"Name of the chatbot that will be used in the Zendesk ticket. Defaults to \"Botpress\"."} - - - {"Photo URL of the chatbot that will be used in the Zendesk ticket. Must be a publicly-accessible PNG image. Defaults to Botpress logo."} - - - {"The name of the requester the bot was talking to. This will be set in zendesk."} - - - {"⚠️This needs a requester name to work. The email of the requester the bot was talking to. This will be set in zendesk."} - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop HITL session - -{"Stop an existing HITL session in the external service"} - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - ### Sync Knowledge Base {"Sync Zendesk knowledge base to bot knowledge base"} diff --git a/snippets/integrations/cards/plus/plus-brevo-hitl.mdx b/snippets/integrations/cards/plus/plus-brevo-hitl.mdx index e0aa0084..355f6533 100644 --- a/snippets/integrations/cards/plus/plus-brevo-hitl.mdx +++ b/snippets/integrations/cards/plus/plus-brevo-hitl.mdx @@ -3,946 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Create User - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - -### Start Hitl - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop Hitl - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/plus/plus-chatwoot.mdx b/snippets/integrations/cards/plus/plus-chatwoot.mdx index 1f7cd9ad..355f6533 100644 --- a/snippets/integrations/cards/plus/plus-chatwoot.mdx +++ b/snippets/integrations/cards/plus/plus-chatwoot.mdx @@ -3,952 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Create external user - -{"Create an end user in the external service and in Botpress"} - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - -### Start new HITL session - -{"Create a new HITL session in the external service and in Botpress"} - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop HITL session - -{"Stop an existing HITL session in the external service"} - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/plus/plus-hubspot-help-desk-hitl.mdx b/snippets/integrations/cards/plus/plus-hubspot-help-desk-hitl.mdx index e0aa0084..355f6533 100644 --- a/snippets/integrations/cards/plus/plus-hubspot-help-desk-hitl.mdx +++ b/snippets/integrations/cards/plus/plus-hubspot-help-desk-hitl.mdx @@ -3,946 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Create User - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - -### Start Hitl - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop Hitl - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/plus/plus-hubspot-hitl.mdx b/snippets/integrations/cards/plus/plus-hubspot-hitl.mdx index e0aa0084..355f6533 100644 --- a/snippets/integrations/cards/plus/plus-hubspot-hitl.mdx +++ b/snippets/integrations/cards/plus/plus-hubspot-hitl.mdx @@ -3,946 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Create User - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - -### Start Hitl - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop Hitl - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/plus/plus-intercom-hitl.mdx b/snippets/integrations/cards/plus/plus-intercom-hitl.mdx index e0aa0084..355f6533 100644 --- a/snippets/integrations/cards/plus/plus-intercom-hitl.mdx +++ b/snippets/integrations/cards/plus/plus-intercom-hitl.mdx @@ -3,946 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Create User - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - -### Start Hitl - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop Hitl - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/plus/plus-livechat-hitl.mdx b/snippets/integrations/cards/plus/plus-livechat-hitl.mdx index e0aa0084..355f6533 100644 --- a/snippets/integrations/cards/plus/plus-livechat-hitl.mdx +++ b/snippets/integrations/cards/plus/plus-livechat-hitl.mdx @@ -3,946 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Create User - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - -### Start Hitl - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop Hitl - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/cards/plus/plus-zoho-sales-iq-hitl.mdx b/snippets/integrations/cards/plus/plus-zoho-sales-iq-hitl.mdx index e0aa0084..355f6533 100644 --- a/snippets/integrations/cards/plus/plus-zoho-sales-iq-hitl.mdx +++ b/snippets/integrations/cards/plus/plus-zoho-sales-iq-hitl.mdx @@ -3,946 +3,5 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration: -### Create User - - - - - {"Display name of the end user"} - - - {"URL of the end user's avatar"} - - - {"Email address of the end user"} - - - - - - - - {"ID of the Botpress user representing the end user"} - - - - -### Start Hitl - - - - - {"ID of the Botpress user representing the end user"} - - - {"Title of the HITL session. This corresponds to a ticket title in systems that use tickets."} - - - {"Description of the HITL session. This corresponds to a ticket description in systems that use tickets."} - - - - - - {"History of all messages in the conversation up to this point. Should be displayed to the human agent in the external service."} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Available options: `postback`, `url`, `say` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - -### Stop Hitl - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - - - This Card has no output. - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/botpress/freshchat.mdx b/snippets/integrations/triggers/botpress/freshchat.mdx index b65429db..3962fad5 100644 --- a/snippets/integrations/triggers/botpress/freshchat.mdx +++ b/snippets/integrations/triggers/botpress/freshchat.mdx @@ -9,50 +9,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/botpress/hitl.mdx b/snippets/integrations/triggers/botpress/hitl.mdx index b65429db..3962fad5 100644 --- a/snippets/integrations/triggers/botpress/hitl.mdx +++ b/snippets/integrations/triggers/botpress/hitl.mdx @@ -9,50 +9,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/botpress/zendesk.mdx b/snippets/integrations/triggers/botpress/zendesk.mdx index ea0da46c..8e6c95b9 100644 --- a/snippets/integrations/triggers/botpress/zendesk.mdx +++ b/snippets/integrations/triggers/botpress/zendesk.mdx @@ -58,50 +58,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/plus/plus-brevo-hitl.mdx b/snippets/integrations/triggers/plus/plus-brevo-hitl.mdx index 16641e17..a38d1e7a 100644 --- a/snippets/integrations/triggers/plus/plus-brevo-hitl.mdx +++ b/snippets/integrations/triggers/plus/plus-brevo-hitl.mdx @@ -9,32 +9,6 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - ### HITL Started {"Triggered when a HITL Session started"} @@ -76,24 +50,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/plus/plus-chatwoot.mdx b/snippets/integrations/triggers/plus/plus-chatwoot.mdx index 2a072f03..7104f340 100644 --- a/snippets/integrations/triggers/plus/plus-chatwoot.mdx +++ b/snippets/integrations/triggers/plus/plus-chatwoot.mdx @@ -9,32 +9,6 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - ### HITL Started {"Triggered when a HITL session started"} @@ -76,24 +50,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/plus/plus-hubspot-help-desk-hitl.mdx b/snippets/integrations/triggers/plus/plus-hubspot-help-desk-hitl.mdx index b65429db..3962fad5 100644 --- a/snippets/integrations/triggers/plus/plus-hubspot-help-desk-hitl.mdx +++ b/snippets/integrations/triggers/plus/plus-hubspot-help-desk-hitl.mdx @@ -9,50 +9,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/plus/plus-hubspot-hitl.mdx b/snippets/integrations/triggers/plus/plus-hubspot-hitl.mdx index b65429db..3962fad5 100644 --- a/snippets/integrations/triggers/plus/plus-hubspot-hitl.mdx +++ b/snippets/integrations/triggers/plus/plus-hubspot-hitl.mdx @@ -9,50 +9,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/plus/plus-intercom-hitl.mdx b/snippets/integrations/triggers/plus/plus-intercom-hitl.mdx index 16641e17..a38d1e7a 100644 --- a/snippets/integrations/triggers/plus/plus-intercom-hitl.mdx +++ b/snippets/integrations/triggers/plus/plus-intercom-hitl.mdx @@ -9,32 +9,6 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - ### HITL Started {"Triggered when a HITL Session started"} @@ -76,24 +50,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/plus/plus-livechat-hitl.mdx b/snippets/integrations/triggers/plus/plus-livechat-hitl.mdx index 16641e17..a38d1e7a 100644 --- a/snippets/integrations/triggers/plus/plus-livechat-hitl.mdx +++ b/snippets/integrations/triggers/plus/plus-livechat-hitl.mdx @@ -9,32 +9,6 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - ### HITL Started {"Triggered when a HITL Session started"} @@ -76,24 +50,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/triggers/plus/plus-zoho-sales-iq-hitl.mdx b/snippets/integrations/triggers/plus/plus-zoho-sales-iq-hitl.mdx index b65429db..3962fad5 100644 --- a/snippets/integrations/triggers/plus/plus-zoho-sales-iq-hitl.mdx +++ b/snippets/integrations/triggers/plus/plus-zoho-sales-iq-hitl.mdx @@ -9,50 +9,5 @@ You can access data returned from any of these Triggers by reading `event.payloa -### Hitl Assigned - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - {"ID of the Botpress user representing the human agent assigned to the HITL session"} - - - - -### Hitl Stopped - - - - - - - {"ID of the Botpress conversation representing the HITL session"} - - - - {/* vale on */} \ No newline at end of file diff --git a/snippets/integrations/versions.mdx b/snippets/integrations/versions.mdx index 29fca2bf..ae960045 100644 --- a/snippets/integrations/versions.mdx +++ b/snippets/integrations/versions.mdx @@ -380,8 +380,8 @@ export const integrationVersions = { "id": "intver_01KB60NV614CV1YH4C711K4KNT" }, "messenger": { - "version": "5.1.1", - "id": "intver_01KCVJT1XHFAWZVYFQR7FGK1K7" + "version": "5.1.2", + "id": "intver_01KE9TQKQRSNX2CYGETW4KQDYZ" }, "mindtickle": { "version": "2.0.0", @@ -644,8 +644,8 @@ export const integrationVersions = { "id": "intver_01KB69TJV9B8T0WPEEKZP36E1K" }, "sunco": { - "version": "1.2.0", - "id": "intver_01KCA0211FC20EHTYCSVFPFHER" + "version": "1.3.0", + "id": "intver_01KE7TGBW3KKHR88ZAA7EC9JJX" }, "surveymonkey": { "version": "2.0.0",