Skip to content

Commit

Permalink
choose tickets to sync based on configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
aubin-tchoi committed Feb 20, 2025
1 parent 6c1db3f commit b388e71
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 6 deletions.
12 changes: 12 additions & 0 deletions connectors/src/connectors/zendesk/lib/sync_ticket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
upsertDataSourceDocument,
} from "@connectors/lib/data_sources";
import logger from "@connectors/logger/logger";
import type { ZendeskConfigurationResource } from "@connectors/resources/zendesk_resources";
import { ZendeskTicketResource } from "@connectors/resources/zendesk_resources";
import type { DataSourceConfig } from "@connectors/types/data_source_config";

Expand All @@ -25,6 +26,17 @@ function apiUrlToDocumentUrl(apiUrl: string): string {
return apiUrl.replace("/api/v2/", "/").replace(".json", "");
}

export function shouldSyncTicket(
ticket: ZendeskFetchedTicket,
configuration: ZendeskConfigurationResource
): boolean {
return [
"closed",
"solved",
...(configuration.syncUnresolvedTickets ? ["open", "pending", "hold"] : []),
].includes(ticket.status);
}

export function extractMetadataFromDocumentUrl(ticketUrl: string): {
brandSubdomain: string;
ticketId: number;
Expand Down
13 changes: 8 additions & 5 deletions connectors/src/connectors/zendesk/temporal/activities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ import {
} from "@connectors/connectors/zendesk/lib/id_conversions";
import { syncArticle } from "@connectors/connectors/zendesk/lib/sync_article";
import { syncCategory } from "@connectors/connectors/zendesk/lib/sync_category";
import { syncTicket } from "@connectors/connectors/zendesk/lib/sync_ticket";
import {
shouldSyncTicket,
syncTicket,
} from "@connectors/connectors/zendesk/lib/sync_ticket";
import { getZendeskSubdomainAndAccessToken } from "@connectors/connectors/zendesk/lib/zendesk_access_token";
import {
changeZendeskClientSubdomain,
Expand Down Expand Up @@ -654,12 +657,12 @@ export async function syncZendeskTicketBatchActivity({
return { hasMore: false, nextLink: "" };
}

const closedTickets = tickets.filter((t) =>
["closed", "solved"].includes(t.status)
const ticketsToSync = tickets.filter((t) =>
shouldSyncTicket(t, configuration)
);

const comments2d = await concurrentExecutor(
closedTickets,
ticketsToSync,
async (ticket) =>
fetchZendeskTicketComments({
accessToken,
Expand All @@ -679,7 +682,7 @@ export async function syncZendeskTicketBatchActivity({
});

const res = await concurrentExecutor(
_.zip(closedTickets, comments2d),
_.zip(ticketsToSync, comments2d),
async ([ticket, comments]) => {
if (!ticket || !comments) {
throw new Error(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { MIME_TYPES } from "@dust-tt/types";
import { syncArticle } from "@connectors/connectors/zendesk/lib/sync_article";
import {
deleteTicket,
shouldSyncTicket,
syncTicket,
} from "@connectors/connectors/zendesk/lib/sync_ticket";
import { getZendeskSubdomainAndAccessToken } from "@connectors/connectors/zendesk/lib/zendesk_access_token";
Expand All @@ -25,6 +26,7 @@ import { ConnectorResource } from "@connectors/resources/connector_resource";
import {
ZendeskBrandResource,
ZendeskCategoryResource,
ZendeskConfigurationResource,
} from "@connectors/resources/zendesk_resources";

/**
Expand Down Expand Up @@ -211,6 +213,11 @@ export async function syncZendeskTicketUpdateBatchActivity({
if (!connector) {
throw new Error("[Zendesk] Connector not found.");
}
const configuration =
await ZendeskConfigurationResource.fetchByConnectorId(connectorId);
if (!configuration) {
throw new Error(`[Zendesk] Configuration not found.`);
}
const dataSourceConfig = dataSourceConfigFromConnector(connector);
const loggerArgs = {
workspaceId: dataSourceConfig.workspaceId,
Expand Down Expand Up @@ -248,7 +255,7 @@ export async function syncZendeskTicketUpdateBatchActivity({
dataSourceConfig,
loggerArgs,
});
} else if (["solved", "closed"].includes(ticket.status)) {
} else if (shouldSyncTicket(ticket, configuration)) {
const comments = await fetchZendeskTicketComments({
accessToken,
brandSubdomain,
Expand Down

0 comments on commit b388e71

Please sign in to comment.