[토이 프로젝트] 카카오톡 MT 참가신청 API
2019. 9. 14. 21:10ㆍProjects
개요
프로젝트 명 : 카카오톡 MT 참가신청 API
프로젝트 목적 : 카카오톡 플러스친구 자동응답 API를 활용
프로젝트 구분 : 토이 프로젝트
프로젝트 기간 : 2017년 03월
프로젝트 인원 : 1명
소스코드 (Python 2)
# coding:utf-8
# Korean Language Broken Defencer
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from flask import Flask, request
from flaskext.mysql import MySQL
import json
app = Flask(__name__)
mysql = MySQL()
#MySql config
app.config['MYSQL_DATABASE_USER'] = 'USER_ID'
app.config['MYSQL_DATABASE_PASSWORD'] = 'USER_PW'
app.config['MYSQL_DATABASE_DB'] = 'DATABASE_NAME'
mysql.init_app(app)
@app.route("/")
def hello():
return 'hello'
# Chat Initialize
@app.route("/keyboard")
def keyboard():
data = {'type' : 'buttons', 'buttons' : ['MT 참가 신청', 'MT 참가 신청 조회']}
result = json.dumps(data)
return result
# get User Message
@app.route("/message", methods=['POST'])
def message():
data = {}
# get Post JSON Data
json_data = request.get_json()
# Content Type
content_type = json_data['type']
# User Message
content = json_data['content']
# User Primary Key
user_key = json_data['user_key']
# u is for korean equal check
if content_type == "text":
if content == u"MT 참가 신청":
message = "[2017 연합 MT]\n장소 : 가평 ~~~\n일시 : 2017년 n월 n일 ~ 2017년 n월 n일\n회비 : 30,000원\n\n신청 양식 : 이름/학번/전화번호/주민등록번호\n예시 : 홍길동/1700001/010-1234-5678/980101-1234567"
data = {'message' : {'text' : message}}
saveAction(user_key, "applyMT")
elif content == u"MT 참가 신청 조회":
data = {'message' : {'text' : '[MT 참가 신청 조회]\n학번을 입력 해 주세요.'}}
saveAction(user_key, "checkMT")
else:
# Check MT Apply
if (checkAction(user_key, "checkMT") == 1):
deleteAction(user_key)
if checkMT(content):
message = "정상적으로 MT 참가 신청이 되었습니다."
else:
message = "조회 된 신청내역이 없습니다."
data = {'message' : {'text' : message}}
# MT Apply
elif (checkAction(user_key, "applyMT") == 1):
# split user Data
temp_data = content.split("/")
if len(temp_data) == 4:
# delete Action
deleteAction(user_key)
applyMT(user_key, temp_data[0], temp_data[1], temp_data[2], temp_data[3])
data = {'message' : {'text' : '아래와 같은 정보로 MT신청이 완료되었습니다.\n이름 : '+temp_data[0]+'\n학번 : '+temp_data[1]+'\n전화번호 : '+temp_data[2]+'\n주민등록번호 : '+temp_data[3]}}
if (len(data) == 0):
deleteAction(user_key)
#data = {'message' : {'text' : 'type : '+content_type+'\ncontent : '+content+'\nuser_key : '+user_key}}
data = {'message' : {'text' : '올바르지 않은 입력입니다.'}}
# Add Keyboard When Event Done
if (hasAction(user_key) == 0):
data['keyboard'] = {'type' : 'buttons', 'buttons' : ['MT 참가 신청', 'MT 참가 신청 조회']}
# print Result
result = json.dumps(data)
return result
if __name__ == "__main__":
app.run()
# DB Insert function
def applyMT(user_key, name, student_id, phone, private):
connection = mysql.get_db()
cursor = connection.cursor()
cursor.execute("INSERT INTO mt_members SET user_key = '"+user_key+"', student_name = '"+name+"', student_id = '"+student_id+"', student_phone = '"+phone+"', student_private = '"+private+"'")
connection.commit()
# Save User Action
def saveAction(user_key, action):
connection = mysql.get_db()
cursor = connection.cursor()
# delete User last action
cursor.execute("DELETE FROM kakao_tmp WHERE user_key = '"+user_key+"'")
connection.commit()
# insert User new action
cursor.execute("INSERT INTO kakao_tmp SET user_key = '"+user_key+"', action = '"+action+"', regist_date = now()")
connection.commit()
# check User Action
def checkAction(user_key, action):
connection = mysql.get_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM kakao_tmp WHERE user_key = '"+user_key+"' and action = '"+action+"'")
rows = cursor.fetchall()
return len(rows)
# check User Action
def hasAction(user_key):
connection = mysql.get_db()
cursor = connection.cursor()
cursor.execute("SELECT * FROM kakao_tmp WHERE user_key = '"+user_key+"'")
rows = cursor.fetchall()
return len(rows)
# delete User Action => Action Done
def deleteAction(user_key):
connection = mysql.get_db()
cursor = connection.cursor()
# delete User last action
cursor.execute("DELETE FROM kakao_tmp WHERE user_key = '"+user_key+"'")
connection.commit()
# checkMT
def checkMT(user_id):
connection = mysql.get_db()
cursor = connection.cursor()
# delete User last Action
cursor.execute("SELECT * FROM mt_members WHERE student_id = '"+user_id+"'")
rows = cursor.fetchall()
return len(rows)
느낀 점
카카오톡 플러스친구의 자동응답 API를 잘 활용하면 더욱 많은 일을 간편하게 처리할 수 있을 것 같습니다.
'Projects' 카테고리의 다른 글
[해커톤] 모바일 인력사무소 'Bongo' (0) | 2021.05.28 |
---|---|
[해커톤] 온라인 학습 관리 서비스 (0) | 2020.12.29 |
[해커톤] 학술정보원 좌석 예약 어플 (2) | 2019.09.09 |
[토이 프로젝트] KTX/SRT 잔여석 알림 (0) | 2019.09.09 |