Official Node.js SDK for SaaS Chatbot Platform - Easy integration with chatbot APIs
npm install @waapcoders/sdkbash
npm install @saaschatbot/sdk
`
$3
`bash
yarn add @saaschatbot/sdk
`
$3
`bash
pnpm add @saaschatbot/sdk
`
๐ฏ Quick Start
$3
`javascript
const ChatbotSDK = require('@saaschatbot/sdk');
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
sdkURL: 'https://chat.waapcoders.in',
accessToken: 'YOUR_JWT_TOKEN'
});
// Create a bot
const bot = await sdk.createBot({
botName: 'My Bot',
description: 'Customer support bot'
});
console.log('Bot created:', bot);
`
$3
`typescript
import ChatbotSDK from '@saaschatbot/sdk';
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
sdkURL: 'https://chat.waapcoders.in',
accessToken: 'YOUR_JWT_TOKEN'
});
const bot = await sdk.createBot({
botName: 'My Bot',
description: 'Support bot'
});
`
$3
`javascript
import ChatbotSDK from '@saaschatbot/sdk';
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
accessToken: 'YOUR_JWT_TOKEN'
});
`
๐ API Reference
$3
#### Create Bot
`javascript
const bot = await sdk.createBot({
botName: 'My Chatbot',
description: 'Customer support chatbot'
});
`
#### Get Bot
`javascript
const bot = await sdk.getBot('bot-id');
`
#### List Bots
`javascript
const bots = await sdk.listBots();
`
#### Update Bot
`javascript
const updated = await sdk.updateBot('bot-id', {
botName: 'Updated Name',
description: 'New description'
});
`
#### Delete Bot
`javascript
await sdk.deleteBot('bot-id');
`
$3
#### Setup WhatsApp
`javascript
await sdk.setupWhatsApp('bot-id', {
phoneNumberId: 'YOUR_PHONE_NUMBER_ID',
accessToken: 'YOUR_WHATSAPP_TOKEN',
displayPhoneNumber: '+1234567890'
});
`
#### Setup Telegram
`javascript
await sdk.setupTelegram('bot-id', {
botToken: 'YOUR_TELEGRAM_BOT_TOKEN',
webhookUrl: 'https://yourserver.com/telegram/webhook'
});
`
#### Get Channels
`javascript
const channels = await sdk.getChannels('bot-id');
`
#### Test WhatsApp
`javascript
const result = await sdk.testWhatsApp('bot-id', '+1234567890');
`
#### Test Telegram
`javascript
const result = await sdk.testTelegram('bot-id');
`
$3
#### Send Message
`javascript
const response = await sdk.sendMessage({
botId: 'bot-id',
botToken: 'bot-token',
message: 'Hello! How can I help?',
userId: 'user-id',
sessionId: 'session-id',
channel: 'web'
});
`
#### Get Conversation
`javascript
const messages = await sdk.getConversation('session-id');
`
$3
#### Create Ticket
`javascript
const ticket = await sdk.createTicket({
botId: 'bot-id',
subject: 'Customer Issue',
description: 'User reported an issue',
priority: 'high',
channel: 'web',
customerEmail: 'customer@example.com',
customerName: 'John Doe'
});
`
#### Get Ticket
`javascript
const ticket = await sdk.getTicket('ticket-id');
`
#### List Tickets
`javascript
const tickets = await sdk.listTickets('bot-id');
`
#### Update Ticket Status
`javascript
await sdk.updateTicketStatus('ticket-id', 'resolved');
`
#### Assign Ticket
`javascript
await sdk.assignTicket('ticket-id', 'agent-id');
`
#### Add Ticket Reply
`javascript
await sdk.addTicketReply('ticket-id', {
message: 'Thank you for reporting',
isCustomerReply: false,
repliedBy: 'agent-name'
});
`
#### Get Ticket Metrics
`javascript
const metrics = await sdk.getTicketMetrics('bot-id');
`
$3
#### Create Company
`javascript
const company = await sdk.createCompany({
name: 'Acme Corp',
email: 'admin@acme.com',
phone: '+1234567890'
});
`
#### List Companies
`javascript
const companies = await sdk.listCompanies();
`
#### Get Company
`javascript
const company = await sdk.getCompany('company-id');
`
#### Update Company
`javascript
await sdk.updateCompany('company-id', {
name: 'New Name',
email: 'newemail@acme.com'
});
`
$3
#### Get Settings
`javascript
const settings = await sdk.getSettings();
`
#### Update Settings
`javascript
await sdk.updateSettings({
apiKey: 'new-api-key',
webhookUrl: 'https://yourserver.com/webhook'
});
`
#### Get 2FA Status
`javascript
const twoFaStatus = await sdk.get2FAStatus();
`
โ๏ธ Configuration
$3
`typescript
interface SDKConfig {
baseURL: string; // Required: API base URL
sdkURL?: string; // Optional: SDK CDN URL
accessToken?: string; // JWT token for authenticated endpoints
apiKey?: string; // Alternative: API key authentication
timeout?: number; // Request timeout in ms (default: 30000)
debug?: boolean; // Enable debug logging (default: false)
}
`
$3
`bash
.env file
CHATBOT_API_URL=https://smile.waapcoders.in
CHATBOT_SDK_URL=https://chat.waapcoders.in
CHATBOT_ACCESS_TOKEN=your_jwt_token_here
`
$3
`javascript
const sdk = new ChatbotSDK({
baseURL: process.env.CHATBOT_API_URL,
sdkURL: process.env.CHATBOT_SDK_URL,
accessToken: process.env.CHATBOT_ACCESS_TOKEN,
debug: process.env.NODE_ENV === 'development'
});
`
๐ Authentication
The SDK supports two authentication methods:
$3
`javascript
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
accessToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
});
`
$3
`javascript
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
apiKey: 'your-api-key'
});
`
โ Error Handling
The SDK provides structured error objects:
`javascript
try {
const bot = await sdk.getBot('invalid-id');
} catch (error) {
console.error('Status:', error.status); // HTTP status code
console.error('Message:', error.message); // Error message
console.error('Details:', error.data); // Full response data
}
`
$3
`javascript
// 404 - Bot not found
// 401 - Unauthorized (invalid token)
// 400 - Bad request (invalid parameters)
// 500 - Server error
`
๐ Examples
$3
`javascript
const ChatbotSDK = require('@saaschatbot/sdk');
async function setupBot() {
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
accessToken: process.env.JWT_TOKEN
});
try {
// 1. Create bot
const bot = await sdk.createBot({
botName: 'Support Bot',
description: 'Customer support automation'
});
console.log('โ Bot created:', bot.botId);
// 2. Setup WhatsApp channel
await sdk.setupWhatsApp(bot.botId, {
phoneNumberId: process.env.WHATSAPP_PHONE_ID,
accessToken: process.env.WHATSAPP_TOKEN,
displayPhoneNumber: '+1234567890'
});
console.log('โ WhatsApp channel configured');
// 3. Setup Telegram channel
await sdk.setupTelegram(bot.botId, {
botToken: process.env.TELEGRAM_TOKEN,
webhookUrl: 'https://myserver.com/telegram'
});
console.log('โ Telegram channel configured');
// 4. Test channels
await sdk.testWhatsApp(bot.botId, '+1234567890');
await sdk.testTelegram(bot.botId);
console.log('โ Channels tested successfully');
return bot;
} catch (error) {
console.error('Setup failed:', error.message);
throw error;
}
}
setupBot().then(bot => {
console.log('Bot setup complete!', bot);
}).catch(err => {
process.exit(1);
});
`
$3
`javascript
async function handleTickets() {
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
accessToken: process.env.JWT_TOKEN
});
// Create ticket from chat escalation
const ticket = await sdk.createTicket({
botId: 'bot-123',
subject: 'User reported issue',
description: 'Customer cannot complete purchase',
priority: 'high',
channel: 'web',
customerEmail: 'user@example.com',
customerName: 'Alice'
});
console.log('Ticket created:', ticket.ticketId);
// List all tickets
const tickets = await sdk.listTickets('bot-123');
console.log(Found ${tickets.length} tickets);
// Get metrics
const metrics = await sdk.getTicketMetrics('bot-123');
console.log('Metrics:', metrics);
}
`
๐งช Testing
`bash
Run all tests
npm test
Run tests in watch mode
npm test:watch
Run with coverage
npm test -- --coverage
`
๐ฆ Building
`bash
Build everything (compile, minify, docs)
npm run build
Build only (compile + minify)
npm run build:dist
Clean build
npm run clean && npm run build
Minify only
npm run minify
Generate docs
npm run build:docs
`
๐ Publishing to npm
$3
`bash
Create npm account if you don't have one
npm adduser
Verify you're logged in
npm whoami
`
$3
`bash
Publish to npm
npm run publish:npm
Or use npm directly
npm publish --access public
For beta versions
npm run publish:beta
`
$3
`bash
Update version (major.minor.patch)
npm version patch # 1.0.0 โ 1.0.1
npm version minor # 1.0.0 โ 1.1.0
npm version major # 1.0.0 โ 2.0.0
This will auto-commit and push to git
`
๐ Integration Examples
$3
`javascript
const express = require('express');
const ChatbotSDK = require('@saaschatbot/sdk');
const app = express();
const sdk = new ChatbotSDK({
baseURL: process.env.CHATBOT_API_URL,
accessToken: process.env.CHATBOT_TOKEN
});
app.post('/api/bots', async (req, res) => {
try {
const bot = await sdk.createBot(req.body);
res.json(bot);
} catch (error) {
res.status(error.status || 500).json({ error: error.message });
}
});
app.listen(3000);
`
$3
`javascript
// pages/api/bots.js
import ChatbotSDK from '@saaschatbot/sdk';
const sdk = new ChatbotSDK({
baseURL: process.env.CHATBOT_API_URL,
accessToken: process.env.CHATBOT_TOKEN
});
export default async function handler(req, res) {
if (req.method === 'POST') {
try {
const bot = await sdk.createBot(req.body);
res.status(200).json(bot);
} catch (error) {
res.status(error.status || 500).json({ error: error.message });
}
}
}
`
๐ Documentation
- Full API Documentation
- TypeScript Definitions
- Changelog
- GitHub Repository
๐ Troubleshooting
$3
`javascript
// Enable debug mode to see detailed logs
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
accessToken: 'your-token',
debug: true // Shows all API calls
});
`
$3
`javascript
// Verify token is valid and not expired
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
accessToken: process.env.CHATBOT_TOKEN // Use env variables
});
// Check token claims
console.log('Token:', sdk.accessToken);
`
$3
`javascript
// Increase timeout for slow connections
const sdk = new ChatbotSDK({
baseURL: 'https://smile.waapcoders.in',
accessToken: 'your-token',
timeout: 60000 // 60 seconds
});
``