Freshdesk CTI global sidebar sample based on the Freshdesk CTI tutorial. It loads your Zoom agent profile in the CTI pane and includes a demo dial pad built with Crayons React (FwSpinner, circular keys, layout).
Built on Freshworks Platform 3.0 (React Meta, Node 24.11.1, FDK 10.1.2).
| Part | Purpose |
|---|---|
| Agent card | Real integration — shows name, email, and Zoom user ID from Zoom (/users/me) via server-side OAuth |
| Dial pad + Call | UI demo only — illustrates Crayons styling and CTI layout; does not place production calls |
- Node 24.11.1 and FDK 10.1.2
- A Freshdesk account (for local testing with
?dev=true) - A Zoom account where you can create a Server-to-Server OAuth app
- Open Zoom Marketplace and sign in.
- Go to Develop → Build App.
- Choose Server-to-Server OAuth → Create.
- Enter an app name (e.g.
zoomdesk-dev) and complete the basic info.
- In the app, open Scopes.
- Click Add Scopes.
- Add
user:read:admin(under Users). - Save.
- Open Activation.
- Click Activate for your Zoom account (account admin may be required).
- Open App Credentials (or Basic Information → credentials section).
- Copy and store these three values — you will paste them into Freshdesk developer settings:
| Credential | Where it appears |
|---|---|
| Account ID | App Credentials page |
| Client ID | App Credentials page |
| Client Secret | App Credentials page (shown once; regenerate if lost) |
Keep the Client Secret private. Do not commit it to git.
From the app folder:
cd only-migration/cti-tutorial-freshdesk
npm install
fdk validate
fdk runLeave fdk run running. Note the local URLs printed in the terminal (typically http://localhost:10001).
While fdk run is active, configure installation parameters for your dev account.
-
Open http://localhost:10001/custom_configs in your browser.
-
Enter:
Field Value Zoom Account ID From Step 1.4 Zoom Client ID From Step 1.4 Zoom Client Secret From Step 1.4 -
Save.
- Open http://localhost:10001/system_settings.
- Set the same three Zoom fields if shown for your product.
- Save.
- Open your Freshdesk site with the dev flag, for example:
https://yourdomain.freshdesk.com/a/→ add?dev=true
(use&dev=trueif the URL already has query parameters). - When the browser asks to allow local network access, allow it (required for
fdk run). - Click the CTI headset strip and select the blue Z (zoomdesk) icon.
- Confirm the Agent card shows your Zoom name and email after a few seconds.
- Use Refresh if you changed credentials.
The dial pad and Call button are for trying the UI only. They are not documented as a supported calling integration.
| Symptom | What to check |
|---|---|
| Agent card empty or error | All three fields saved in custom configs; S2S app activated; scope user:read:admin added |
| App does not load in Freshdesk | fdk run still running; ?dev=true on URL; local network allowed |
| Invalid Client Secret | Regenerate secret in Zoom App Credentials and update custom configs |
cti-tutorial-freshdesk/
├── app/
│ ├── components/ CtiMain.jsx, ZoomdeskApp.jsx
│ ├── utils/ phone.js (demo dial helper)
│ ├── icon.svg
│ └── styles/ style.css, zoom-banner.png
├── config/ iparams.json, requests.json
├── server/ server.js (getAgent)
├── manifest.json
├── README.md
└── usecase.md
fdk validateTarget: 0 platform errors, 0 lint errors.
