트리거 (Triggers)
OpenClaw의 트리거 시스템을 사용하면 특정 조건에서 자동으로 작업을 실행할 수 있습니다.
공식 문서: OpenClaw Triggers
개요
트리거란?
**트리거(Trigger)**는 특정 조건이 충족되었을 때 자동으로 작업을 실행하는 메커니즘입니다.
| 트리거 유형 | 실행 조건 | 사용 예시 |
|---|---|---|
| Message Trigger | 사용자 메시지 수신 시 | 특정 키워드에 자동 응답 |
| Scheduled Trigger | 지정된 시간에 | 매일 오전 9시 뉴스 요약 |
| Event Trigger | 시스템 이벤트 발생 시 | 에러 발생 시 알림 |
메시지 트리거 (Message Trigger)
사용자 메시지에 반응하는 트리거입니다.
기본 설정
# openclaw.json
triggers:
- type: message
channel: "slack"
pattern: "!help" # 패턴 매칭
action: show_help
패턴 유형
triggers:
# 정확한 일치
- type: message
pattern: "안녕"
action: greet
# 정규식 사용
- type: message
pattern: "^!cmd (.+)$"
action: run_command
# 채널 특정
- type: message
channel: "telegram"
pattern: "/start"
action: onboarding
실전 예시
triggers:
- type: message
pattern: "날씨"
action: get_weather
actions:
get_weather:
description: "현재 날씨를 가져와 알림"
run: |
import requests
weather = requests.get("https://api.weather.com/...").json()
print(f"현재 날씨: {weather['temp']}°C, {weather['description']}")
스케줄 트리거 (Scheduled Trigger)
특정 시간에 자동으로 실행되는 트리거입니다.
Cron 표현식 기본
┌───────────── 분 (0-59)
│ ┌───────────── 시간 (0-23)
│ │ ┌───────────── 일 (1-31)
│ │ │ ┌───────────── 월 (1-12)
│ │ │ │ ┌───────────── 요일 (0-7, 0=일요일)
│ │ │ │ │
* * * * *
자주 사용하는 스케줄
| Cron 표현식 | 의미 |
|---|---|
0 9 * * * |
매일 오전 9시 |
0 9 * * 1-5 |
평일 오전 9시 |
0 */6 * * * |
6시간마다 |
0 0 1 * * |
매월 1일 자정 |
30 8 * * 1 |
매주 월요일 오전 8시 30분 |
설정 예시
# openclaw.json
triggers:
# 매일 아침 9시 뉴스 요약
- type: cron
schedule: "0 9 * * *"
action: morning_news
# 매주 금요일 오후 5시 주간 보고서
- type: cron
schedule: "0 17 * * 5"
action: weekly_report
# 매 시간마다 서버 상태 체크
- type: cron
schedule: "0 * * * *"
action: server_health_check
actions:
morning_news:
description: "매일 아침 뉴스를 요약하여 채널로 전송"
channel: "slack"
run: |
# 뉴스 수집 및 요약 로직
news = fetch_news()
summary = summarize(news)
send_to_channel(summary)
이벤트 트리거 (Event Trigger)
시스템 이벤트에 반응하는 트리거입니다.
지원 이벤트
| 이벤트 | 발생 시점 |
|---|---|
gateway.start |
Gateway 시작 시 |
gateway.stop |
Gateway 중지 시 |
session.start |
새 세션 시작 시 |
session.end |
세션 종료 시 |
error |
에러 발생 시 |
설정 예시
triggers:
# Gateway 시작 시 환영 메시지
- type: event
event: gateway.start
action: send_welcome_message
# 에러 발생 시 관리자에게 알림
- type: event
event: error
severity: critical
action: notify_admin
# 새 세션 시작 시 온보딩 메시지
- type: event
event: session.start
action: onboarding_message
Heartbeat 트리거
주기적으로 간단한 작업을 실행합니다.
triggers:
- type: heartbeat
interval: 300 # 5분마다 (초 단위)
action: check_status
actions:
check_status:
run: |
print("상태 확인 중...")
# 상태 체크 로직
조건부 트리거
특정 조건이 충족될 때만 실행됩니다.
triggers:
- type: message
pattern: "배포"
condition: |
# 업무 시간(9-18시)에만 실행
import datetime
hour = datetime.datetime.now().hour
return 9 <= hour <= 18
action: deploy_check
트리거 관리 명령어
# 활성 트리거 목록
openclaw trigger list
# 트리거 일시 중지
openclaw trigger pause morning_news
# 트리거 재개
openclaw trigger resume morning_news
# 트리거 즉시 실행
openclaw trigger run morning_news
# 트리거 로그
openclaw trigger logs morning_news
모범 사례
- 의미 있는 액션 이름 사용:
check_email,morning_report등 - 타임아웃 설정: 무한 루프 방지
- 에러 처리: 실패 시 재시도 로직 포함
- 로그 기록: 실행 기록 남기기
다음 단계:
- 자동화 개요 - 자동화 심화 학습
- Cron 가이드 - Cron 표현식 상세
- Heartbeat 가이드 - 주기 실행