0.0.3 • Published 10 months ago

whatsapp-cloud-api-client v0.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
10 months ago

WhatsApp Cloud API Node.js Client

A Node.js client library for sending WhatsApp messages using the WhatsApp Cloud API. This package supports various types of messages, including text, media, location, interactive, template, sticker, and contact messages.

Message Types

TypeDescriptionStatus
TextSend a text message
ImageSend an image
VideoSend a video
DocumentSend a document
AudioSend an audio
LocationSend a location
InteractiveSend an interactive message
TemplateSend a template message
StickerSend a sticker
ContactSend a contact

Installation

You can install the package using npm:

npm install whatsapp-cloud-api-client

Usage

Importing the Client

import { WhatsAppClient } from 'whatsapp-cloud-api';

Initializing the Client

Create a singleton instance of the WhatsAppClient with your configuration:

const client = WhatsAppClient.getInstance({
  phoneNumberId: 'YOUR_PHONE_NUMBER_ID',
  accessToken: 'YOUR_ACCESS_TOKEN',
});

Sending Messages

Send a Text Message

await client.sendText({
  to: 'recipient_phone_number',
  message: 'Hello, World!',
});

Send an Image

await client.sendImage({
  to: 'recipient_phone_number',
  mediaUrl: 'https://example.com/image.jpg',
});

Send a Video

await client.sendVideo({
  to: 'recipient_phone_number',
  mediaUrl: 'https://example.com/video.mp4',
});

Send a Document

await client.sendDocument({
  to: 'recipient_phone_number',
  mediaUrl: 'https://example.com/document.pdf',
});

Send an Audio

await client.sendAudio({
  to: 'recipient_phone_number',
  mediaUrl: 'https://example.com/audio.mp3',
});

Send a Location

await client.sendLocation({
  to: 'recipient_phone_number',
  latitude: '37.7749',
  longitude: '-122.4194',
  name: 'San Francisco',
  address: 'California, USA',
});

Send an Interactive Message

await client.sendInteractive({
  to: 'recipient_phone_number',
  interactiveType: 'button',
  buttons: [
    { id: 'button1', title: 'Option 1' },
    { id: 'button2', title: 'Option 2' }
  ],
});

Send a Template Message

await client.sendTemplate({
  to: 'recipient_phone_number',
  templateName: 'your_template_name',
  templateParams: ['param1', 'param2'],
});

Send a Sticker

await client.sendSticker({
  to: 'recipient_phone_number',
  stickerUrl: 'https://example.com/sticker.webp',
});

Send a Contact

await client.sendContact({
  to: 'recipient_phone_number',
  contact: {
    name: {
      first_name: 'John',
      last_name: 'Doe',
    },
    phones: [
      { phone: '1234567890' },
    ],
  },
});

Configuration

You can set or update the configuration using:

client.setConfig({
  phoneNumberId: 'NEW_PHONE_NUMBER_ID',
  accessToken: 'NEW_ACCESS_TOKEN',
});

API Documentation

  • sendText(options: TextMessageOptions): Promise<WhatsAppMessageResponse> - Sends a text message.
  • sendImage(options: MediaMessageOptions): Promise<WhatsAppMessageResponse> - Sends an image.
  • sendVideo(options: MediaMessageOptions): Promise<WhatsAppMessageResponse> - Sends a video.
  • sendDocument(options: MediaMessageOptions): Promise<WhatsAppMessageResponse> - Sends a document.
  • sendAudio(options: MediaMessageOptions): Promise<WhatsAppMessageResponse> - Sends an audio.
  • sendLocation(options: LocationMessageOptions): Promise<WhatsAppMessageResponse> - Sends a location.
  • sendInteractive(options: InteractiveMessageOptions): Promise<WhatsAppMessageResponse> - Sends an interactive message.
  • sendTemplate(options: TemplateMessageOptions): Promise<WhatsAppMessageResponse> - Sends a template message.
  • sendSticker(options: StickerMessageOptions): Promise<WhatsAppMessageResponse> - Sends a sticker.
  • sendContact(options: ContactMessageOptions): Promise<WhatsAppMessageResponse> - Sends a contact.

Error Handling

Errors will be thrown as Error objects with descriptive messages. Handle them with try-catch blocks.

try {
  await client.sendText({ to: 'recipient_phone_number', message: 'Hello!' });
} catch (error) {
  console.error(error.message);
}

License

This package is licensed under the MIT License.

Contributing

Feel free to submit issues or pull requests to contribute to this project.

0.0.3

10 months ago

0.0.2

10 months ago

0.0.1

10 months ago