ws-cloud-api
Version:
WhatsApp Cloud API for NodeJS
170 lines (166 loc) • 3.44 kB
JavaScript
'use strict';
const messaging = require('./shared/ws-cloud-api.4b8c8a88.cjs');
const index = require('./index.cjs');
require('./media.cjs');
require('cross-fetch');
async function sendTextTemplate({
to,
templateName,
language,
parameters,
config
}) {
return await messaging.sendMessageRequest({
to,
body: {
type: index.MessageTypes.Template,
[index.MessageTypes.Template]: {
name: templateName,
language: {
code: language,
policy: "deterministic"
},
components: [{
type: "body",
parameters
}]
}
},
config
});
}
async function sendMediaTemplate({
to,
templateName,
language,
headerParameters,
bodyParameters,
config
}) {
return await messaging.sendMessageRequest({
to,
body: {
type: index.MessageTypes.Template,
[index.MessageTypes.Template]: {
name: templateName,
language: {
code: language,
policy: "deterministic"
},
components: [
{
type: "header",
parameters: [headerParameters]
},
{
type: "body",
parameters: bodyParameters
}
]
}
},
config
});
}
async function sendAuthTemplate({
to,
templateName,
language,
code,
config
}) {
return await messaging.sendMessageRequest({
to,
body: {
type: index.MessageTypes.Template,
[index.MessageTypes.Template]: {
name: templateName,
language: {
code: language,
policy: "deterministic"
},
components: [
{
type: "body",
parameters: [{
type: "text",
text: code
}]
},
{
type: "button",
sub_type: "url",
index: "0",
parameters: [{
type: "text",
text: code
}]
}
]
}
},
config
});
}
async function sendTemplateRequest({
query,
body,
method = "GET",
config
}) {
const requestResponse = await messaging.sendRequest({
id: "businessId",
path: "message_templates",
method,
body,
query,
config
});
if (!requestResponse.success) {
console.error("Failed to get templates");
console.log(requestResponse.error);
return requestResponse;
} else {
return {
success: true,
data: requestResponse.response
};
}
}
async function getTemplates({
fields,
limit,
after,
before,
config
} = {}) {
const queryParams = {};
if (fields !== void 0)
queryParams.fields = fields.join(",");
if (limit !== void 0)
queryParams.limit = limit.toString();
if (after !== void 0)
queryParams.after = after;
if (before !== void 0)
queryParams.before = before;
return await sendTemplateRequest({
query: new URLSearchParams(queryParams).toString(),
config
});
}
async function createTemplate({
template,
config
}) {
return await sendTemplateRequest({
method: "POST",
body: JSON.stringify(template),
config
});
}
exports.createTemplate = createTemplate;
exports.getTemplates = getTemplates;
exports.sendAuthTemplate = sendAuthTemplate;
exports.sendMediaTemplate = sendMediaTemplate;
exports.sendTemplateRequest = sendTemplateRequest;
exports.sendTextTemplate = sendTextTemplate;