Victor

[연재] 폰에서 시키기 (1) 카톡으로 하고 싶었는데 안 됐습니다

연재 · 2026-08-08

내 카톡을 읽을 방법이 없었습니다

 

집 밖에서 폰으로 맥에 있는 도구들에게 말을 걸어보고 싶었습니다.

 

당연히 카카오톡을 생각했어요. 저도 하루 종일 켜놓는 게 카톡이고, 새 앱을 하나 더 깔 이유가 없잖아요. 그래서 방법을 찾아봤습니다.

 

카카오는 내 개인 대화를 읽어갈 길을 열어두지 않았습니다.

 

정확히 말하면 이렇습니다. 제가 카톡으로 "현황판 어때?" 라고 보내면, 그 메시지를 프로그램이 받아볼 방법이 없어요. 내보내는 건 됩니다. "나에게 보내기" 라는 기능이 있어서, 제 카톡으로 알림을 쏘는 건 가능해요. 그런데 받는 건 안 됩니다.

 

한쪽만 뚫린 관이었던 거예요.

 

 

이게 좀 허무했습니다. 알림만 받는 거라면 이미 되고 있었어요. 아침에 사이트가 배포됐는지, 쇼츠가 올라갔는지는 다른 방법으로도 볼 수 있습니다. 제가 원한 건 말을 걸어서 답을 받는 것이었는데, 그 방향이 막혀 있었습니다.

 

오늘은 이 관을 어디로 뚫었는지 이야기해 보려고 합니다. 그리고 뚫고 나서야 알게 된 것들이 있는데, 그건 다음 두 편에 나눠서 적겠습니다.

 

 

24시간 켜져 있는 맥과, 집 밖에 있는 나

 

왜 이걸 하고 싶었는지부터요.

 

지금 제 맥은 사실상 24시간 돌고 있습니다. 확인해 보니 전원이 꽂혀 있을 때는 아예 잠들지 않게 설정돼 있었어요. 그럴 만한 이유가 있습니다. 정해진 시각에 알아서 도는 일들이 꽤 있거든요. 아침 9시에 사이트를 다시 만들어 올리고, 하루 다섯 번 쇼츠를 올리고, 평일 장중에는 1분마다 지수와 환율을 찍어 쌓습니다.

 

그러니까 맥은 항상 일하고 있는데, 저는 자주 집 밖에 있습니다.

 

밖에서 궁금해지는 건 대단한 게 아니에요. 이런 것들입니다.

 

  • 오늘 배포가 제대로 나갔나
  • 쇼츠 조회수가 어제보다 붙었나
  • 어제 쓰다 만 글이 어디까지 됐더라
  • 이 아이디어 지금 적어두지 않으면 잊을 것 같은데

 

폰에서 이걸 물어볼 수 있으면, 집에 와서 다시 켜고 확인하는 일이 없어집니다. 그리고 솔직히 하나 더 있어요. 누워서 생각난 걸 그 자리에서 던져놓고 싶었습니다.

 

이 마지막 욕심이 나중에 문제가 됩니다. 그건 3편에서요.

 

 

카카오에도 길은 있는데, 5초 안에 답해야 합니다

 

카카오가 완전히 막아둔 건 아닙니다. 카카오톡 채널을 만들고 챗봇을 붙이면, 그 채널로 온 말은 받아볼 수 있어요. 기업들이 고객 문의를 받는 그 방식입니다.

 

그래서 그 길로 갈까 하다가 숫자 하나를 보고 접었습니다.

 

채널 챗봇은 5초 안에 답해야 합니다. 늦으면 실패로 처리돼요. 예외적으로 시간을 더 받는 방법이 있는데 그것도 1분입니다.

 

제가 시키려는 일은 5초에 끝나는 일이 아닙니다. 파일을 몇 개 읽고, 상태를 확인하고, 정리해서 답하는 일이 대부분이라 1분도 짧아요. 무거운 작업은 15분씩 갑니다.

 

그럼 "늦게 답하기"를 하면 되지 않냐고 할 수 있는데, 여기가 진짜 막힌 곳입니다. 나중에 답을 그 대화방으로 밀어넣으려면 친구톡·알림톡을 써야 하고, 그건 사업자 등록이 있어야 하고 건당 돈이 붙습니다.

 

정리하면 이렇습니다.

 

하고 싶은 것카카오에서
내 개인 대화로 말 걸기아예 안 됨
채널로 말 걸기되는데 5초 (예외 1분)
15분 뒤에 답 보내기사업자 등록 + 건당 과금
알림만 받기

 

개인이 쓰려고 만드는 도구에 사업자 등록부터 하고 시작할 수는 없잖아요. 여기서 카카오는 접었습니다.

 

 

텔레그램으로 갔더니, 세울 게 없어졌습니다

 

그래서 텔레그램으로 돌아섰습니다. 여기는 봇을 만드는 길이 처음부터 열려 있어요. 응답 시간 제한도 없고, 사업자 조건도 없습니다.

 

그런데 옮기고 나서 예상 못 한 게 하나 더 있었습니다. 세워야 할 것들이 통째로 없어졌어요.

 

원래 각오한 건 이런 구조였습니다. 폰에서 보낸 말이 맥까지 오려면, 바깥에서 제 맥으로 들어오는 길이 있어야 하잖아요. 그러려면 인터넷에서 접근할 수 있는 주소를 만들고, 통로를 뚫고, 그 통로를 계속 열어둬야 합니다. 집 공유기도 건드려야 하고요.

 

그런데 텔레그램은 반대 방향으로 동작합니다.

 

맥이 텔레그램 쪽에 먼저 물어봅니다. "저한테 온 말 있어요?" 하고요. 없으면 잠깐 기다리고, 오면 받아옵니다. 그러니까 맥에서 바깥으로 나가는 연결만 씁니다. 바깥에서 제 맥으로 들어오는 문을 만들 필요가 없어요.

 

이게 무슨 차이냐면요.

 

원래 각오한 것텔레그램
공개 주소필요없음
통로 열기필요없음
공유기 설정필요없음
밖에서 내 맥으로 들어오는 문있어야 함아예 안 만듦

 

만들 게 줄어든 것보다, 열어둘 문이 없어진 게 더 마음에 들었습니다. 문을 만들면 그 문을 지켜야 하잖아요. 아예 없으면 지킬 것도 없습니다.

 

카카오에 붙였으면 이걸 다 세워야 했을 겁니다. 막혀서 돌아간 길이 결과적으로 더 단순했어요.

 

 

열쇠 하나가 이 맥을 여는 열쇠가 됩니다

 

봇을 만들면 열쇠를 하나 받습니다. 긴 문자열인데, 이걸로 봇을 조종해요.

 

처음엔 그냥 비밀번호 하나라고 생각했습니다. 그런데 만들다 보니 성격이 좀 달랐어요.

 

폰에서 보낸 말은 결국 맥에서 실행됩니다. 그리고 이 봇은 물어보지 않고 일합니다. 물어볼 사람이 화면 앞에 없으니까요. 화면 앞에서 시킬 때는 "이 파일 지울까요?" 하고 한 번 멈춰 서는데, 폰에서는 그 멈춤이 없습니다.

 

그러니까 이 열쇠를 가진 사람은 제 맥에서 명령을 실행할 수 있습니다. 비밀번호가 아니라 이 집 현관 열쇠에 가까웠어요.

 

그래서 자물쇠를 하나 걸었습니다. 내 대화 번호만 통과시키는 겁니다.

 

텔레그램 봇은 아이디만 알면 누구나 말을 걸 수 있어요. 그건 막을 수 있는 게 아닙니다. 그래서 봇이 말을 받으면 누가 보냈는지부터 보고, 내 번호가 아니면 읽지도 않고 버리게 했습니다. 답도 안 하고, 무슨 말이었는지 기록만 남기고 끝냅니다.

 

여기에 두 개를 더 걸었어요.

 

하루 상한 200건. 열쇠가 새서 누가 폭주시킬 때 피해를 자릅니다. 단체방 참여 차단. 누가 이 봇을 단체 대화방에 끌고 들어가는 길을 막았습니다.

 

이 세 개가 지금 이 봇의 자물쇠 전부입니다. 그리고 자물쇠 하나가 사실 잠겨 있지 않았다는 걸 나중에 알게 되는데, 그 이야기가 3편입니다.

 

 

코드 없이 먼저 왕복을 확인했습니다

 

붙이기 전에 하나 해두고 싶었습니다. 프로그램을 만들기 전에 관이 뚫렸는지부터 보는 것.

 

만들다가 안 되면 어디가 문제인지 찾기가 어렵잖아요. 열쇠가 틀린 건지, 번호가 틀린 건지, 내가 쓴 코드가 틀린 건지 뒤엉킵니다. 그래서 순서를 이렇게 잡았습니다.

 

1. 봇을 만들고 열쇠를 받는다 2. 열쇠가 살아 있는지 확인한다 3. 폰에서 봇에게 한 마디 보낸다 4. 그 말이 맥까지 왔는지 확인한다 — 여기서 내 대화 번호를 알아낸다 5. 맥에서 폰으로 한 통 쏴본다 6. 폰에 도착하면, 그때 프로그램을 만든다

 

5번에서 폰에 글자가 뜨는 걸 보고 나서야 코드를 쓰기 시작했습니다. 이 순서로 하면 나중에 문제가 생겨도 "관은 뚫려 있다"는 게 이미 확인된 상태라 찾을 범위가 줄어듭니다.

 

실제로 이 과정에서 걸린 게 하나 있었어요. 4번에서 아무것도 안 나왔습니다. 원인은 단순했습니다. 제가 봇에게 먼저 말을 안 걸었던 거예요. 봇은 제가 먼저 말을 걸어야 저를 알 수 있습니다. 폰에서 "안녕" 한 마디 보내고 다시 하니 번호가 나왔습니다.

 

 

맥이 잠들면 봇도 죽습니다

 

관이 뚫린 뒤에 챙긴 건 계속 돌게 하는 것이었습니다.

 

이 봇은 클라우드에 있지 않습니다. 제 맥에서 돕니다. 그러니까 맥이 잠들면 봇도 멈춰요. 폰에서 말을 걸어도 아무 일도 안 일어납니다.

 

다행히 전원이 꽂혀 있을 때는 잠들지 않게 이미 돼 있었습니다. 화면만 꺼지고 본체는 깨어 있는 상태요. 이미 정해진 시각에 도는 일들 때문에 그렇게 해둔 거였는데, 여기서 그게 그대로 조건이 됐습니다.

 

그리고 두 가지를 걸었습니다.

 

로그인하면 알아서 뜨게. 맥을 재부팅해도 제가 뭘 하지 않아도 됩니다. 죽으면 되살아나게. 프로그램이 어떤 이유로 멈추면 다시 띄웁니다.

 

두 번째가 생각보다 중요했어요. 만들면서 실제로 연결이 한 번 끊겼습니다. 인터넷이 순간 흔들린 것뿐이라 화면 앞에서라면 그냥 다시 하면 되는 일인데, 계속 돌아야 하는 프로그램에서는 그게 곧 죽음입니다. 한 번 끊기면 그날 밤 내내 봇이 죽어 있는 거예요.

 

그래서 연결이 끊기면 1초, 2초, 4초… 이렇게 간격을 늘려가며 계속 다시 붙게 했습니다. 끊겼다고 멈추지 않고요.

 

 

막힌 길이 알려준 것

 

돌아보면, 카카오에서 막힌 게 손해가 아니었습니다.

 

카카오로 갔으면 5초 안에 답을 만들려고 애를 썼을 거예요. 짧은 질문만 되게 잘라내고, 무거운 일은 아예 못 하게 하고, 그러다 "이건 왜 이렇게 답답한가" 하면서 친구톡 쪽을 다시 들여다봤을 겁니다. 사업자 등록 앞에서 멈췄겠죠.

 

막혀서 다른 길로 갔더니, 세울 게 없어지고 지킬 문도 없어졌습니다.

 

여기서 하나 배운 게 있어요. 처음 떠올린 방법이 막힐 때, 그걸 뚫으려고 애쓰는 것보다 왜 막혀 있는지 보는 게 빠를 때가 있습니다. 카카오가 개인 대화를 안 열어둔 건 실수가 아니라 정한 거예요. 그 앞에서 우회로를 찾는 건 계속 벽을 미는 일이었을 겁니다.

 

 

여기까지는 쉬웠습니다

 

관을 뚫는 데까지는 반나절도 안 걸렸습니다. 봇을 만들고, 열쇠를 받고, 번호를 확인하고, 프로그램을 올리고, 폰에서 "안녕" 을 보내니 답이 왔습니다.

 

어려운 건 그다음이었어요.

 

폰에서 말을 걸 수 있게 되자마자 두 가지가 걸리기 시작했습니다.

 

하나는 돈 걱정이었습니다. 폰에서 자꾸 던지면 쓸 수 있는 양을 금방 태워먹지 않을까요? 그래서 아끼는 장치를 여기저기 넣으려고 했는데, 실제로 재보니 제 걱정이 엉뚱한 곳을 보고 있었습니다. 이 이야기가 2편입니다.

 

다른 하나는 자물쇠였습니다. 폰에서 던진 게 바로 실행되는 게 무서워서, "읽기만 해봐" 를 만들어 걸어뒀어요. 그런데 그게 잠겨 있지 않았습니다. 이 이야기가 3편입니다.

 

둘 다 만들어놓고 확인하다가 발견한 것들입니다. 만들기 전에 예상했던 것과는 반대 방향이었어요.

 

 

다음 편에서는 "ok" 라고 한 마디 답받는 데 3만 3천 단어가 들어간 이야기부터 해보겠습니다. 그리고 그걸 보고 제가 세운 계산이 어떻게 뒤집혔는지요.

 

#텔레그램봇 #카카오톡API #챗봇 #자동화 #원격제어 #맥미니 #맥 #홈서버 #롱폴링 #웹훅 #개인프로젝트 #사이드프로젝트 #도구만들기 #AI개발 #클로드 #클로드코드 #바이브코딩 #비개발자개발 #비개발자 #생산성 #업무자동화 #알림봇 #텔레그램 #보안 #접근제어 #상주프로세스 #launchd #휴먼인더루프 #빅터하우스 #사람은어디에남는가

댓글

    로그인 없이 쓰는 대신, 등록한 댓글은 직접 지울 수 없습니다. 지워야 할 댓글은 옆의 신고를 눌러주세요.
    네이버 블로그글 원문 보러가기 →유튜브 쇼츠만드는 장면 20초로 보기 →
    관리자 Victor · 문의는 우상단 신고·제안으로 남겨주세요.
    글과 화면은 정적 파일로 만듭니다. 댓글과 조회수만 외부 데이터베이스에 저장합니다 — 개인정보처리방침

    오류 신고 · 제안

    관리자 Victor에게 전달됩니다