본문 바로가기

컴퓨터/기타

Project 2.0 카카오톡 자동 응답봇 만들기[4]

반응형


저번 시간에는 정적인 응답을 보여주는 방법에 대해서 살펴보았습니다.


이번 시간에는 이러한 정적인 응답을 어떻게 하면 동적인 응답으로 바꾸어서 보여줄 수 있는지에 대해서 살펴보도록 하겠습니다.


동적인 응답의 대표적인 예로 주사위 기능을 추가해보도록 합시다.


먼저 이전에 정적인 응답을 만들 때처럼 로그인을 하고, 버튼 추가하기 링크를 클릭합니다. 그리고 아래와 같이 폼의 내용을 채웁니다.


일단 이렇게 하면 '주사위'에 대한 기능이 추가가 되었지만 카카오톡 상에서는 이 기능을 아직 사용할 수 없습니다. 왜냐하면 우리는 '주사위'에 해당하는 keyboard를 생성하지 않았기 때문이지요. 간단하게 Default keyboard에 '주사위'를 추가하도록 합시다. 이전 강의대로 따라오셨다면, keyboard.config.php 파일을 받으셨을 때 아래와 같이 '안녕'과 '자기소개'라는 문구가 써져있을 겁니다.


그래서 아래처럼 이 파일에 '주사위'라는 문구를 배열에 추가하고 서버에 올립니다.


그러면 이제 처음 화면에서 '주사위' 버튼이 추가가 되어 있는 것을 볼 수 있습니다.


'주사위' 버튼을 누르면 아래와 같이 정적인 응답만을 볼 수 있습니다.


이제 이 파일을 수정해서 동적인 응답을 보여줄 수 있도록 하겠습니다. 일단 관리자 페이지로 가시면 '파일명 찾기'라는 링크가 있습니다. 이 링크를 클릭합니다. 그러면 아래 사진과 같이 텍스트를 입력할 수 있는 부분과 버튼이 있는 것을 확인할 수 있습니다.


이 파일명 찾기는 찾고자 하는 버튼의 이름을 입력하면 해당하는 파일이 있는지 체크하고 있으면 다운로드를 받을 수 있게 하고, 파일이 없으면 에러를 표시하도록 되어 있습니다. 그래서 이렇게 다운로드 받은 파일을 수정해서 서버 파일을 덮어쓰기 하면 됩니다.

여기에서는 '주사위'에 해당하는 기능을 수정할 것이므로 '주사위'를 입력하고 버튼을 눌러서 파일을 다운로드 받습니다. 그래서 다운로드 받은 파일을 열면 아래와 같은 화면을 볼 수 있습니다.


여기에서 주사위를 보여줄 수 있도록 하기 위해서 소스코드를 아래처럼 수정해서 저장을 한 후에 서버에 업로드합니다.


<?php
// content : 주사위
use \kakao\Msg;
use \kakao\Msg\Message;
use \kakao\Keyboard;

$dice_num = mt_rand(1, 6);

echo new Msg(
	new Message(
		"주사위의 눈의 수는 {$dice_num}입니다.",
		NULL,
		NULL
	),
	TRUE
);


이렇게 하면 주사위 기능이 구현이 끝났습니다. 이제 카카오톡 상에서 확인을 해봅시다.


잘 작동하는 것을 확인할 수 있습니다. 이렇게 해서 어떻게 동적인 응답을 만들 수 있는지에 대한 방법을 살펴보았습니다. 이를 응용하면 다양한 기능을 구현할 수 있으므로 잘 이용하시기 바랍니다.

반응형
  • 잘 보고 있습니다 감사합니다! 그런데 혹시 버튼에 의한 응답이외에 텍스트를 통한 응답이 가능하게 할 수 있는 방법은 없을까요?

    • 텍스트를 통한 응답이라는게 버튼을 보여주지 않고 그냥 키보드를 입력하게 해달라는 의미인가요?

  • 네 키보드 입력을 통해 명령어를 실행하는 방법이 궁금합니다..ㅎㅎ

    • 버튼 추가하기 부분에서 'Default Keyboard를 사용합니다'를 클릭하지 않고, 아래 텍스트 박스에 아무런 값도 입력을 하지 않으면 키보드로 입력을 받을 수 있습니다.
      그리고 키보드로 버튼 이름을 입력하고 전송을 누르면 해당하는 버튼이 실행됩니다.
      즉 여기에선 '주사위'라는 입력을 하면 "주사위 눈의 수는 3입니다." 라는 응답을 볼 수 있는거죠.

  • 아하 감사합니다!
    그리고 혹시 현재는 파일명이 msg_**** 형태로 저장이 되는데 임의로 설정해서 저장할 수 있는 방법은 없나요?

    • 임의로 설정하는 부분은 어려울 것 같습니다.

      지금 구현한 방식이 클릭한 버튼의 이름에 해싱을 적용한 문자열로 파일을 저장해놓고, 그 파일을 불러오는 방식으로 되어 있기 때문입니다.

      'msg_' 부분의 경우에는 수정을 할 수 있긴 합니다만 그렇게 된다면 코어 코드를 직접 수정해서 사용하셔야 합니다.

  • 그렇군요.. 많은 도움이 되었어요 감사합니다! 질문하러 블로그 자주 방문하겠습니다~ :D

    • 다음부터는 블로그에 질문하시기 보다는 https://github.com/humit0/kakao_auto_reply/issues 에서 문의를 해주시기 바랍니다 ㅎㅎ

  • 깃헙은 사용해본적이 없고 진입장벽이 있을거라 생각하여 가입도 안했었는데 이참에 가입해봐야겠네요ㅎㅎ 가입하자마자 질문 하나 남겨두겠습니다!

  • 엘템군님이 질문한거 보고 2017.05.28 15:40 댓글주소 수정/삭제 댓글쓰기

    똑같이 DefualtKeyboard체크 안하고 했는데 버튼이 이미 두개가 있어서 그런지 텍스트를 칠 수가 없습니다.
    어떡하죠?

  • 피터 2017.05.28 17:33 댓글주소 수정/삭제 댓글쓰기

    "사용" 이란 button을 누르면 type을 button에서 text로 변경하여, 버튼을 누르는게 아니라 텍스트를 치게하고 싶습니다. 어떻게 해야할까요?