Jenkins + Slack 연동 - 3 (Slash commands/Ngrok/Python Flask)
저번에는 Incoming Webhooks 을 활용해서 Slack에 메시지 발송하는 작업을 해봤고
이번에는 Slack 에서 / 명령어 입력하는 앱으로 설정해보려고 한다.
1. Slack api > Slash Commands > Create New command
2. Command, Short Description, Usage Hint 임의 입력
Request URL은 내가 만든 서버를 입력해야 하는데...
3. (일단) ngrok 를 이용해서 로컬 서버를 외부와 통신이 가능하게 만들어보자
https://ngrok.com/ 회원 가입 후 > Setup & Installation
순서대로 명령어 입력 시, (저는 8000 포트로 실행)
위과 같이 ngrok 가 실행이 되고 Forwarding URL을 통해 외부에서도 접근이 가능해진다.
4. Python Flask로 간단히 서버를 만들고 잘 동작되는지 확인 해보자
# qa_test.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World?'
@app.route('/makeorder')
def make_order():
return 'make O_O rder bot'
if __name__ == '__main__':
app.run('0.0.0.0', port=8000, debug=True)
python3 qa_test.py 로 서버 실행
우선 로컬에서 정상 동작되는지 확인
- localhost:8000
- localhost:8000/makeorder
5. 3번에서 만든 ngrok 에서 할당받은 주소로 접근 시에도 서버 접근 잘되는지 확인
잘된다.
6. 2번에서 만든 slash command > Request URL 에 동일한 5번 URL 을 입력
7. Slack 에서 /makeorder_dev 를 호출
.. 하면 다음과 같이 에러가 발생되는데,
8. Python 코드에 POST를 붙여주고 다시 확인해보자.
# qa_test.py
from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['POST'])
def hello_world():
return 'Hello World?'
@app.route('/makeorder', methods=['POST'])
def make_order():
return 'make O_O rder bot'
if __name__ == '__main__':
app.run('0.0.0.0', port=8000, debug=True)
9. Slack 에서 /makeorder_dev 를 호출
정상 동작 확인