В этой статье мы рассмотрим, как интегрировать 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.