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)) |
위 코드의 내용은 아래와 같다.
* 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 하드웨어와 실시간 연동을 하면 사물인터넷 통신이 실시간으로 가능 할 것으로 보인다.
'프로그래밍 > 아두이노+카카오톡' 카테고리의 다른 글
아두이노와 카카오톡(옐로우아이디) 연동 마무리 (0) | 2016.10.29 |
---|---|
Yellow id 연동을 위한 IBM bluemix기반 Python Flask생성하기 (0) | 2016.10.28 |
아두이노 와이파이 쉴드 서버와 옐로우 아이디 연동의 문제점 (0) | 2016.10.12 |
옐로우 아이디 + 사물인터넷 = ? (1) | 2016.10.12 |