지난 포스트에서 python flask 앱을 Azure에 올리는 것까지 해봤다.
https://uaremine.tistory.com/70
이번에는 생성한 텔레그램 봇에 Flask 앱을 연결해서 응답을 주도록 해보자.
꼭 flask를 사용할 필요는 없지만, azure function 이나 telegram bot API 와 연동하기 더 편하니까...
> pip install 'flask[async]'
flask 앱을 azure function 에 올리기 위해 코드를 조금 수정해준다.
<__init__.py>
import logging
import azure.functions as func
from .wsgi import app
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
def main(req: func.HttpRequest, context: func.Context) -> func.HttpResponse:
return func.WsgiMiddleware(app).handle(req, context)
from . import bot
<wsgi.py>
from flask import Flask
app = Flask(__name__)
<bot.py>
from . import app, logging
from flask import Flask, request, jsonify
@app.route('/')
def home():
return 'Hello, World!'
<requirements.txt>
# DO NOT include azure-functions-worker in this file
# The Python Worker is managed by Azure Functions platform
# Manually managing azure-functions-worker may cause unexpected issues
azure-functions
Flask[async]
이렇게 하고 deploy 해주면 output window에 나오는 URL로 브라우저를 열었을 때 'Hello, World!' 메시지를 볼 수 있어야 한다.
브라우저로 Hello World! 메시지를 보는데 문제가 있다면, 코드에 문제가 없는지 로그를 살펴보고, 혹시 404 not found 가 나온다면, host.json과 function.json 파일을 확인한다.
<host.json>
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"extensions": {
"http": {
"routePrefix": ""
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
}
}
<function.json>
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
],
"route": "{*:alpha}"
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
성공적으로 deploy 된 경우 output window 를 보면 마지막에
오후 2:16:52 agent46: HTTP Trigger Urls:
sampleapp_localfunc: https://sampleapp.azurewebsites.net/%7B*:alpha%7D
이런 메시지가 나타날 것이다.
https://sampleapp.azurewebsites.net
를 열어보면 Hello, World! 메시지가 보인다.
다음에는 마지막으로 python-telegram-bot 패키지를 이용해서 텔레그램 bot 에 연결하는 작업을 해본다.