이 문서는 공폰의 카카오톡 알림 한 건을 숲봇 서버에 보내고, 받은 텍스트를 같은 알림에 답장하는 매크로를 직접 만드는 순서입니다. 검증되지 않은 .macro 가져오기 파일은 제공하지 않습니다. 화면의 항목 이름은 MacroDroid 버전과 기기 언어에 따라 조금 다를 수 있습니다.
MacroDroid 공식 설명도 함께 확인할 수 있습니다.
- 공폰에서 카카오톡 봇 계정이 대상 단톡방에 들어가 있어야 합니다.
- MacroDroid에 알림 접근 권한을 허용하고, 제조사 배터리 절전 대상에서 제외합니다.
- Vercel 배포 주소와 배포 때 정한
SOOPBOT_TOKEN을 준비합니다. - 브라우저에서
https://<project>.vercel.app/api/reply를 열었을 때ok가 보여야 합니다.
- MacroDroid에서 새 매크로를 만들고 이름을
숲봇으로 정합니다. - 트리거로 Notification Received(알림 수신)를 선택합니다.
- 애플리케이션은 카카오톡만 선택합니다.
- Separate title and message(제목과 메시지 분리) 모드를 켭니다.
- Title → Matches를 선택하고 정확한 방 제목을 입력합니다. 예:
우리 동네 AI 숲. - Message → Contains를 선택하고
숲봇아를 입력합니다. - 봇 계정이 보낸 알림은 제외합니다. 발신자 조건을 지원하는 화면에서는 봇의 정확한 카카오톡 이름을 **제외(Excludes)**에 넣으세요. 기기에서 발신자와 본문이 합쳐져 보인다면 실제 자기 답변 알림 형식에 맞춰 같은 제외 조건을 추가합니다.
마지막 제외 조건은 답변이 다시 매크로를 실행하는 재귀를 막기 위한 필수 안전장치입니다. 처음에는 테스트 방 한 곳만 지정하세요.
HTTP 요청보다 앞에 다음 두 동작을 이 순서로 추가합니다.
- 전역(Global) 범위의 전역 문자열 변수
soopbot_reply를 만들고 빈 문자열로 설정/초기화합니다. - 전역(Global) 범위의 전역 정수 변수
soopbot_status를 만들고0으로 설정합니다.
두 변수는 모두 전역 변수로 만들고 매 요청 전에 반드시 초기화해야 합니다. 이전 요청의 답이나 상태 코드가 남으면 실패한 요청 뒤에 예전 답장을 보낼 수 있습니다. 전역 문자열 변수는 Notification Reply에서 [v=soopbot_reply]로 참조합니다.
HTTP Request 동작에 다음 값을 그대로 맞춥니다.
| 항목 | 값 |
|---|---|
| Method | POST |
| URL | https://<project>.vercel.app/api/reply?room=room1 |
| Content Body | 알림 본문 매직 텍스트 {notification} |
| Content Type | Custom: text/plain; charset=utf-8 |
| Header 이름 | X-Bot-Token |
| Header 값 | Vercel의 SOOPBOT_TOKEN과 동일한 24자 이상 토큰 |
| Timeout | 60초 |
| 응답 본문 저장 | 전역 문자열 변수 soopbot_reply |
| HTTP 반환 코드 저장 | 전역 정수 변수 soopbot_status |
| 실행 방식 | Block next action until complete 활성화 |
토큰 값에는 따옴표를 붙이지 마세요. URL의 <project>는 실제 Vercel 프로젝트 도메인으로 바꿉니다. Vercel의 SOOPBOT_ROOM_KEY를 바꾼 경우에는 room=room1도 같은 값으로 바꿔야 합니다.
Block next action until complete를 켜지 않으면 HTTP 요청이 끝나기 전에 다음 조건이 실행되어 상태가 0인 채로 남을 수 있습니다.
- If 절을 추가합니다.
- 첫 조건은 전역 정수 변수
soopbot_status == 200입니다. - AND 조건으로 전역 문자열 변수
soopbot_reply가 비어 있지 않음을 추가합니다. - If 안에 Notification Reply 동작을 넣습니다.
- 알림 선택은 Use Notification Trigger를 사용해 이 매크로를 시작한 카카오톡 알림을 가리킵니다.
- 답장 텍스트는
[v=soopbot_reply]로 지정합니다. - 실패를 알림으로 다시 보내는 Else 동작은 만들지 않습니다. 상태 확인은 MacroDroid 시스템 로그에서 합니다.
최종 순서는 다음과 같아야 합니다.
Notification Received: 카카오톡 + Separate title and message
+ Title Matches 정확한 방 제목 + Message Contains 숲봇아 + 봇 발신자 제외
→ 전역 soopbot_reply = ""
→ 전역 soopbot_status = 0
→ HTTP Request (완료될 때까지 다음 동작 차단)
→ If soopbot_status == 200 AND soopbot_reply is not empty
→ Notification Reply: [v=soopbot_reply]
- 매크로를 저장하고 활성화합니다.
- 다른 계정으로 정확한 대상 방에
숲봇아 안녕을 보냅니다. soopbot_status가200,soopbot_reply가 비어 있지 않은지 MacroDroid 로그에서 확인합니다.- 답장이 한 번만 오는지 확인합니다.
- 호출어 없이
안녕만 보내거나 다른 방에서 호출했을 때는 답장하지 않는지 확인합니다. - 봇 계정의 답장 알림이 다시 트리거되지 않는지 확인합니다. 재실행된다면 1단계의 봇 발신자 제외 조건을 실제 알림 형식에 맞게 보강한 뒤 다시 테스트합니다.