Skip to content

Commit 6b3a082

Browse files
committed
syncmate_by_assitro init
1 parent 0ba5bc1 commit 6b3a082

File tree

4 files changed

+181
-4
lines changed

4 files changed

+181
-4
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import syncmateByAssitro from "../../syncmate_by_assitro.app.mjs";
2+
import { axios } from "@pipedream/platform";
3+
4+
export default {
5+
key: "syncmate_by_assitro-send-bulk-messages",
6+
name: "Send Bulk Messages",
7+
description: "Send multiple WhatsApp messages in bulk. [See the documentation](https://assistro.co/user-guide/bulk-messaging-at-a-scheduled-time-using-syncmate-2/)",
8+
version: "0.0.{{ts}}",
9+
type: "action",
10+
props: {
11+
syncmateByAssitro,
12+
numberOfMessages: {
13+
propDefinition: [
14+
syncmateByAssitro,
15+
"numberOfMessages",
16+
],
17+
},
18+
number: {
19+
propDefinition: [
20+
syncmateByAssitro,
21+
"number",
22+
],
23+
},
24+
message: {
25+
propDefinition: [
26+
syncmateByAssitro,
27+
"message",
28+
],
29+
},
30+
media: {
31+
propDefinition: [
32+
syncmateByAssitro,
33+
"media",
34+
],
35+
optional: true,
36+
},
37+
},
38+
async run({ $ }) {
39+
const response = await this.syncmateByAssitro.sendBulkMessages({
40+
numberOfMessages: this.numberOfMessages,
41+
number: this.number,
42+
message: this.message,
43+
media: this.media,
44+
});
45+
46+
$.export("$summary", `Successfully sent ${this.numberOfMessages} messages to ${this.number}`);
47+
return response;
48+
},
49+
};
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import syncmateByAssitro from "../../syncmate_by_assitro.app.mjs";
2+
import { axios } from "@pipedream/platform";
3+
4+
export default {
5+
key: "syncmate_by_assitro-send-message",
6+
name: "Send WhatsApp Message",
7+
description: "Send a single WhatsApp message using SyncMate by Assistro. [See the documentation](https://assistro.co/user-guide/connect-your-custom-app-with-syncmate/)",
8+
version: "0.0.{{ts}}",
9+
type: "action",
10+
props: {
11+
syncmateByAssitro,
12+
number: {
13+
propDefinition: [
14+
syncmateByAssitro,
15+
"number",
16+
],
17+
},
18+
message: {
19+
propDefinition: [
20+
syncmateByAssitro,
21+
"message",
22+
],
23+
},
24+
media: {
25+
propDefinition: [
26+
syncmateByAssitro,
27+
"media",
28+
],
29+
},
30+
},
31+
async run({ $ }) {
32+
const response = await this.syncmateByAssitro.sendSingleMessage({
33+
number: this.number,
34+
message: this.message,
35+
media: this.media,
36+
});
37+
38+
$.export("$summary", `Successfully sent message to ${this.number}`);
39+
return response;
40+
},
41+
};

components/syncmate_by_assitro/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
"publishConfig": {
1313
"access": "public"
1414
}
15-
}
15+
}
Lines changed: 90 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,98 @@
1+
import { axios } from "@pipedream/platform";
2+
13
export default {
24
type: "app",
35
app: "syncmate_by_assitro",
4-
propDefinitions: {},
6+
propDefinitions: {
7+
number: {
8+
type: "string",
9+
label: "Number",
10+
description: "WhatsApp number with country code",
11+
},
12+
message: {
13+
type: "string",
14+
label: "Message",
15+
description: "The text message to be sent",
16+
},
17+
media: {
18+
type: "string[]",
19+
label: "Media",
20+
description: "Base64 encoded media files",
21+
optional: true,
22+
default: [],
23+
},
24+
numberOfMessages: {
25+
type: "integer",
26+
label: "Number of Messages",
27+
description: "The number of messages to send in bulk",
28+
},
29+
},
530
methods: {
6-
// this.$auth contains connected account data
731
authKeys() {
832
console.log(Object.keys(this.$auth));
933
},
34+
_baseUrl() {
35+
return "https://app.assistro.co/api/v1/wapushplus";
36+
},
37+
async _makeRequest(opts = {}) {
38+
const {
39+
$ = this,
40+
method = "POST",
41+
path = "/",
42+
headers,
43+
...otherOpts
44+
} = opts;
45+
return axios($, {
46+
...otherOpts,
47+
method,
48+
url: this._baseUrl() + path,
49+
headers: {
50+
"Authorization": `Bearer ${this.$auth.api_key}`,
51+
"Content-Type": "application/json",
52+
...headers,
53+
},
54+
});
55+
},
56+
async sendSingleMessage({
57+
number, message, media = [],
58+
}) {
59+
const data = {
60+
msgs: [
61+
{
62+
number,
63+
message,
64+
media: media.map((m) => ({
65+
media_base64: m,
66+
file_name: `file_${Date.now()}`,
67+
})),
68+
},
69+
],
70+
};
71+
return this._makeRequest({
72+
path: "/single/message",
73+
data,
74+
});
75+
},
76+
async sendBulkMessages({
77+
numberOfMessages, number, message, media = [],
78+
}) {
79+
const msgs = Array.from({
80+
length: numberOfMessages,
81+
}, () => ({
82+
number,
83+
message,
84+
media: media.map((m) => ({
85+
media_base64: m,
86+
file_name: `file_${Date.now()}`,
87+
})),
88+
}));
89+
const data = {
90+
msgs,
91+
};
92+
return this._makeRequest({
93+
path: "/bulk/message",
94+
data,
95+
});
96+
},
1097
},
11-
};
98+
};

0 commit comments

Comments
 (0)