diff --git a/apps/sim/blocks/blocks/gong.ts b/apps/sim/blocks/blocks/gong.ts index 2a367701f40..7a28123fa3a 100644 --- a/apps/sim/blocks/blocks/gong.ts +++ b/apps/sim/blocks/blocks/gong.ts @@ -43,9 +43,13 @@ export const GongBlock: BlockConfig = { { label: 'List Trackers', id: 'list_trackers' }, { label: 'List Workspaces', id: 'list_workspaces' }, { label: 'List Flows', id: 'list_flows' }, + { label: 'Assign Flow Prospects', id: 'assign_flow_prospects' }, + { label: 'Get Prospect Flows', id: 'get_prospect_flows' }, { label: 'Get Coaching', id: 'get_coaching' }, { label: 'Lookup Email', id: 'lookup_email' }, { label: 'Lookup Phone', id: 'lookup_phone' }, + { label: 'Purge Email Address', id: 'purge_email_address' }, + { label: 'Purge Phone Number', id: 'purge_phone_number' }, ], value: () => 'list_calls', }, @@ -239,6 +243,12 @@ Return ONLY the timestamp string in ISO 8601 format - no explanations, no quotes type: 'short-input', placeholder: 'Comma-separated call IDs (optional)', condition: { field: 'operation', value: ['get_call_transcript', 'get_extensive_calls'] }, + wandConfig: { + enabled: true, + prompt: `Generate a comma-separated list of Gong call IDs based on the user's description. +Return ONLY the comma-separated list of IDs - no explanations, no extra text.`, + placeholder: 'Describe the call IDs (e.g., "calls 123456 and 789012")...', + }, }, { id: 'transcriptFromDateTime', @@ -289,6 +299,12 @@ Return ONLY the timestamp string in ISO 8601 format - no explanations, no quotes placeholder: 'Comma-separated user IDs (optional)', condition: { field: 'operation', value: 'get_extensive_calls' }, mode: 'advanced', + wandConfig: { + enabled: true, + prompt: `Generate a comma-separated list of Gong user IDs based on the user's description. +Return ONLY the comma-separated list of IDs - no explanations, no extra text.`, + placeholder: 'Describe the user IDs...', + }, }, // List Users inputs @@ -405,6 +421,12 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n ], }, mode: 'advanced', + wandConfig: { + enabled: true, + prompt: `Generate a comma-separated list of Gong user IDs based on the user's description. +Return ONLY the comma-separated list of IDs - no explanations, no extra text.`, + placeholder: 'Describe the user IDs...', + }, }, // Aggregate by Period inputs @@ -499,6 +521,12 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n placeholder: 'Comma-separated scorecard IDs (optional)', condition: { field: 'operation', value: 'answered_scorecards' }, mode: 'advanced', + wandConfig: { + enabled: true, + prompt: `Generate a comma-separated list of Gong scorecard IDs based on the user's description. +Return ONLY the comma-separated list of IDs - no explanations, no extra text.`, + placeholder: 'Describe the scorecard IDs...', + }, }, { id: 'reviewedUserIds', @@ -507,6 +535,12 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n placeholder: 'Comma-separated user IDs (optional)', condition: { field: 'operation', value: 'answered_scorecards' }, mode: 'advanced', + wandConfig: { + enabled: true, + prompt: `Generate a comma-separated list of Gong user IDs based on the user's description. +Return ONLY the comma-separated list of IDs - no explanations, no extra text.`, + placeholder: 'Describe the reviewed user IDs...', + }, }, // Get Folder Content inputs @@ -550,6 +584,38 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n required: { field: 'operation', value: 'list_flows' }, }, + // Assign Flow Prospects / Get Prospect Flows inputs + { + id: 'flowId', + title: 'Flow ID', + type: 'short-input', + placeholder: 'Enter the Gong Engage flow ID', + condition: { field: 'operation', value: 'assign_flow_prospects' }, + required: { field: 'operation', value: 'assign_flow_prospects' }, + }, + { + id: 'crmProspectsIds', + title: 'CRM Prospect IDs', + type: 'short-input', + placeholder: 'Comma-separated CRM contact or lead IDs', + condition: { field: 'operation', value: ['assign_flow_prospects', 'get_prospect_flows'] }, + required: { field: 'operation', value: ['assign_flow_prospects', 'get_prospect_flows'] }, + wandConfig: { + enabled: true, + prompt: `Generate a comma-separated list of CRM prospect IDs based on the user's description. +Return ONLY the comma-separated list of IDs - no explanations, no extra text.`, + placeholder: 'Describe the CRM prospect IDs...', + }, + }, + { + id: 'flowInstanceOwnerEmail', + title: 'Flow Instance Owner Email', + type: 'short-input', + placeholder: 'user@example.com', + condition: { field: 'operation', value: 'assign_flow_prospects' }, + required: { field: 'operation', value: 'assign_flow_prospects' }, + }, + // Get Coaching inputs { id: 'managerId', @@ -610,24 +676,24 @@ Return ONLY the timestamp string in ISO 8601 format - no explanations, no quotes }, }, - // Lookup Email inputs + // Lookup Email / Purge Email Address inputs { id: 'emailAddress', title: 'Email Address', type: 'short-input', placeholder: 'user@example.com', - condition: { field: 'operation', value: 'lookup_email' }, - required: { field: 'operation', value: 'lookup_email' }, + condition: { field: 'operation', value: ['lookup_email', 'purge_email_address'] }, + required: { field: 'operation', value: ['lookup_email', 'purge_email_address'] }, }, - // Lookup Phone inputs + // Lookup Phone / Purge Phone Number inputs { id: 'phoneNumber', title: 'Phone Number', type: 'short-input', placeholder: '+1234567890', - condition: { field: 'operation', value: 'lookup_phone' }, - required: { field: 'operation', value: 'lookup_phone' }, + condition: { field: 'operation', value: ['lookup_phone', 'purge_phone_number'] }, + required: { field: 'operation', value: ['lookup_phone', 'purge_phone_number'] }, }, // Pagination cursor (shared) @@ -692,9 +758,13 @@ Return ONLY the timestamp string in ISO 8601 format - no explanations, no quotes 'gong_list_trackers', 'gong_list_workspaces', 'gong_list_flows', + 'gong_assign_flow_prospects', + 'gong_get_prospect_flows', 'gong_get_coaching', 'gong_lookup_email', 'gong_lookup_phone', + 'gong_purge_email_address', + 'gong_purge_phone_number', ], config: { tool: (params) => `gong_${params.operation}`, @@ -763,8 +833,20 @@ Return ONLY the timestamp string in ISO 8601 format - no explanations, no quotes type: 'string', description: 'Email of a Gong user to retrieve personal and company flows', }, - emailAddress: { type: 'string', description: 'Email address to look up' }, - phoneNumber: { type: 'string', description: 'Phone number to look up' }, + flowId: { type: 'string', description: 'Gong Engage flow ID' }, + crmProspectsIds: { type: 'string', description: 'Comma-separated CRM prospect IDs' }, + flowInstanceOwnerEmail: { + type: 'string', + description: 'Email of the Gong user who owns the flow instance and its to-dos', + }, + emailAddress: { + type: 'string', + description: 'Email address to look up or purge', + }, + phoneNumber: { + type: 'string', + description: 'Phone number to look up or purge', + }, cursor: { type: 'string', description: 'Pagination cursor' }, }, outputs: { @@ -883,6 +965,18 @@ Return ONLY the timestamp string in ISO 8601 format - no explanations, no quotes 'Gong Engage flows: [{id, name, folderId, folderName, visibility, creationDate, exclusive}]', }, + // assign_flow_prospects / get_prospect_flows + prospectsAssigned: { + type: 'json', + description: + 'Prospects assigned to (or enrolled in) flows: [{flowId, flowName, crmProspectId, flowInstanceId, flowInstanceOwnerEmail, flowInstanceOwnerFullName, flowInstanceCreateDate, flowInstanceStatus, workspaceId, exclusive}]', + }, + prospectsNotAssigned: { + type: 'json', + description: + 'Prospects that failed to be assigned to a flow: [{flowId, crmProspectId, errorCode, errorMessage}]', + }, + // get_coaching coachingData: { type: 'json', diff --git a/apps/sim/tools/gong/aggregate_activity.ts b/apps/sim/tools/gong/aggregate_activity.ts index a962e00dc75..d7708966d30 100644 --- a/apps/sim/tools/gong/aggregate_activity.ts +++ b/apps/sim/tools/gong/aggregate_activity.ts @@ -197,6 +197,7 @@ export const aggregateActivityTool: ToolConfig< cursor: { type: 'string', description: 'Pagination cursor for the next page', + optional: true, }, }, } diff --git a/apps/sim/tools/gong/assign_flow_prospects.ts b/apps/sim/tools/gong/assign_flow_prospects.ts new file mode 100644 index 00000000000..3f8d6dca54b --- /dev/null +++ b/apps/sim/tools/gong/assign_flow_prospects.ts @@ -0,0 +1,133 @@ +import type { + GongAssignFlowProspectsParams, + GongAssignFlowProspectsResponse, +} from '@/tools/gong/types' +import { getGongErrorMessage, parseGongIdList } from '@/tools/gong/utils' +import type { ToolConfig } from '@/tools/types' + +export const assignFlowProspectsTool: ToolConfig< + GongAssignFlowProspectsParams, + GongAssignFlowProspectsResponse +> = { + id: 'gong_assign_flow_prospects', + name: 'Gong Assign Flow Prospects', + description: 'Assign up to 200 CRM prospects (contacts or leads) to a Gong Engage flow.', + version: '1.0.0', + + params: { + accessKey: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Gong API Access Key', + }, + accessKeySecret: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Gong API Access Key Secret', + }, + flowId: { + type: 'string', + required: true, + visibility: 'user-or-llm', + description: 'The Gong Engage flow ID to assign the prospects to', + }, + crmProspectsIds: { + type: 'string', + required: true, + visibility: 'user-or-llm', + description: 'Comma-separated list of CRM prospect IDs (contacts or leads) to assign', + }, + flowInstanceOwnerEmail: { + type: 'string', + required: true, + visibility: 'user-or-llm', + description: 'Email of the Gong user who owns the flow instance and its to-dos', + }, + }, + + request: { + url: 'https://api.gong.io/v2/flows/prospects/assign', + method: 'POST', + headers: (params) => ({ + 'Content-Type': 'application/json', + Authorization: `Basic ${btoa(`${params.accessKey}:${params.accessKeySecret}`)}`, + }), + body: (params) => ({ + flowId: params.flowId.trim(), + crmProspectsIds: parseGongIdList(params.crmProspectsIds) ?? [], + flowInstanceOwnerEmail: params.flowInstanceOwnerEmail.trim(), + }), + }, + + transformResponse: async (response: Response) => { + const data = await response.json() + if (!response.ok) { + throw new Error(getGongErrorMessage(data, 'Failed to assign prospects to flow')) + } + return { + success: true, + output: { + requestId: data.requestId ?? null, + prospectsAssigned: data.prospectsAssigned ?? [], + prospectsNotAssigned: data.prospectsNotAssigned ?? [], + }, + } + }, + + outputs: { + requestId: { + type: 'string', + description: 'A Gong request reference ID for troubleshooting purposes', + optional: true, + }, + prospectsAssigned: { + type: 'array', + description: 'Prospects successfully assigned to the flow', + items: { + type: 'object', + properties: { + flowId: { type: 'string', description: 'The flow ID' }, + flowName: { type: 'string', description: 'The flow name' }, + crmProspectId: { type: 'string', description: 'The CRM prospect ID' }, + flowInstanceId: { type: 'string', description: 'The created flow instance ID' }, + flowInstanceOwnerEmail: { + type: 'string', + description: 'Email of the flow instance owner', + }, + flowInstanceOwnerFullName: { + type: 'string', + description: 'Full name of the flow instance owner', + }, + flowInstanceCreateDate: { + type: 'string', + description: 'Creation time of the flow instance in ISO-8601 format', + }, + flowInstanceStatus: { type: 'string', description: 'Status of the flow instance' }, + workspaceId: { type: 'string', description: 'Workspace ID' }, + exclusive: { + type: 'boolean', + description: 'Whether this prospect can be added to other flows', + }, + }, + }, + }, + prospectsNotAssigned: { + type: 'array', + description: 'Prospects that failed to be assigned to the flow', + items: { + type: 'object', + properties: { + flowId: { type: 'string', description: 'The flow ID' }, + crmProspectId: { type: 'string', description: 'The CRM prospect ID' }, + errorCode: { + type: 'string', + description: 'Failure reason: InvalidArgument, InvalidState, or UnexpectedError', + }, + errorMessage: { type: 'string', description: 'Human-readable failure message' }, + }, + }, + }, + }, +} diff --git a/apps/sim/tools/gong/get_extensive_calls.ts b/apps/sim/tools/gong/get_extensive_calls.ts index eda3bcd3ff0..0ed7e8995ad 100644 --- a/apps/sim/tools/gong/get_extensive_calls.ts +++ b/apps/sim/tools/gong/get_extensive_calls.ts @@ -82,6 +82,8 @@ export const getExtensiveCallsTool: ToolConfig< const body: Record = { filter, contentSelector: { + context: 'Extended', + contextTiming: ['Now', 'TimeOfCall'], exposedFields: { parties: true, content: { diff --git a/apps/sim/tools/gong/get_prospect_flows.ts b/apps/sim/tools/gong/get_prospect_flows.ts new file mode 100644 index 00000000000..286153e9975 --- /dev/null +++ b/apps/sim/tools/gong/get_prospect_flows.ts @@ -0,0 +1,99 @@ +import type { GongGetProspectFlowsParams, GongGetProspectFlowsResponse } from '@/tools/gong/types' +import { getGongErrorMessage, parseGongIdList } from '@/tools/gong/utils' +import type { ToolConfig } from '@/tools/types' + +export const getProspectFlowsTool: ToolConfig< + GongGetProspectFlowsParams, + GongGetProspectFlowsResponse +> = { + id: 'gong_get_prospect_flows', + name: 'Gong Get Prospect Flows', + description: 'Get the Gong Engage flows currently assigned to the given CRM prospects.', + version: '1.0.0', + + params: { + accessKey: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Gong API Access Key', + }, + accessKeySecret: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Gong API Access Key Secret', + }, + crmProspectsIds: { + type: 'string', + required: true, + visibility: 'user-or-llm', + description: 'Comma-separated list of CRM prospect IDs (contacts or leads) to look up', + }, + }, + + request: { + url: 'https://api.gong.io/v2/flows/prospects', + method: 'POST', + headers: (params) => ({ + 'Content-Type': 'application/json', + Authorization: `Basic ${btoa(`${params.accessKey}:${params.accessKeySecret}`)}`, + }), + body: (params) => ({ + crmProspectsIds: parseGongIdList(params.crmProspectsIds) ?? [], + }), + }, + + transformResponse: async (response: Response) => { + const data = await response.json() + if (!response.ok) { + throw new Error(getGongErrorMessage(data, 'Failed to get prospect flows')) + } + return { + success: true, + output: { + requestId: data.requestId ?? null, + prospectsAssigned: data.prospectsAssigned ?? [], + }, + } + }, + + outputs: { + requestId: { + type: 'string', + description: 'A Gong request reference ID for troubleshooting purposes', + optional: true, + }, + prospectsAssigned: { + type: 'array', + description: 'Flows currently assigned to the requested prospects', + items: { + type: 'object', + properties: { + flowId: { type: 'string', description: 'The flow ID' }, + flowName: { type: 'string', description: 'The flow name' }, + crmProspectId: { type: 'string', description: 'The CRM prospect ID' }, + flowInstanceId: { type: 'string', description: 'The flow instance ID' }, + flowInstanceOwnerEmail: { + type: 'string', + description: 'Email of the flow instance owner', + }, + flowInstanceOwnerFullName: { + type: 'string', + description: 'Full name of the flow instance owner', + }, + flowInstanceCreateDate: { + type: 'string', + description: 'Creation time of the flow instance in ISO-8601 format', + }, + flowInstanceStatus: { type: 'string', description: 'Status of the flow instance' }, + workspaceId: { type: 'string', description: 'Workspace ID' }, + exclusive: { + type: 'boolean', + description: 'Whether this prospect can be added to other flows', + }, + }, + }, + }, + }, +} diff --git a/apps/sim/tools/gong/index.ts b/apps/sim/tools/gong/index.ts index 36b5e67de08..0d67c6a583c 100644 --- a/apps/sim/tools/gong/index.ts +++ b/apps/sim/tools/gong/index.ts @@ -1,6 +1,7 @@ import { aggregateActivityTool } from '@/tools/gong/aggregate_activity' import { aggregateByPeriodTool } from '@/tools/gong/aggregate_by_period' import { answeredScorecardsTool } from '@/tools/gong/answered_scorecards' +import { assignFlowProspectsTool } from '@/tools/gong/assign_flow_prospects' import { createCallTool } from '@/tools/gong/create_call' import { dayByDayActivityTool } from '@/tools/gong/day_by_day_activity' import { getCallTool } from '@/tools/gong/get_call' @@ -8,6 +9,7 @@ import { getCallTranscriptTool } from '@/tools/gong/get_call_transcript' import { getCoachingTool } from '@/tools/gong/get_coaching' import { getExtensiveCallsTool } from '@/tools/gong/get_extensive_calls' import { getFolderContentTool } from '@/tools/gong/get_folder_content' +import { getProspectFlowsTool } from '@/tools/gong/get_prospect_flows' import { getUserTool } from '@/tools/gong/get_user' import { interactionStatsTool } from '@/tools/gong/interaction_stats' import { listCallsTool } from '@/tools/gong/list_calls' @@ -19,6 +21,8 @@ import { listUsersTool } from '@/tools/gong/list_users' import { listWorkspacesTool } from '@/tools/gong/list_workspaces' import { lookupEmailTool } from '@/tools/gong/lookup_email' import { lookupPhoneTool } from '@/tools/gong/lookup_phone' +import { purgeEmailAddressTool } from '@/tools/gong/purge_email_address' +import { purgePhoneNumberTool } from '@/tools/gong/purge_phone_number' export const gongListCallsTool = listCallsTool export const gongCreateCallTool = createCallTool @@ -41,5 +45,9 @@ export const gongListFlowsTool = listFlowsTool export const gongGetCoachingTool = getCoachingTool export const gongLookupEmailTool = lookupEmailTool export const gongLookupPhoneTool = lookupPhoneTool +export const gongPurgeEmailAddressTool = purgeEmailAddressTool +export const gongPurgePhoneNumberTool = purgePhoneNumberTool +export const gongAssignFlowProspectsTool = assignFlowProspectsTool +export const gongGetProspectFlowsTool = getProspectFlowsTool export * from './types' diff --git a/apps/sim/tools/gong/interaction_stats.ts b/apps/sim/tools/gong/interaction_stats.ts index d8b16709174..b01da11cd5f 100644 --- a/apps/sim/tools/gong/interaction_stats.ts +++ b/apps/sim/tools/gong/interaction_stats.ts @@ -147,6 +147,7 @@ export const interactionStatsTool: ToolConfig< cursor: { type: 'string', description: 'Pagination cursor for the next page', + optional: true, }, }, } diff --git a/apps/sim/tools/gong/list_flows.ts b/apps/sim/tools/gong/list_flows.ts index 8200e53cfd6..6b2939e885e 100644 --- a/apps/sim/tools/gong/list_flows.ts +++ b/apps/sim/tools/gong/list_flows.ts @@ -130,6 +130,7 @@ export const listFlowsTool: ToolConfig = { + id: 'gong_purge_email_address', + name: 'Gong Purge Email Address', + description: + 'Erase all Gong data (calls, email messages, leads, contacts) referencing an email address. Asynchronous and irreversible.', + version: '1.0.0', + + params: { + accessKey: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Gong API Access Key', + }, + accessKeySecret: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Gong API Access Key Secret', + }, + emailAddress: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Email address whose associated data should be permanently erased from Gong', + }, + }, + + request: { + url: (params) => { + const url = new URL('https://api.gong.io/v2/data-privacy/erase-data-for-email-address') + url.searchParams.set('emailAddress', params.emailAddress.trim()) + return url.toString() + }, + method: 'POST', + headers: (params) => ({ + 'Content-Type': 'application/json', + Authorization: `Basic ${btoa(`${params.accessKey}:${params.accessKeySecret}`)}`, + }), + }, + + transformResponse: async (response: Response) => { + const data = await response.json() + if (!response.ok) { + throw new Error(getGongErrorMessage(data, 'Failed to erase email address data')) + } + return { + success: true, + output: { + requestId: data.requestId ?? null, + }, + } + }, + + outputs: { + requestId: { + type: 'string', + description: 'A Gong request reference ID for troubleshooting purposes', + optional: true, + }, + }, +} diff --git a/apps/sim/tools/gong/purge_phone_number.ts b/apps/sim/tools/gong/purge_phone_number.ts new file mode 100644 index 00000000000..3109f0b84ab --- /dev/null +++ b/apps/sim/tools/gong/purge_phone_number.ts @@ -0,0 +1,70 @@ +import type { GongPurgePhoneNumberParams, GongPurgePhoneNumberResponse } from '@/tools/gong/types' +import { getGongErrorMessage } from '@/tools/gong/utils' +import type { ToolConfig } from '@/tools/types' + +export const purgePhoneNumberTool: ToolConfig< + GongPurgePhoneNumberParams, + GongPurgePhoneNumberResponse +> = { + id: 'gong_purge_phone_number', + name: 'Gong Purge Phone Number', + description: + 'Erase all Gong data (calls, leads, contacts) referencing a phone number. Asynchronous and irreversible.', + version: '1.0.0', + + params: { + accessKey: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Gong API Access Key', + }, + accessKeySecret: { + type: 'string', + required: true, + visibility: 'user-only', + description: 'Gong API Access Key Secret', + }, + phoneNumber: { + type: 'string', + required: true, + visibility: 'user-only', + description: + 'Phone number whose associated data should be permanently erased from Gong. Must include a leading "+" and country code (e.g., +14255552671)', + }, + }, + + request: { + url: (params) => { + const url = new URL('https://api.gong.io/v2/data-privacy/erase-data-for-phone-number') + url.searchParams.set('phoneNumber', params.phoneNumber.trim()) + return url.toString() + }, + method: 'POST', + headers: (params) => ({ + 'Content-Type': 'application/json', + Authorization: `Basic ${btoa(`${params.accessKey}:${params.accessKeySecret}`)}`, + }), + }, + + transformResponse: async (response: Response) => { + const data = await response.json() + if (!response.ok) { + throw new Error(getGongErrorMessage(data, 'Failed to erase phone number data')) + } + return { + success: true, + output: { + requestId: data.requestId ?? null, + }, + } + }, + + outputs: { + requestId: { + type: 'string', + description: 'A Gong request reference ID for troubleshooting purposes', + optional: true, + }, + }, +} diff --git a/apps/sim/tools/gong/types.ts b/apps/sim/tools/gong/types.ts index 97151084576..31143bd1577 100644 --- a/apps/sim/tools/gong/types.ts +++ b/apps/sim/tools/gong/types.ts @@ -695,6 +695,76 @@ export interface GongLookupPhoneResponse extends ToolResponse { } } +/** Purge Email Address */ +export interface GongPurgeEmailAddressParams extends GongBaseParams { + emailAddress: string +} + +export interface GongPurgeEmailAddressResponse extends ToolResponse { + output: { + requestId: string | null + } +} + +/** Purge Phone Number */ +export interface GongPurgePhoneNumberParams extends GongBaseParams { + phoneNumber: string +} + +export interface GongPurgePhoneNumberResponse extends ToolResponse { + output: { + requestId: string | null + } +} + +/** Shared Engage Flow prospect assignment sub-types */ +interface GongAssignedFlow { + flowId: string + flowName: string + crmProspectId: string + flowInstanceId: string + flowInstanceOwnerEmail: string + flowInstanceOwnerFullName: string + flowInstanceCreateDate: string + flowInstanceStatus: string + workspaceId: string + exclusive: boolean +} + +interface GongAssignedFlowFailure { + flowId: string + crmProspectId: string + errorCode: string + errorMessage: string +} + +/** Assign Flow Prospects */ +export interface GongAssignFlowProspectsParams extends GongBaseParams { + flowId: string + crmProspectsIds: string + flowInstanceOwnerEmail: string +} + +export interface GongAssignFlowProspectsResponse extends ToolResponse { + output: { + requestId: string | null + prospectsAssigned: GongAssignedFlow[] + prospectsNotAssigned: GongAssignedFlowFailure[] + } +} + +/** Get Prospect Flows */ +export interface GongGetProspectFlowsParams extends GongBaseParams { + crmProspectsIds: string +} + +export interface GongGetProspectFlowsResponse extends ToolResponse { + output: { + requestId: string | null + prospectsAssigned: GongAssignedFlow[] + } +} + /** Union type for all Gong responses */ export type GongResponse = | GongListCallsResponse @@ -718,3 +788,7 @@ export type GongResponse = | GongGetCoachingResponse | GongLookupEmailResponse | GongLookupPhoneResponse + | GongPurgeEmailAddressResponse + | GongPurgePhoneNumberResponse + | GongAssignFlowProspectsResponse + | GongGetProspectFlowsResponse diff --git a/apps/sim/tools/registry.ts b/apps/sim/tools/registry.ts index 57683fc1349..4705ba5a0ba 100644 --- a/apps/sim/tools/registry.ts +++ b/apps/sim/tools/registry.ts @@ -1198,6 +1198,7 @@ import { gongAggregateActivityTool, gongAggregateByPeriodTool, gongAnsweredScorecardsTool, + gongAssignFlowProspectsTool, gongCreateCallTool, gongDayByDayActivityTool, gongGetCallTool, @@ -1205,6 +1206,7 @@ import { gongGetCoachingTool, gongGetExtensiveCallsTool, gongGetFolderContentTool, + gongGetProspectFlowsTool, gongGetUserTool, gongInteractionStatsTool, gongListCallsTool, @@ -1216,6 +1218,8 @@ import { gongListWorkspacesTool, gongLookupEmailTool, gongLookupPhoneTool, + gongPurgeEmailAddressTool, + gongPurgePhoneNumberTool, } from '@/tools/gong' import { googleSearchTool } from '@/tools/google' import { @@ -4503,6 +4507,7 @@ export const tools: Record = { gong_aggregate_activity: gongAggregateActivityTool, gong_aggregate_by_period: gongAggregateByPeriodTool, gong_answered_scorecards: gongAnsweredScorecardsTool, + gong_assign_flow_prospects: gongAssignFlowProspectsTool, gong_create_call: gongCreateCallTool, gong_day_by_day_activity: gongDayByDayActivityTool, gong_get_call: gongGetCallTool, @@ -4510,6 +4515,7 @@ export const tools: Record = { gong_get_coaching: gongGetCoachingTool, gong_get_extensive_calls: gongGetExtensiveCallsTool, gong_get_folder_content: gongGetFolderContentTool, + gong_get_prospect_flows: gongGetProspectFlowsTool, gong_get_user: gongGetUserTool, gong_interaction_stats: gongInteractionStatsTool, gong_list_calls: gongListCallsTool, @@ -4521,6 +4527,8 @@ export const tools: Record = { gong_list_workspaces: gongListWorkspacesTool, gong_lookup_email: gongLookupEmailTool, gong_lookup_phone: gongLookupPhoneTool, + gong_purge_email_address: gongPurgeEmailAddressTool, + gong_purge_phone_number: gongPurgePhoneNumberTool, grafana_get_dashboard: grafanaGetDashboardTool, grafana_list_dashboards: grafanaListDashboardsTool, grafana_create_dashboard: grafanaCreateDashboardTool,