How to create Viber Messaging API Application
Prerequisites:
Steps to Create a Simple Viber Messaging App
npm init -y
npm install express body-parser axios
const express = require('express');
const bodyParser = require('body-parser');
const axios = require('axios');
// Initialize the app and use JSON parsing middleware
const app = express();
app.use(bodyParser.json());
// Viber Bot token
const VIBER_BOT_TOKEN = 'YOUR_VIBER_BOT_TOKEN';
// Set the Webhook URL
const setWebhook = async () => {
try {
const response = await axios.post(`https://chatapi.viber.com/pa/set_webhook`, {
url: 'YOUR_PUBLIC_WEBHOOK_URL',
}, {
headers: {
'X-Viber-Auth-Token': VIBER_BOT_TOKEN,
},
});
console.log('Webhook set:', response.data);
} catch (error) {
console.error('Error setting webhook:', error);
}
};
// When the server is started, set the webhook
setWebhook();
// Route for receiving messages from Viber
app.post('/viber/webhook', (req, res) => {
const message = req.body;
// Log incoming message
console.log('Incoming message:', message);
// When receiving a message from a user, reply with a text message
if (message.event === 'message' && message.message.type === 'text') {
const reply = {
receiver: message.sender.id,
min_api_version: 1,
sender: {
name: 'YourBot',
avatar: 'https://example.com/avatar.jpg', // Optional avatar URL
},
tracking_data: 'tracking data',
type: 'text',
text: `You said: ${message.message.text}`,
};
axios.post('https://chatapi.viber.com/pa/send_message', reply, {
headers: {
'X-Viber-Auth-Token': VIBER_BOT_TOKEN,
},
}).then((response) => {
console.log('Message sent:', response.data);
}).catch((error) => {
console.error('Error sending message:', error);
});
}
// Send an OK response back to Viber
res.sendStatus(200);
});
// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Testing
Conclusion
Last updated