🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@robinpath/whatsapp

Package Overview
Dependencies
Maintainers
4
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@robinpath/whatsapp - npm Package Compare versions

Comparing version
0.1.0
to
0.1.1
+36
-7
package.json
{
"name": "@robinpath/whatsapp",
"version": "0.1.0",
"publishConfig": { "access": "public" },
"version": "0.1.1",
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": { ".": { "import": "./dist/index.js", "types": "./dist/index.d.ts" } },
"files": ["dist"],
"scripts": { "build": "tsc" },
"peerDependencies": { "@wiredwp/robinpath": ">=0.20.0" },
"devDependencies": { "@wiredwp/robinpath": "^0.30.1", "typescript": "^5.6.0" }
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
}
},
"files": [
"dist"
],
"scripts": {
"build": "tsc"
},
"peerDependencies": {
"@robinpath/core": ">=0.20.0"
},
"devDependencies": {
"@robinpath/core": "^0.30.1",
"typescript": "^5.6.0"
},
"description": "WhatsApp module for RobinPath.",
"keywords": [
"whatsapp",
"messaging"
],
"license": "MIT",
"robinpath": {
"category": "messaging",
"type": "integration",
"auth": "api-key",
"functionCount": 10,
"baseUrl": "https://graph.facebook.com"
}
}
-6
import type { ModuleAdapter } from "@wiredwp/robinpath";
declare const WhatsappModule: ModuleAdapter;
export default WhatsappModule;
export { WhatsappModule };
export { WhatsappFunctions, WhatsappFunctionMetadata, WhatsappModuleMetadata } from "./whatsapp.js";
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,QAAA,MAAM,cAAc,EAAE,aAMrB,CAAC;AAEF,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
import { WhatsappFunctions, WhatsappFunctionMetadata, WhatsappModuleMetadata } from "./whatsapp.js";
const WhatsappModule = {
name: "whatsapp",
functions: WhatsappFunctions,
functionMetadata: WhatsappFunctionMetadata,
moduleMetadata: WhatsappModuleMetadata,
global: false,
}; // as ModuleAdapter
export default WhatsappModule;
export { WhatsappModule };
export { WhatsappFunctions, WhatsappFunctionMetadata, WhatsappModuleMetadata } from "./whatsapp.js";
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEpG,MAAM,cAAc,GAAkB;IACpC,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,iBAAiB;IAC5B,gBAAgB,EAAE,wBAA+B;IACjD,cAAc,EAAE,sBAA6B;IAC7C,MAAM,EAAE,KAAK;CACd,CAAC,CAAC,mBAAmB;AAEtB,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
import type { BuiltinHandler } from "@wiredwp/robinpath";
export declare const WhatsappFunctions: Record<string, BuiltinHandler>;
export declare const WhatsappFunctionMetadata: {
setCredentials: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendText: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendTemplate: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendImage: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendDocument: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendLocation: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
sendContact: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
markRead: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
getProfile: {
description: string;
parameters: never[];
returnType: string;
returnDescription: string;
example: string;
};
updateProfile: {
description: string;
parameters: {
name: string;
dataType: string;
description: string;
formInputType: string;
required: boolean;
}[];
returnType: string;
returnDescription: string;
example: string;
};
};
export declare const WhatsappModuleMetadata: {
description: string;
methods: string[];
category: string;
};
//# sourceMappingURL=whatsapp.d.ts.map
{"version":3,"file":"whatsapp.d.ts","sourceRoot":"","sources":["../src/whatsapp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AAuJlG,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAW5D,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;CAIlC,CAAC"}
const config = new Map();
function getConfig(key) {
const val = config.get(key);
if (!val)
throw new Error(`WhatsApp: "${key}" not configured. Call whatsapp.setCredentials first.`);
return val;
}
async function whatsappApi(path, method = "GET", body) {
const token = getConfig("accessToken");
const phoneNumberId = getConfig("phoneNumberId");
const res = await fetch(`https://graph.facebook.com/v22.0/${phoneNumberId}${path}`, {
method,
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: body ? JSON.stringify(body) : undefined,
});
if (!res.ok) {
const text = await res.text();
throw new Error(`WhatsApp API error (${res.status}): ${text}`);
}
return res.json();
}
const setCredentials = (args) => {
const accessToken = args[0];
const phoneNumberId = args[1];
if (!accessToken || !phoneNumberId)
throw new Error("whatsapp.setCredentials requires accessToken and phoneNumberId.");
config.set("accessToken", accessToken);
config.set("phoneNumberId", phoneNumberId);
return "WhatsApp credentials configured.";
};
const sendText = async (args) => {
const to = args[0];
const message = args[1];
if (!to || !message)
throw new Error("whatsapp.sendText requires to and message.");
return whatsappApi("/messages", "POST", {
messaging_product: "whatsapp",
to,
type: "text",
text: { body: message },
});
};
const sendTemplate = async (args) => {
const to = args[0];
const templateName = args[1];
const languageCode = args[2] ?? "en_US";
const components = args[3];
if (!to || !templateName)
throw new Error("whatsapp.sendTemplate requires to and templateName.");
const template = {
name: templateName,
language: { code: languageCode },
};
if (components)
template.components = components;
return whatsappApi("/messages", "POST", {
messaging_product: "whatsapp",
to,
type: "template",
template,
});
};
const sendImage = async (args) => {
const to = args[0];
const imageUrl = args[1];
const caption = args[2];
if (!to || !imageUrl)
throw new Error("whatsapp.sendImage requires to and imageUrl.");
const image = { link: imageUrl };
if (caption)
image.caption = caption;
return whatsappApi("/messages", "POST", {
messaging_product: "whatsapp",
to,
type: "image",
image,
});
};
const sendDocument = async (args) => {
const to = args[0];
const documentUrl = args[1];
const opts = (typeof args[2] === "object" && args[2] !== null ? args[2] : {});
if (!to || !documentUrl)
throw new Error("whatsapp.sendDocument requires to and documentUrl.");
const document = { link: documentUrl };
if (opts.filename)
document.filename = opts.filename;
if (opts.caption)
document.caption = opts.caption;
return whatsappApi("/messages", "POST", {
messaging_product: "whatsapp",
to,
type: "document",
document,
});
};
const sendLocation = async (args) => {
const to = args[0];
const latitude = args[1];
const longitude = args[2];
const opts = (typeof args[3] === "object" && args[3] !== null ? args[3] : {});
if (!to || latitude === undefined || longitude === undefined)
throw new Error("whatsapp.sendLocation requires to, latitude, and longitude.");
const location = { latitude, longitude };
if (opts.name)
location.name = opts.name;
if (opts.address)
location.address = opts.address;
return whatsappApi("/messages", "POST", {
messaging_product: "whatsapp",
to,
type: "location",
location,
});
};
const sendContact = async (args) => {
const to = args[0];
const contacts = args[1];
if (!to || !contacts)
throw new Error("whatsapp.sendContact requires to and contacts array.");
return whatsappApi("/messages", "POST", {
messaging_product: "whatsapp",
to,
type: "contacts",
contacts,
});
};
const markRead = async (args) => {
const messageId = args[0];
if (!messageId)
throw new Error("whatsapp.markRead requires a messageId.");
return whatsappApi("/messages", "POST", {
messaging_product: "whatsapp",
status: "read",
message_id: messageId,
});
};
const getProfile = async () => {
return whatsappApi("/whatsapp_business_profile?fields=about,address,description,email,profile_picture_url,websites,vertical");
};
const updateProfile = async (args) => {
const profile = args[0];
if (!profile)
throw new Error("whatsapp.updateProfile requires a profile object.");
return whatsappApi("/whatsapp_business_profile", "POST", {
messaging_product: "whatsapp",
...profile,
});
};
export const WhatsappFunctions = {
setCredentials,
sendText,
sendTemplate,
sendImage,
sendDocument,
sendLocation,
sendContact,
markRead,
getProfile,
updateProfile,
};
export const WhatsappFunctionMetadata = {
setCredentials: {
description: "Set WhatsApp Cloud API credentials.",
parameters: [
{ name: "accessToken", dataType: "string", description: "Permanent or temporary access token", formInputType: "text", required: true },
{ name: "phoneNumberId", dataType: "string", description: "WhatsApp Business phone number ID", formInputType: "text", required: true },
],
returnType: "string",
returnDescription: "Confirmation message.",
example: 'whatsapp.setCredentials "EAABxxx" "1234567890"',
},
sendText: {
description: "Send a text message.",
parameters: [
{ name: "to", dataType: "string", description: "Recipient phone number (international format)", formInputType: "text", required: true },
{ name: "message", dataType: "string", description: "Message text", formInputType: "textarea", required: true },
],
returnType: "object",
returnDescription: "Message send response.",
example: 'whatsapp.sendText "+1234567890" "Hello from RobinPath!"',
},
sendTemplate: {
description: "Send a pre-approved template message.",
parameters: [
{ name: "to", dataType: "string", description: "Recipient phone number", formInputType: "text", required: true },
{ name: "templateName", dataType: "string", description: "Template name", formInputType: "text", required: true },
{ name: "languageCode", dataType: "string", description: "Language code (default: en_US)", formInputType: "text", required: false },
{ name: "components", dataType: "array", description: "Template component parameters", formInputType: "json", required: false },
],
returnType: "object",
returnDescription: "Message send response.",
example: 'whatsapp.sendTemplate "+1234567890" "hello_world"',
},
sendImage: {
description: "Send an image message.",
parameters: [
{ name: "to", dataType: "string", description: "Recipient phone number", formInputType: "text", required: true },
{ name: "imageUrl", dataType: "string", description: "Public URL of the image", formInputType: "text", required: true },
{ name: "caption", dataType: "string", description: "Optional image caption", formInputType: "text", required: false },
],
returnType: "object",
returnDescription: "Message send response.",
example: 'whatsapp.sendImage "+1234567890" "https://example.com/photo.jpg" "Check this out"',
},
sendDocument: {
description: "Send a document message.",
parameters: [
{ name: "to", dataType: "string", description: "Recipient phone number", formInputType: "text", required: true },
{ name: "documentUrl", dataType: "string", description: "Public URL of the document", formInputType: "text", required: true },
{ name: "options", dataType: "object", description: "Options: filename, caption", formInputType: "json", required: false },
],
returnType: "object",
returnDescription: "Message send response.",
example: 'whatsapp.sendDocument "+1234567890" "https://example.com/report.pdf" {"filename":"report.pdf"}',
},
sendLocation: {
description: "Send a location message.",
parameters: [
{ name: "to", dataType: "string", description: "Recipient phone number", formInputType: "text", required: true },
{ name: "latitude", dataType: "number", description: "Latitude", formInputType: "number", required: true },
{ name: "longitude", dataType: "number", description: "Longitude", formInputType: "number", required: true },
{ name: "options", dataType: "object", description: "Options: name, address", formInputType: "json", required: false },
],
returnType: "object",
returnDescription: "Message send response.",
example: 'whatsapp.sendLocation "+1234567890" 37.7749 -122.4194 {"name":"San Francisco"}',
},
sendContact: {
description: "Send contact card(s).",
parameters: [
{ name: "to", dataType: "string", description: "Recipient phone number", formInputType: "text", required: true },
{ name: "contacts", dataType: "array", description: "Array of contact objects", formInputType: "json", required: true },
],
returnType: "object",
returnDescription: "Message send response.",
example: 'whatsapp.sendContact "+1234567890" [{"name":{"formatted_name":"John Doe"},"phones":[{"phone":"+0987654321"}]}]',
},
markRead: {
description: "Mark a message as read.",
parameters: [
{ name: "messageId", dataType: "string", description: "Message ID to mark as read", formInputType: "text", required: true },
],
returnType: "object",
returnDescription: "Status response.",
example: 'whatsapp.markRead "wamid.xxx"',
},
getProfile: {
description: "Get the WhatsApp Business profile.",
parameters: [],
returnType: "object",
returnDescription: "Business profile data.",
example: "whatsapp.getProfile",
},
updateProfile: {
description: "Update the WhatsApp Business profile.",
parameters: [
{ name: "profile", dataType: "object", description: "Profile fields to update (about, address, description, email, websites, vertical)", formInputType: "json", required: true },
],
returnType: "object",
returnDescription: "Update response.",
example: 'whatsapp.updateProfile {"about":"We are a business","description":"Our business description"}',
},
};
export const WhatsappModuleMetadata = {
description: "Send messages, templates, media, and manage WhatsApp Business profiles via the WhatsApp Cloud API.",
methods: Object.keys(WhatsappFunctions),
category: "messaging",
};
//# sourceMappingURL=whatsapp.js.map
{"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../src/whatsapp.ts"],"names":[],"mappings":"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"}