본문 바로가기

프로그래밍/아두이노+카카오톡

Yellow id 연동을 위한 IBM bluemix기반 Python Flask 서버 개발

KaKaoTalk yellowID를 연동하기 위해서는 카카오톡에서 제공하는 api에 대한 가이드라인을 따라야 한다.

해당 가이드라인에 대한 설명은 https://github.com/plusfriend/auto_reply 에 가면 상세히 나와있다.



그 중에서 가장 증요한 API specification을 위 그림에 서 볼 수 있는데 해당 spec에 맞춰야지만 제대로 작동 가능하다.

해당 스펙에 맞도록 Python Flask서버를 아래와 같은 코드로 개발하였다.


# -*- coding: utf-8 -*-
import os
from flask import Flask,request, jsonify
app = Flask(__name__)
@app.route('/')
def Welcome():
return app.send_static_file('index.html')
@app.route('/myapp')
def WelcomeToMyapp():
return 'Welcome again to my app running on Bluemix!'
@app.route('/keyboard')
def Keyboard():
keyList= ["temperature","sensor"]
keyboardList = {'type': 'buttons', 'buttons': keyList}
return jsonify(keyboardList)
@app.route('/message', methods=['POST'])
def GetMessage():
content = request.get_json()
print content
text = content['content']
textContent = {"text":text}
textMessage = {"message":textContent}
return jsonify(textMessage)
@app.errorhandler(404)
def page_not_found(e):
text = "Invalid command!"
textContent = {"text":text}
errorMessage = {"message":textContent}
return jsonify(errorMessage)
port = os.getenv('PORT', '5000')
if __name__ == "__main__":
app.run(host='0.0.0.0', port=int(port))
view raw welcome2.py hosted with ❤ by GitHub



위 코드의 내용은 아래와 같다.

* Route 종류

/, /myapp, /keyboard , /message, errorhandler(404)

* / : index.html wep page를 보여주는 route

* /myapp : 간단한 text를 보여주는 route

* /keyboard : Yellow ID의 spec에 맞게 버튼 메시지 종류를 보여주는 route

* /message : Yellow ID의 spec에 맞게 만든 text echo message. POST로 JSON메시지를 받으면 해당 메시지안에 잇는 content를 가져와서 다시 echo message를 날리는 역할을 한다.

* errorhandler(404) : 404는 page not found 웹 메시지로서 위에 정의되어 있는 route가 아닌 임의의 다른 route로 가면 "Invalid command!"라는 메시지를 날린다.



Yellow ID는 이전에 만들었던 @코알라무브먼트 를 사용할 예정이다.



응답형 메시지는 다음과 같이 두개를 사용할 수 있는데 첫번째는 키워드형 자동응답이고 두번째는 API형 자동응답이다.


키워드형 자동응답은 매우 단순한 형태의 키워드가 나타나면 그에 대한 대답을 할 수있다


API형 자동응답은 REST api 서버 통신을 통해서 json형태의 메시지를 주고 받아 더욱 interactive한 메시지전송이 가능하다.



API형 자동응답 설정하기를 눌러 위와 같은 그림이 나오면 앱 등록하기 버튼을 누른다.



앱 등록을 위해서 위와 같이 정보를 입력한다.



API TEST를 통해서 API spec에 맞게 개발이 되었는지 확인도 가능하다.



앱 등록이 완료되면 서비스 대기 상태의 자동응답 API를 볼 수 있다.



서비스 시작을 누르게 되면 위 그림과 같이 상태가 "서비스 중"으로 바뀌면서 옐로우 아이디가 실행되게 된다.



@코알라무브먼트 를 옐로우아이디에서 검색하여 친구추가한다.



기본적으로 추가하면 default로 나타나는 메시지가 위 그림과 같이나타난다.




api spec에 따른 keyboard입력에 대한 json값이 실시간으로 적용되어 나타남을 볼 수 있다.



위 그림과 같이 python flask로 짠 echo 서버가 실시간으로 잘 작동함을 알 수 있다.


위 echo서버를 토대로 python FLASK 서버가  arduino or raspberryPI 하드웨어와 실시간 연동을 하면 사물인터넷 통신이 실시간으로 가능 할 것으로 보인다.