반응형

PHP와 카카오톡(Kakao Talk) 자동응답 API를 이용하여 학식 봇 제작해보자 ! 


어느 평화로운 학교에서 한 잉여가 있었다. 그 잉여는 기말고사가 머지 않았는데 갑자기 개발을 하고 싶어졌다..

나는 학식을 먹지 않는 사람이지만, 아주 가끔 학식이 뭐가 나오는지 궁금할 때 홈페이지 들어가는게 너무 귀찮았다.

개발하고 싶은 마음과 귀차니즘이 융합이 되어 카카오톡 자동응답으로 학식을 알려주는 봇을 만들고 싶어졌다!
(개발하는 귀차니즘은 왜 안생겼을까..)

항상 느끼는거지만 시험이 다가올 땐 무얼해도 재밌지!


그래서 무작정 만들어보기 시작했다! 

시작이 반이라는 말도 있으니 이미 반은 완성

(가만히 있으면 반이라도 간다했으니 이제 가만히 있으면 완전 완성)


ㅈㅅ..





대충 구성은 위와 같다. 물론 처음부터 이렇게 생각한건 아니고 만들다 보니까 이렇게 되었다.

실력의 한계와 조언으로 수정하고 수정하다보니 처음 생각한 구성과 많이 달라졌다....


개발할 때 사용한 툴들은 putty와 notepad++(NppFTP), WinSCP, Postman을 썼다.  


제일 먼저 응답할 서버를 구해야 한다.

어딘지는 자세히 말할 수 없지만 nginx와 Docker로 하나 열어주겠다는 사람이 등장하였다.

그래서 Docker로 하나 얻어서 우분투 16.04와 php7버전을 깔고 apm 깔고 뭐 기본적인 설치를 하면 된다!

설치는 여러번 해보지만 항상 할때마다 까먹는다... 또르르 그래서 다음 링크를 참고하면서 만들면 좋을 듯 싶다

https://blog.lael.be/post/73


서버를 설치했다면 이제 옐로우 아이디에 들어가서 아이디를 등록해야한다!

아 근데 이제 옐로우 아이디가 아니라 플러스 친구로 바뀌었다.

https://center-pf.kakao.com/login

위의 경로로 들어가서  로그인해서 만들면된다. 만드는 방법은 아주 많기 때문에 신청와 완료부분은 넘어갈거다~
(실은 만들고나서 플친으로 바뀌어서 어떻게 만들었는지 기억이 안남..ㅋ)


하지만 다시 해보도록 해보자! 하하핳


필자는 이미 검토완료를 받았기 때문에 처음 만드는 거라면 아래의 과정보다 좀 더 많은 과정을 요구할 수 있다.


[그림1]

[그림2]

순서가 좀 짬뽕인데 말로 잘 설명해보겠다..

[그림1] 에 보면 새 플러스 친구 만들기가 있다. 누르면

[그림2]가 나온다. 그냥 입력해주면 된다. 입력을 다하고 만들면

[그림1] 에 목록이 나오는 것을 알 수 있다. 

새 플러스 친구 만들기가 다른 곳에 있을 수도 있으니 그정도는 알아서 들어가면 되겠다.




이제 계정도 만들었으니, 서버와 연동해서 Keyboard가 나오도록 해보자.

플러스 친구 관리자센터에 들어가면 위와 같은 화면을 볼 수가 있다.

왼쪽 목록에 스마트채팅 탭을 클릭하고 API형밑에 설정하기를 누른다!




나의 API 서버 URL은 위와 같다(모자이크때문에 하나도 안보이겠지만)

꼭 최상위 디렉토리일 필요가 없고 Kaka_Bot이라는 하위 폴더를 잡아도 된다.

앱 URL 형태는 http://abc.abc.com 형태여야한다.

여기서 필요한 것은 앱 URL에서 API 테스트를 통과해야한다는 것이다. 

필자는 여기서 시간을 꽤 많이 잡아 먹었다...무려 아주 간단한 실수로..




제대로 API테스트가 된다면 위와 같이 나와야한다.... 제대로 응답이 오지 않는다면 다른 에러를 마구마구 뿜으므로

잘..아주 잘 해야한다! 경로와 소스코드는 다음과 같다!

개발 환경에 따라 적절히 바꿔서 만들면 된다. 경로는 개발 환경에 바뀌겠지만 keyboard.php는 바뀌지 않는다.

/www/html/Kakao_Bot/keyboard.php

echo <<< EOD
{
	"type" : "buttons",
	"buttons" : ["button1","button2", "button3", "button4", "button5"]
}

EOD;

위 아래로 <?php , ?> 를 넣는건 빼먹지 말자 이 소스코드는 php소스 코드이다!
(티스토리에서 하이라이팅할때 <?php, ?> 넣으니까 깨짐 ㅠ)

저장하고 다시 관리자센터로 돌아와서 API 테스트를 눌러보자.

그럼 위와 같이 Required keyboard : OK가 뜬다.


무탈하게 OK가 뜬다면 더할나위 없겠지만 

우리한테 그런건 있을 수 없어에 대한 이미지 검색결과


에러가 막 이상한게 뜬다..? 그러면 어쩔 수가 없어요..

우리의 친구 구글과 github에서 해답을 찾아야 돼요~

https://github.com/plusfriend/auto_reply

짱짱한 실력자님께서 해결 방법을 올려주고, 다른 사람의 에러와 같다면 참고해서 해결하면되요!

여기가 카카오톡 자동응답 api의 document이니까 자주 자주 참고하면 되겠다~


api 테스트를 누르는게 귀찮다면 Postman을 사용해보자

https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop

크롬 확장도구로써 get이나 json을 보내 돌아오는 값을 확인 할 수 있는 아주 유용한 도구이다.

디버깅할 때 좋은 툴이니까 사용하면 좋을 것이다!


※여기서 아주아주 중요한 것이 있는데 EOD 뒤에 스페이스바나 " buttons"등 스페이스가 하나 더 들어가거나 철자가 틀리면

Postman에서 제대로 값이 오는데, 카카오톡 API에서는 에러가 나올 수 있다. 정말 진짜 혼또니 제대로 모든 철자를 확인하고

스페이스바가 하나 더 들어가있는지 확인해야한다.. 필자는 buttons앞에 스페이스바가 하나 더 들어간걸 못찾아서

몇 일을 뻘짓했다.. 찾았을 때 그 기쁨과 허무함이란..



관리자 센터에서 OK가 뜨는 것을 확인했다면 이제 휴대폰에서 Bot에서 제대로 뜨는지 확인 할 필요가 있다.

keyboard.php가 제대로 응답한다면 아래의 빨간색 부분이 제대로 나올 것이다.



아 맞다. 폰에 카카오톡 친구추가하는 방법을 안 알려줬네

아까 플러스친구 관리자 센터에서 홍보하기 -> 플러스 친구 URL로 간단히~ 친구 추가가 가능


그리고 폰에서 플러스친구 그룹에서 보면 확인할 수 있다요.

즐겨찾기로 하면 좀 더 쉽게 접근할 수 있지




만든지 조금 되었고, 글을 쓸 때 틀을 안 잡고 의식의 흐름 기법대로 적으니까 글이 아주 중구난방인 듯하다.

이번 포스팅은 카카오톡 플러스 친구로 등록을 하고, Keyboard가 보이는 것까지 해보았다.

다음 포스팅은 키보드를 누르면 응답을 하는 message.php를 만들어 볼 것이다.

이까지 만드는데 엄청난 시행착오를 거치면서 시간 많이 썼는데... 막상 포스팅 하니까 정말 별거 없네..



혹시나 혹시나 그럴리가 없겠지만 궁금한 점 댓글 달아주면...

아는 한도내에서 답변을 달아 드리죠. 하핳

그럼 이만 총총


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