OpenClaw WhatsApp 채널
Baileys 프로토콜을 사용하여 OpenClaw를 WhatsApp에 연결합니다. 이 통합을 통해 Business API 없이도 AI 어시스턴트가 WhatsApp에서 메시지를 주고받을 수 있습니다. 스마트폰으로 QR 코드를 스캔하기만 하면 바로 사용할 수 있습니다. 깔끔한 라우팅을 위해 전용 전화번호 사용을 권장합니다.
WhatsApp 지원 기능
텍스트 메시지
지원
미디어 및 파일
지원
리액션
지원
스레드
미지원
음성 메시지
지원
그룹 채팅
지원
WhatsApp 사전 요구사항
- WhatsApp 전용 전화번호 (개인 번호와 분리 권장)
- 서버에 Node.js 18+ 설치 (Bun은 권장하지 않음)
- OpenClaw Gateway 실행 및 구성 완료
WhatsApp 빠른 설정
WhatsApp 채널 구성 추가
~/.openclaw/openclaw.json에 WhatsApp 채널 구성을 추가합니다. dmPolicy(allowlist, pairing 또는 open)와 allowFrom 목록을 설정하여 어시스턴트에게 메시지를 보낼 수 있는 사용자를 제어합니다.
로그인 명령 실행 및 QR 코드 스캔
터미널에서 'openclaw channels login'을 실행합니다. QR 코드가 표시됩니다. 스마트폰의 WhatsApp으로 스캔하세요 (설정 > 연결된 기기 > 기기 연결). 인증 정보는 ~/.openclaw/credentials/whatsapp/에 저장됩니다.
테스트 메시지 전송
다른 스마트폰에서 WhatsApp 번호로 다이렉트 메시지를 보냅니다. allowlist 정책을 사용하는 경우 발신자 번호가 allowFrom 목록에 있는지 확인하세요. 기본 pairing 정책을 사용하는 경우 'openclaw pairing approve whatsapp <code>'로 발신자를 승인하세요.
WhatsApp 구성 예시
{
"channels": {
"whatsapp": {
"dmPolicy": "allowlist",
"allowFrom": ["+15551234567"]
}
}
}WhatsApp 상세 문서
아키텍처 개요
전화번호 설정
{
"channels": {
"whatsapp": {
"accounts": {
"default": {
"phone": "+15551234567"
}
}
}
}
}로그인 및 인증 정보
openclaw channels login whatsappDM 정책
{
"channels": {
"whatsapp": {
"dmPolicy": "pairing",
"allowFrom": ["+15551234567", "+15559876543"]
}
}
}그룹 채팅 관리
{
"channels": {
"whatsapp": {
"groupPolicy": "allowlist",
"groupActivation": "mention",
"groupAllowList": ["group-jid-1", "group-jid-2"]
}
}
}읽음 확인
{
"channels": {
"whatsapp": {
"sendReadReceipts": true
}
}
}확인 리액션
{
"channels": {
"whatsapp": {
"ackReaction": {
"emoji": "👀",
"direct": true,
"group": true
}
}
}
}발신 메시지 및 미디어
속도 제한 및 전송 제한
{
"channels": {
"whatsapp": {
"textChunkLimit": 5,
"mediaMaxMb": 50
}
}
}왜 Twilio / WhatsApp Business API를 사용하지 않나요?
WhatsApp 구성 참조
| Key | Type | Default | Description |
|---|---|---|---|
| dmPolicy | string | "pairing" | 봇에 DM을 보낼 수 있는 사용자 제어. 옵션: pairing, allowlist, open, disabled |
| selfChatMode | string | "disabled" | 자신에게 보내는 메시지 처리 방법. 옵션: disabled, ai, note |
| allowFrom | string[] | [] | 봇에 메시지를 보낼 수 있는 전화번호 목록 (dmPolicy가 allowlist일 때) |
| sendReadReceipts | boolean | true | 메시지 처리 시 파란색 체크 읽음 확인 전송 여부 |
| ackReaction.emoji | string | "👀" | 메시지 수신 확인에 사용되는 이모지 |
| ackReaction.direct | boolean | true | 다이렉트 메시지에서 확인 리액션 전송 |
| ackReaction.group | boolean | true | 그룹 메시지에서 확인 리액션 전송 |
| textChunkLimit | number | 5 | AI 응답당 최대 텍스트 청크 수 |
| mediaMaxMb | number | 50 | 최대 수신 미디어 파일 크기(MB). 발신 제한은 agents.defaults.mediaMaxMb로 제어 (기본 5 MB) |
| groupPolicy | string | "disabled" | 그룹 채팅 정책. 옵션: disabled, allowlist, open |
| groupActivation | string | "mention" | 그룹에서 봇을 트리거하는 방법. 옵션: mention, always |
| historyLimit | number | 50 | AI 컨텍스트로 포함할 최근 메시지 수 |
| chunkMode | string | "split" | 긴 응답 처리 방법. 옵션: split, newline, truncate |
| messagePrefix | string | "" | 모든 발신 메시지에 추가되는 선택적 접두사 |
| accounts.<id>.* | object | {} | 계정별 설정 (전화번호, 인증 정보 경로, 재정의) |
봇에 DM을 보낼 수 있는 사용자 제어. 옵션: pairing, allowlist, open, disabled
자신에게 보내는 메시지 처리 방법. 옵션: disabled, ai, note
봇에 메시지를 보낼 수 있는 전화번호 목록 (dmPolicy가 allowlist일 때)
메시지 처리 시 파란색 체크 읽음 확인 전송 여부
메시지 수신 확인에 사용되는 이모지
다이렉트 메시지에서 확인 리액션 전송
그룹 메시지에서 확인 리액션 전송
AI 응답당 최대 텍스트 청크 수
최대 수신 미디어 파일 크기(MB). 발신 제한은 agents.defaults.mediaMaxMb로 제어 (기본 5 MB)
그룹 채팅 정책. 옵션: disabled, allowlist, open
그룹에서 봇을 트리거하는 방법. 옵션: mention, always
AI 컨텍스트로 포함할 최근 메시지 수
긴 응답 처리 방법. 옵션: split, newline, truncate
모든 발신 메시지에 추가되는 선택적 접두사
계정별 설정 (전화번호, 인증 정보 경로, 재정의)
WhatsApp 자주 묻는 질문
WhatsApp 문제 해결
세션 인증 정보가 만료되었거나, 스마트폰의 WhatsApp 앱이 업데이트되어 연결된 세션이 무효화되었을 수 있습니다.
보통 스마트폰이 장기간 오프라인이거나, 다른 연결된 기기가 Gateway 세션과 충돌할 때 발생합니다.
속도 제한, 네트워크 문제, 또는 수신자가 번호를 차단했을 수 있습니다.