반응형

PHP와 카카오톡 자동응답 API를 이용하여 학식 봇 제작 - 4
(라 쓰고 글 수 늘리려는 꼼수라한다)

는 바로 시작!


PHP와 카카오톡 자동응답 API를 이용하여 학식 봇 제작 - 3에서 .txt로 저장하는 것까지 했다.

이제 이것을 매일 0시에 실행하여 .txt 저장할 수 있도록해 볼것이다.

리눅스에는 일정시간이 되면 자동을 실행해주는 기능이 있다!

cron, crontab이라는 것을 써서 매일 0시에 동작할 수 있도록 할 것이다.

자세한 사용법은 검색 고고


> vim /etc/crontab



/etc/crontab을 보면 아마 최초 화면은 밑에 3줄빼고 있을 것이다. 밑에 3줄이 바로 학식을 긁어오는 php를

실행시킬 수 있도록 해주는 명령어이다. 

한번하면 혹시 에러떠서 못 긁어올 수 있으니까 한 4번정도 실행 시킬 수 있도록 하였다.

경로는 절대경로를 써야 편할 것이다. 그리고 >> 이후는 제대로 실행됐는지 로그 남길려고 만든 부분이니

로그가 필요없다 싶으면 >> 이후는 날려먹어도 되겠다.  

다 작성했다면 :!wq 저장하고 나온다. 그리고 다음 명령어를 입력해준다~

> /etc/init.d/cron reload

> /etc/init.d/cron restart

그럼 끝~



그럼 이제 매일 .php가 실행이 되어서 .txt가 생길테니 이제 이 .txt를 message를 통하여 호출한다. 그래야

카톡에서 확인 할 수 있으니까~


$data = json_decode(file_get_contents('php://input'), true); $content = $data["content"]; ######### 요청을 들어와서 content로 저장하여 어떤 값 반환해줄지 if (!function_exists('codepoint_encode')) { function codepoint_encode($str) { return substr(json_encode($str), 1, -1); } } if (!function_exists('codepoint_decode')) { function codepoint_decode($str) { return json_decode(sprintf('"%s"', $str)); } } if($content == "식단") { $tt = date("Y-m-d"); #echo "시간 : ".$tt."\n\n\n\n\n\n"; $fileopen = fopen("~경로/data/".$tt."_이름.txt","r") or die("Unable file!!"); $file = fread($fileopen, filesize("~경로/data/".$tt."_이름.txt")); $encdata = str_replace("\r\n","\n",$file); $encdata = codepoint_encode($encdata); echo <<< EOD { "message": { "text" : "$encdata"}, "keyboard":{ "type" : "buttons", "buttons":[ "식단1", "식단2", "식단3", "식단4", "문의하기" ] } } EOD; fclose($fileopen); }


여기서 카카오톡 API에서 .txt파일을 호출할 때 몇가지 문제점이 있다. .txt파일에 포함되어있는(우리 눈에는 보이지 않지만)

\r\n이 연결이 끝이라는걸 의미한다. 그래서 \r\n을 방치하면 값이 온전히 리턴되지 않아 카톡에서 확인이 불가능하다.

따라서 str_replace로 치환해준다. 그리고 인코딩을 한번더 해야하는데 codepoint_encode()를 써서 바꾸어줘야 .txt파일이

정상적으로 카카오톡 자동응답 api로 리턴되어 카톡에서 확인 할 수 있다.




(사진 삼탕잼)

자 그러면 이제 아래 키보드도 만들었고 반환하는 것도 만들었으니까 완성이다~

몇일간 잘 돌아가는지 테스트하고 이제 쓰면 될것이다~



PHP와 카카오톡 자동응답 API를 이용하여 학식 봇 제작의 포스팅이 끝났다.

뭔가 굉장히 번갯불에 콩 구워먹듯이 후다닥 적은 느낌이 없잖아 있지만, 정말 생각보다 쓸게 많이 없다.

만들면서 시행착오를 엄청 거친다고 생각보다 시간이 오래 걸렸는데, 개발을 잘하는 사람들이 잡으면

진짜 하루만에 다 완성 할 수 있는 쉬운 난이도였던거 같다.

개발 소요시간은 개발노트를 보니까 18일이 걸렸다.

개발 노트에 시행착오랑 생각했던걸 주저리주저리 적어놨더니 생각보다 많이 긴거 같다.

(근데 포스팅하니까 엄청 짧아지는건 함정)

처음하기전에는 막연히 어려울거라 생각했는데 하다보니까 그렇게 엄청 어려운 것은 아닌 것 같았다.

그래서 시작이 반이라는 말이 생긴지도 모르겠다. 

나의 이런 시행착오가 다른 사람에게 미약하나마 도움이 되었으면 좋겠다.



반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기