Skip to content

Commit 983cb96

Browse files
committed
[ACTION] Freshdesk - Canned Responses
1 parent e78a749 commit 983cb96

File tree

6 files changed

+221
-1
lines changed

6 files changed

+221
-1
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import freshdesk from "../../freshdesk.app.mjs";
2+
3+
export default {
4+
key: "freshdesk-get-canned-response",
5+
name: "Get Canned Response",
6+
description: "View a Canned Response. [See the documentation](https://developers.freshdesk.com/api/#view_a_canned_response)",
7+
version: "0.0.1",
8+
type: "action",
9+
annotations: {
10+
destructiveHint: false,
11+
openWorldHint: true,
12+
readOnlyHint: true,
13+
},
14+
props: {
15+
freshdesk,
16+
cannedResponseId: {
17+
propDefinition: [
18+
freshdesk,
19+
"cannedResponseId",
20+
],
21+
},
22+
},
23+
async run({ $ }) {
24+
const {
25+
freshdesk,
26+
cannedResponseId,
27+
} = this;
28+
const response = await freshdesk.getCannedResponse({
29+
$,
30+
cannedResponseId,
31+
});
32+
response && $.export("$summary", `Successfully retrieved canned response: ${response.title}`);
33+
return response;
34+
},
35+
};
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import freshdesk from "../../freshdesk.app.mjs";
2+
3+
export default {
4+
key: "freshdesk-get-folder-canned-responses",
5+
name: "Get Canned Responses in a Folder",
6+
description: "View all the details of canned responses in a folder. [See the documentation](https://developers.freshdesk.com/api/#get_details_of_canned_responses_in_a_folder)",
7+
version: "0.0.1",
8+
annotations: {
9+
destructiveHint: false,
10+
openWorldHint: true,
11+
readOnlyHint: true,
12+
},
13+
type: "action",
14+
props: {
15+
freshdesk,
16+
cannedResponseFolderId: {
17+
propDefinition: [
18+
freshdesk,
19+
"cannedResponseFolderId",
20+
],
21+
},
22+
maxResults: {
23+
propDefinition: [
24+
freshdesk,
25+
"maxResults",
26+
],
27+
},
28+
},
29+
async run({ $ }) {
30+
const {
31+
freshdesk, cannedResponseFolderId, maxResults,
32+
} = this;
33+
const responses = await freshdesk.getPaginatedResources({
34+
fn: freshdesk.getFolderCannedResponses,
35+
max: maxResults,
36+
args: {
37+
folderId: cannedResponseFolderId,
38+
},
39+
});
40+
$.export("$summary", `Successfully retrieved ${responses.length} canned response(s) from folder`);
41+
return responses;
42+
},
43+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import freshdesk from "../../freshdesk.app.mjs";
2+
3+
export default {
4+
key: "freshdesk-list-all-folders",
5+
name: "List All Folders",
6+
description: "View all the canned response folders. [See the documentation](https://developers.freshdesk.com/api/#list_all_canned_response_folders)",
7+
version: "0.0.1",
8+
annotations: {
9+
destructiveHint: false,
10+
openWorldHint: true,
11+
readOnlyHint: true,
12+
},
13+
type: "action",
14+
props: {
15+
freshdesk,
16+
maxResults: {
17+
propDefinition: [
18+
freshdesk,
19+
"maxResults",
20+
],
21+
},
22+
},
23+
async run({ $ }) {
24+
const {
25+
freshdesk, maxResults,
26+
} = this;
27+
const folders = await freshdesk.getPaginatedResources({
28+
fn: freshdesk.listCannedResponseFolders,
29+
max: maxResults,
30+
args: {},
31+
});
32+
$.export("$summary", `Successfully retrieved ${folders.length} folder(s)`);
33+
return folders;
34+
},
35+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import freshdesk from "../../freshdesk.app.mjs";
2+
3+
export default {
4+
key: "freshdesk-list-folder-canned-responses",
5+
name: "List All Canned Responses in a Folder",
6+
description: "View all canned responses in a folder. [See the documentation](https://developers.freshdesk.com/api/#list_all_canned_responses_in_a_folder)",
7+
version: "0.0.1",
8+
annotations: {
9+
destructiveHint: false,
10+
openWorldHint: true,
11+
readOnlyHint: true,
12+
},
13+
type: "action",
14+
props: {
15+
freshdesk,
16+
cannedResponseFolderId: {
17+
propDefinition: [
18+
freshdesk,
19+
"cannedResponseFolderId",
20+
],
21+
},
22+
},
23+
async run({ $ }) {
24+
const {
25+
freshdesk, cannedResponseFolderId,
26+
} = this;
27+
const response = await freshdesk.listFolderCannedResponses({
28+
$,
29+
folderId: cannedResponseFolderId,
30+
});
31+
const responseCount = response?.canned_responses?.length || 0;
32+
$.export("$summary", `Successfully retrieved folder with ${responseCount} canned response(s)`);
33+
return response;
34+
},
35+
};

components/freshdesk/freshdesk.app.mjs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,42 @@ export default {
281281
return threads.map(({ id }) => id);
282282
},
283283
},
284+
cannedResponseId: {
285+
type: "integer",
286+
label: "Canned Response ID",
287+
description: "The ID of a canned response",
288+
async options({ page = 0 }) {
289+
const responses = await this.listAllCannedResponses({
290+
params: {
291+
page: page + 1,
292+
},
293+
});
294+
return responses.map(({
295+
id, title,
296+
}) => ({
297+
label: title || id,
298+
value: id,
299+
}));
300+
},
301+
},
302+
cannedResponseFolderId: {
303+
type: "integer",
304+
label: "Canned Response Folder ID",
305+
description: "The ID of a canned response folder",
306+
async options({ page = 0 }) {
307+
const folders = await this.listCannedResponseFolders({
308+
params: {
309+
page: page + 1,
310+
},
311+
});
312+
return folders.map(({
313+
id, name,
314+
}) => ({
315+
label: name || id,
316+
value: id,
317+
}));
318+
},
319+
},
284320
},
285321
methods: {
286322
setLastDateChecked(db, value) {
@@ -731,5 +767,41 @@ export default {
731767
...args,
732768
});
733769
},
770+
getCannedResponse({
771+
cannedResponseId, ...args
772+
}) {
773+
return this._makeRequest({
774+
url: `/canned_responses/${cannedResponseId}`,
775+
...args,
776+
});
777+
},
778+
listAllCannedResponses(args) {
779+
return this._makeRequest({
780+
url: "/canned_responses",
781+
...args,
782+
});
783+
},
784+
listCannedResponseFolders(args) {
785+
return this._makeRequest({
786+
url: "/canned_response_folders",
787+
...args,
788+
});
789+
},
790+
listFolderCannedResponses({
791+
folderId, ...args
792+
}) {
793+
return this._makeRequest({
794+
url: `/canned_response_folders/${folderId}`,
795+
...args,
796+
});
797+
},
798+
getFolderCannedResponses({
799+
folderId, ...args
800+
}) {
801+
return this._makeRequest({
802+
url: `/canned_response_folders/${folderId}/responses`,
803+
...args,
804+
});
805+
},
734806
},
735807
};

components/freshdesk/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@pipedream/freshdesk",
3-
"version": "0.7.0",
3+
"version": "0.8.0",
44
"description": "Pipedream Freshdesk Components",
55
"main": "freshdesk.app.mjs",
66
"keywords": [

0 commit comments

Comments
 (0)