evolution-api-client
Version:
A TypeScript/Node.js client library for interacting with the Evolution API WhatsApp integration.
230 lines (173 loc) • 5.91 kB
Markdown
# Evolution API Client
A TypeScript/Node.js client library for interacting with the Evolution API WhatsApp integration.
## Installation
```bash
npm install evolution-api-client
```
## Usage
```typescript
import { Config } from 'evolution-api-client/config';
import EvolutionAPI from 'evolution-api-client';
// Initialize config with base URL and API key
const config = new Config('https://your-evolution-api.com', 'your-global-api-key');
// Initialize client with config
const api = new EvolutionAPI(config);
// Set the instance name you want to work with
api.setInstance('my-instance');
// Create a new instance
async function createNewInstance() {
try {
const result = await api.createInstance({
instanceName: 'my-instance',
qrcode: true
});
console.log('Instance created:', result);
return result;
} catch (error) {
console.error('Error creating instance:', error);
}
}
```
## Features
This client provides methods to interact with all major functionality of the Evolution API:
### Instance Management
- Create, connect, restart, and delete instances
- Check connection state
- Set presence status
### Webhook Management
- Configure webhooks for receiving events
### Settings Management
- Configure instance settings (reject calls, read messages, etc.)
### Messaging
- Send text, media, buttons, lists, and more
- Support for template messages
### Group Management
- Create and manage WhatsApp groups
- Update group info, invite participants
### Chat Management
- Verify WhatsApp numbers
- Find contacts, messages, and chats
- Fetch profile pictures
### Integrations
- Typebot integration for chatbots
- OpenAI integration for AI-powered responses
## Example: Sending a Message
```typescript
import { Config } from 'evolution-api-client/config';
import EvolutionAPI from 'evolution-api-client';
import { MessageOptions } from 'evolution-api-client/types';
async function sendTextMessage() {
try {
const config = new Config('https://your-evolution-api.com', 'your-global-api-key');
const api = new EvolutionAPI(config);
const options: MessageOptions = {
delay: 1000,
presence: 'composing'
};
const result = await api
.setInstance('my-instance')
.setApikey('instance-specific-api-key') // If you have a stored API key
.sendText('5511987654321', 'Hello from Evolution API Client!', options);
console.log('Message sent:', result);
} catch (error) {
console.error('Error sending message:', error);
}
}
```
## Example: Working with Groups
```typescript
import { Config } from 'evolution-api-client/config';
import EvolutionAPI from 'evolution-api-client';
async function createAndManageGroup() {
try {
const config = new Config('https://your-evolution-api.com', 'your-global-api-key');
const api = new EvolutionAPI(config);
// Create a new group
const group = await api.createGroup({
subject: "My Test Group",
participants: ["5511987654321", "5511987654322"]
});
console.log('Group created:', group);
// Get the group JID
const groupJid = group.id;
// Update the group description
await api.updateGroupDescription(groupJid, "This is our test group description");
// Get invite code
const inviteInfo = await api.fetchInviteCode(groupJid);
console.log('Invite code:', inviteInfo.code);
} catch (error) {
console.error('Error managing group:', error);
}
}
```
## API Reference
### Constructor
```typescript
import { Config } from 'evolution-api-client/config';
import EvolutionAPI from 'evolution-api-client';
const config = new Config(baseUrl: string, apiKey: string);
const api = new EvolutionAPI(config);
```
### Configuration
The `Config` class provides methods to manage your API configuration:
- `getUrl()` - Get the current base URL
- `getApiKey()` - Get the current API key
- `setUrl(url: string)` - Update the base URL
- `setApiKey(apiKey: string)` - Update the API key
### Instance Methods
- `setInstance(instance: string)` - Set the instance name
- `setApikey(apikey: string)` - Set the instance-specific API key
- `useGlobalApikey()` - Switch back to using the global API key
### Instance Management
- `createInstance(options: InstanceOptions)`
- `fetchInstances(instanceName?: string)`
- `connectInstance(number?: string)`
- `restartInstance()`
- `setPresence(presence: PresenceStatus)`
- `getConnectionState()`
- `logoutInstance()`
- `deleteInstance()`
### Messaging
- `sendText(number: string, text: string, options?: MessageOptions)`
- `sendMedia(number: string, mediaConfig: MediaConfig)`
- `sendButtons(number: string, buttonsConfig: ButtonsConfig)`
- `sendList(number: string, listConfig: ListConfig)`
### Group Management
- `createGroup(groupConfig: GroupConfig)`
- `updateGroupSubject(groupJid: string, subject: string)`
- `updateGroupDescription(groupJid: string, description: string)`
- `fetchInviteCode(groupJid: string)`
- `revokeInviteCode(groupJid: string)`
### Chat Management
- `isWhatsAppNumber(numbers: string[])`
- `findContacts(where: ContactQuery)`
- `findMessages(where: MessageQuery)`
- `findChats()`
- `fetchProfilePicture(number: string)`
### Integrations
- `createTypebot(typebotConfig: TypebotConfig)`
- `findTypebots()`
- `fetchTypebot(typebotId: string)`
- `startTypebot(typebotConfig: TypebotConfig)`
- `createOpenaiBot(openaiConfig: OpenAIConfig)`
- `setOpenaiCreds(credsConfig: OpenAICredsConfig)`
## Types
The library includes TypeScript type definitions for all parameters and responses. Import them from the types module:
```typescript
import {
InstanceOptions,
MessageOptions,
MediaConfig,
ButtonsConfig,
ListConfig,
GroupConfig,
ContactQuery,
MessageQuery,
TypebotConfig,
OpenAIConfig,
OpenAICredsConfig,
PresenceStatus
} from 'evolution-api-client/types';
```
## License
MIT