В этой статье мы рассмотрим, как интегрировать Twilio WhatsApp API с приложением Node.js. Twilio предоставляет простой в использовании API для интеграции служб обмена сообщениями, таких как WhatsApp, в ваши приложения. К концу этого руководства у вас будет работающее приложение Node.js, которое может отправлять и получать сообщения с помощью Twilio WhatsApp API.
Оглавление
- Предпосылки
- Настройка учетной записи Twilio
- Установка SDK для Twilio
- Отправка сообщений WhatsApp с помощью Twilio
- Получение сообщений WhatsApp с помощью Twilio
- Реализация базового эхо-бота
- Заключение
1. Предпосылки
Прежде чем мы начнем, убедитесь, что в вашей системе установлено следующее:
- Node.js (версия 12 или выше)
- npm (менеджер пакетов Node.js)
- Редактор кода (например, Visual Studio Code)
2. Настройка учетной записи Twilio
Чтобы начать использовать Twilio API, вам необходимо создать учетную запись на их платформе. Посетите веб-сайт Twilio и создайте бесплатную учетную запись. После регистрации следуйте инструкциям, чтобы включить песочницу WhatsApp. Запишите следующие детали:
- SID учетной записи
- Токен авторизации
- Номер песочницы
Они понадобятся вам для аутентификации вашего приложения с помощью Twilio.
3. Установка SDK Twilio
Создайте новый каталог для своего приложения Node.js и перейдите к нему в терминале. Выполните следующую команду, чтобы инициализировать новый проект Node.js:
npm init -y
Затем установите Twilio SDK, выполнив:
npm install twilio
4. Отправка сообщений WhatsApp с помощью Twilio
Создайте новый файл с именем sendWhatsAppMessage.js и откройте его в редакторе кода. Сначала импортируйте модуль Twilio и инициализируйте клиент Twilio, используя SID вашей учетной записи и токен аутентификации:
const twilio = require('twilio');
const accountSid = 'your_account_sid';
const authToken = 'your_auth_token';
const client = new twilio(accountSid, authToken);
Замените 'your_account_sid' и 'your_auth_token' соответствующими значениями из вашей учетной записи Twilio.
Теперь создайте функцию для отправки сообщений WhatsApp с помощью клиента Twilio:
async function sendWhatsAppMessage(to, message) {
try {
const response = await client.messages.create({
body: message,
from: 'whatsapp:+14155238886', // Your Twilio Sandbox Number
to: `whatsapp:${to}`,
});
console.log(`Message sent to ${to}: ${response.sid}`);
} catch (error) {
console.error(`Failed to send message: ${error}`);
}
}
sendWhatsAppMessage('+1234567890', 'Hello from Twilio WhatsApp API!'); // Replace with your phone number
Замените +1234567890 на свой номер телефона, включая код страны, и запустите скрипт:
node sendWhatsAppMessage.js
Вы должны получить сообщение WhatsApp с номера песочницы Twilio.
5. Получение сообщений WhatsApp с помощью Twilio
Чтобы получать сообщения WhatsApp, вам необходимо настроить веб-перехватчик для входящих сообщений. Мы будем использовать структуру express для нашего веб-сервера и ngrok для предоставления нашего локального сервера в Интернет. Установите необходимые пакеты:
npm install express ngrok
Создайте новый файл с именем receiveWhatsAppMessage.js и откройте его в редакторе кода. Настройка базового экспресс-сервера
const express = require('express');
const app = express();
const port = 3000;
app.use(express.urlencoded({ extended: false }));
app.post('/incoming', (req, res) => {
const message = req.body;
console.log(Received message from ${message.From}: ${message.Body});
res.status(200).send('OK');
});
app.listen(port, () => {
console.log(Server running on http://localhost:${port});
});
В этом коде мы создаем сервер Express и определяем маршрут для входящих сообщений в `/incoming`. Когда сообщение получено, мы записываем номер телефона отправителя и содержимое сообщения в консоль. Затем подключите локальный сервер к Интернету с помощью `ngrok`.
Создайте новый файл с именем start.js и добавьте следующий код:
const ngrok = require('ngrok');
const { spawn } = require('child_process');
(async () => {
const url = await ngrok.connect(3000);
console.log(`ngrok tunnel opened at ${url}`);
const receiveWhatsAppMessageProcess = spawn('node', ['receiveWhatsAppMessage.js'], { stdio: 'inherit', });
process.on('SIGINT', async () => {
console.log('Shutting down…');
await ngrok.kill();
receiveWhatsAppMessage
Process.kill('SIGINT');
process.exit(0);
});
})();
Этот скрипт запускает туннель ngrok и запускает наш скрипт receiveWhatsAppMessage.js как дочерний процесс. Когда сценарий завершится, он закроет туннель ngrok и дочерний процесс.
Запустите скрипт start.js:
node start.js
Вы должны увидеть URL-адрес туннеля ngrok в консоли. Скопируйте этот URL-адрес и добавьте /incoming в его конец. Обновите URL-адрес веб-перехватчика для номера песочницы Twilio, перейдя в Консоль Twilio, выбрав номер песочницы и вставив URL-адрес ngrok в поле Приходит сообщение. Сохраните изменения.
Теперь отправьте сообщение на свой номер песочницы Twilio, и вы должны увидеть детали сообщения, зарегистрированные в вашей консоли.
6. Реализация базового эхо-бота
В качестве практического примера создадим простого эхо-бота, который отвечает на входящие сообщения. Обновите маршрут /incoming в файле receiveWhatsAppMessage.js:
const MessagingResponse = require('twilio').twiml.MessagingResponse;
app.post('/incoming', (req, res) => {
const message = req.body;
console.log(`Received message from ${message.From}: ${message.Body}`);
const twiml = new MessagingResponse();
twiml.message(`You said: ${message.Body}`);
res.writeHead(200, { 'Content-Type': 'text/xml' });
res.end(twiml.toString());
});
Этот код создает ответ TwiML, используя класс MessagingResponse Twilio SDK. Ответ содержит новое сообщение с содержимым исходного сообщения. Когда Twilio получит ответ, он отправит ответ отправителю.
Перезапустите скрипт start.js и отправьте еще одно сообщение на свой номер Twilio Sandbox. Вы должны получить ответ с содержанием сообщения.
7. Заключение
В этой статье мы показали, как интегрировать Twilio WhatsApp API с приложением Node.js. Вы узнали, как отправлять и получать сообщения с помощью Twilio API, и мы продемонстрировали пример простого эхо-бота. С помощью этих строительных блоков теперь вы можете создавать более сложные чат-боты и интегрировать обмен сообщениями WhatsApp в свои приложения с помощью Node.js и Twilio. В следующей статье я объясню, как интегрировать WhatsApp API с ChatGPT.