В этой статье мы рассмотрим, как интегрировать Twilio WhatsApp API с приложением Node.js. Twilio предоставляет простой в использовании API для интеграции служб обмена сообщениями, таких как WhatsApp, в ваши приложения. К концу этого руководства у вас будет работающее приложение Node.js, которое может отправлять и получать сообщения с помощью Twilio WhatsApp API.

Оглавление

  1. Предпосылки
  2. Настройка учетной записи Twilio
  3. Установка SDK для Twilio
  4. Отправка сообщений WhatsApp с помощью Twilio
  5. Получение сообщений WhatsApp с помощью Twilio
  6. Реализация базового эхо-бота
  7. Заключение

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.