Freshdesk
Connect your Freshdesk support desk to Squid to search, create, and manage tickets
The Freshdesk connector's functionality
The Freshdesk connector enables Squid AI agents to work with support tickets on the user's behalf:
| Capability | Description |
|---|---|
| Search tickets | Text search of tickets, or list the most recently updated tickets |
| Get ticket details | Full ticket details including its conversation history, optionally with related tickets |
| Semantic search | Natural-language search over indexed tickets, including finding tickets similar to a given one |
| Create tickets | Create a ticket with a subject, description, requester email, priority, and status |
| Update tickets | Update a ticket's subject, description, priority, or status |
| Reply and add notes | Post a public (or private) reply on a ticket, or add a private internal note |
When Index Tickets is enabled, Squid syncs your ticket history into a knowledge base every 10 minutes, enabling the semantic search and similar-ticket features.
Finding your Freshdesk API key
The connector authenticates using your Freshdesk API key, which can be found in your Freshdesk profile settings under Your API Key. For details, see Freshdesk's documentation on finding your API key.
Adding the Freshdesk connector to your Squid application
-
Navigate to the Connectors tab in the Squid Console.
-
Click Available Connectors.
-
Find the Freshdesk connector, and select Add Connector.
-
Provide the following configuration details:
Connector ID: A string that uniquely identifies the connector in your code.
Subdomain: The subdomain of your Freshdesk instance. For example, if your instance is at https://mycompany.freshdesk.com, enter mycompany.
API Key: Your Freshdesk API key. The key is stored securely as a Squid secret.
Index Tickets: Enable semantic search and similarity features for Freshdesk tickets.
Ticket History Days: The number of days of ticket history to sync for indexing. Defaults to 30.
The semantic search and similar-ticket features require Index Tickets to be enabled. After enabling it, allow some time for the initial sync to complete.
Using the Freshdesk connector in your application
No-code Studio
-
Navigate to the Studio tab in the Squid Console.
-
Click Create AI Agent.
-
Provide an agent ID and description, such as "support-agent" and "This agent helps the user manage Freshdesk tickets".
-
Click Add Abilities.
-
Expand the Freshdesk entry and select the Freshdesk connector you created earlier.
-
Give a description for how the agent should use this connection, such as "Call this when a user wants to look up or manage support tickets."
-
Click on Test and try asking the agent "What are my most recent tickets?".
Using the Squid SDK
If you are creating your AI agent with the Squid SDK, connect the Freshdesk connector by adding it to the connectedIntegrations option of the ask() function:
- TypeScript
- Python
await this.squid
.ai()
.agent('AGENT_ID')
.ask('Find tickets about login problems and summarize them', {
connectedIntegrations: [
{
integrationId: 'FRESHDESK_CONNECTOR_ID',
integrationType: 'freshdesk',
description: 'Call this connector to look up and manage Freshdesk tickets',
},
],
});
await squid.ai().agent('AGENT_ID').ask(
'Find tickets about login problems and summarize them',
options={
'connectedIntegrations': [
{
'integrationId': 'FRESHDESK_CONNECTOR_ID',
'integrationType': 'freshdesk',
'description': 'Call this connector to look up and manage Freshdesk tickets',
}
]
},
)
Using the npm package
For programmatic (non-agent) access from your backend or client code, install the @squidcloud/freshdesk-client package:
npm install @squidcloud/freshdesk-client
import { FreshdeskClient } from '@squidcloud/freshdesk-client';
const freshdesk = new FreshdeskClient(squid, 'FRESHDESK_CONNECTOR_ID');
// Search and inspect tickets
const tickets = await freshdesk.searchTickets('login problems');
const details = await freshdesk.getTicketDetails(tickets[0].id);
// Create, reply, and resolve
const ticket = await freshdesk.createTicket('Login issue', 'User cannot log in.', 'user@example.com');
await freshdesk.replyToTicket(ticket.id, 'We are looking into this.');
await freshdesk.resolveTicket(ticket.id);
Freshdesk uses numeric values for priority (1 = Low, 2 = Medium, 3 = High, 4 = Urgent) and status (2 = Open, 3 = Pending, 4 = Resolved, 5 = Closed).