최근 많은 기업과 개발자들이 효율적인 고객 소통을 위해 메신저 플랫폼을 활용하고 있습니다. 그 중에서도 WhatsApp은 전 세계적으로 널리 사용되는 메신저 앱으로, 기업과 고객 간의 소통을 원활하게 해줍니다. 이번 포스팅에서는 WhatsApp 웹 클라이언트를 통해 손쉽게 자동화된 작업을 수행할 수 있는 whatsapp-web.js라는 오픈소스 라이브러리를 소개하고, 이를 활용하여 간단한 봇을 만들어보겠습니다.

무엇이 특별할까?

whatsapp-web.js는 Node.js 환경에서 WhatsApp 웹 클라이언트와 상호작용할 수 있도록 돕는 강력한 라이브러리입니다. Puppeteer를 활용하여 WhatsApp 웹의 내부 기능에 접근하고, 이를 관리되는 브라우저 인스턴스에서 실행함으로써 사용자가 차단될 위험을 줄여줍니다. 이로 인해 다양한 자동화 작업을 손쉽게 수행할 수 있습니다.

주요 기능

  1. 메시지 전송 및 수신: 텍스트 메시지, 이미지, 비디오, 문서 등을 손쉽게 전송하고 수신할 수 있습니다.
  2. 다중 장치 지원: 여러 장치에서 WhatsApp 계정을 동시에 사용할 수 있습니다.
  3. 스티커 및 연락처 카드 전송: 다양한 형식의 콘텐츠를 전송하여 풍부한 소통이 가능합니다.
  4. 위치 전송: 현재 위치를 쉽게 공유할 수 있습니다.
  5. 설치하기

    whatsapp-web.js를 사용하기 위해서는 Node.js v18.0.0 이상이 필요합니다. 다음 명령어를 통해 라이브러리를 설치할 수 있습니다.

    npm install whatsapp-web.js
    # 또는
    yarn add whatsapp-web.js
    # 또는
    pnpm add whatsapp-web.js

    설치에 문제가 있으신 경우 가이드에서 더 자세한 설명을 참고하시기 바랍니다.

    기본 사용법

    이제 실제로 WhatsApp 봇을 만들어보겠습니다. 아래의 코드를 실행하면 QR 코드를 생성하여 WhatsApp 웹에 로그인할 수 있게 됩니다.

    const { Client } = require('whatsapp-web.js');
    const qrcode = require('qrcode-terminal');
    
    const client = new Client();
    
    client.on('qr', (qr) => {
        // QR 코드 생성
        qrcode.generate(qr, { small: true });
    });
    
    client.on('ready', () => {
        console.log('Client is ready!');
    });
    
    client.on('message', (msg) => {
        // 사용자가 '!ping'이라고 메시지를 보내면 'pong'으로 응답
        if (msg.body === '!ping') {
            msg.reply('pong');
        }
    });
    
    client.initialize();

    코드 설명

  6. 클라이언트 생성: Client 클래스를 인스턴스화하여 새로운 클라이언트를 생성합니다.
  7. QR 코드 이벤트 처리: 사용자가 WhatsApp 웹에 로그인할 수 있도록 QR 코드를 생성합니다.
  8. 메시지 수신 이벤트 처리: 특정 메시지를 수신했을 때(예: !ping), 응답 메시지를 보내는 로직을 추가합니다.
  9. 이 코드를 실행하면 터미널에 QR 코드가 표시되었을 때, WhatsApp 앱에서 이를 스캔하여 로그인할 수 있습니다.

    활용 시나리오

    whatsapp-web.js는 다양한 비즈니스 시나리오에서 활용할 수 있습니다.

    • 고객 지원 봇: 자주 묻는 질문에 대해 자동으로 답변을 제공하거나, 고객의 요청을 수집하여 인력에게 전달하는 봇을 만들 수 있습니다.
    • 마케팅 캠페인: 새로운 프로모션이나 이벤트 알림을 고객에게 자동으로 전송하는 기능을 구현할 수 있습니다.
    • 주문 관리 시스템: 고객의 주문 내역을 자동으로 수집하고 응답하는 시스템을 구축할 수 있습니다.

비슷한 도구와 비교

whatsapp-web.js 외에도 여러 라이브러리가 존재하지만, 대부분은 특정 기능에 국한되어 있거나 복잡한 설정을 요구합니다. 예를 들어, Baileys와 같은 라이브러리는 WhatsApp의 API를 저수준에서 처리하는 반면, whatsapp-web.js는 더 직관적이고 사용하기 쉬운 API를 제공합니다.

마무리

whatsapp-web.js는 Node.js 환경에서 WhatsApp 웹과 쉽게 상호작용할 수 있는 강력한 도구입니다. 이 라이브러리를 통해 다양한 자동화 작업을 손쉽게 수행할 수 있으며, 고객과의 소통을 한층 더 원활하게 만들어줄 것입니다. 이 글을 통해 WhatsApp 봇 개발에 도전해보시기 바랍니다.

더 많은 정보와 예제는 GitHub 저장소에서 확인하실 수 있습니다.