웹 서비스 WhatsApp Cloud API 및 Flask 구축: 템플릿 메시지 보내기 - 1부
이 기사 시리즈에서는 Flask 및 Cloud API를 사용하여 간단한 웹 서비스를 구축합니다. 시리즈가 끝나면 전화번호로 메시지를 보내고 웹후크를 통해 알림을 받는 데 사용할 수 있는 Flask 서버를 배포할 것입니다.
좋아, 그렇지? 프로젝트를 구성하고 템플릿 메시지를 보내는 것부터 시작하겠습니다.
요구 사항
메타 개발자와 비즈니스 계정을 구성해야 합니다. 여기에 몇 가지documentation가 있지만 아래 단계를 설명하겠습니다.
프로젝트 구성
플라스크 프로젝트를 포함할 디렉터리를 만듭니다.
mkdir flask-whatsapp-api
cd flask-whatsapp-api
그런 다음 가상 환경을 만듭니다.
python3.10 -m venv venv
그리고 환경을 활성화하십시오.
source venv/bin/activate
다음으로 종속성을 설치합니다.
pip install Flask requests python-dotenv gunicorn
Flask 앱 만들기
프로젝트의 루트에서 config.py 파일을 만듭니다. 이 파일은 env 변수를 로드하는 데 도움이 됩니다.
from dotenv import load_dotenv
load_dotenv()
Whatsapp 클라이언트 추가
다음으로 내부에
app
파일이 있는 __init__.py
라는 새 디렉토리를 만듭니다. 이것은 파이썬에게 이것이 패키지임을 알리고 가져오기에 도움이 될 것입니다.app
디렉토리 내에서 whatsapp_client.py
라는 파일을 만듭니다. 이 파일에는 Whatsapp Cloud API와 상호 작용하는 래퍼가 포함됩니다.외부 서비스와 상호 작용할 때 래퍼(클래스 또는 함수)를 작성하는 것은 항상 흥미로운 습관입니다.
이 경우
WhatsAppWrapper
라는 클래스를 작성합니다. 기본 초기화부터 시작하겠습니다.# app/whatsapp_client.py
import os
import requests
import json
class WhatsAppWrapper:
API_URL = "https://graph.facebook.com/v13.0/"
API_TOKEN = os.environ.get("WHATSAPP_API_TOKEN")
NUMBER_ID = os.environ.get("WHATSAPP_NUMBER_ID")
def __init__(self):
self.headers = {
"Authorization": f"Bearer {self.API_TOKEN}",
"Content-Type": "application/json",
}
self.API_URL = self.API_URL + self.NUMBER_ID
def send_template_message(self, template_name, language_code, phone_number):
pass
send_template_message
메서드를 작성해 봅시다. requests
패키지를 사용하여 Cloud API에 요청하고 가능한 경우 응답을 반환합니다....
def send_template_message(self, template_name, language_code, phone_number):
payload = json.dumps({
"messaging_product": "whatsapp",
"to": phone_number,
"type": "template",
"template": {
"name": template_name,
"language": {
"code": language_code
}
}
})
response = requests.request("POST", f"{self.API_URL}/messages", headers=self.headers, data=payload)
assert response.status_code == 200, "Error sending message"
return response.status_code
좋습니다. 래퍼가 준비되었으므로 이제 Flask 웹 애플리케이션을 작성하고
POST
엔드포인트를 추가합니다.Flask 웹 앱 추가
app
디렉토리 내에서 main.py
라는 새 파일을 만듭니다. 여기에는 API 경로가 포함됩니다.import os
from flask import Flask, jsonify, request
from app.whatsapp_client import WhatsAppWrapper
app = Flask(__name__)
VERIFY_TOKEN = os.environ.get('WHATSAPP_HOOK_TOKEN')
@app.route("/")
def hello_world():
return "Hello World!"
@app.route("/send_template_message/", methods=["POST"])
def send_template_message():
pass
send_template_message
컨트롤러를 작성해 봅시다. 기본적으로 필드를 확인하고 WhatsApp 클라이언트를 초기화한 다음 메시지를 보내야 합니다.@app.route("/send_template_message/", methods=["POST"])
def send_template_message():
"""_summary_: Send a message with a template to a phone number"""
if "language_code" not in request.json:
return jsonify({"error": "Missing language_code"}), 400
if "phone_number" not in request.json:
return jsonify({"error": "Missing phone_number"}), 400
if "template_name" not in request.json:
return jsonify({"error": "Missing template_name"}), 400
client = WhatsAppWrapper()
response = client.send_template_message(
template_name=request.json["template_name"],
language_code=request.json["language_code"],
phone_number=request.json["phone_number"],
)
return jsonify(
{
"data": response,
"status": "success",
},
), 200
이 기사의 경로가 준비되었습니다.
gunicorn
로 서버를 생성 및 실행하고 env 변수를 구성해 보겠습니다.프로젝트 실행
WhatsApp API에서 제공하는 토큰과 ID를 사용하므로 환경 변수로 사용하는 것이 중요합니다.
프로젝트의 루트에
.env
파일을 생성하고 다음 값을 증명했습니다.WHATSAPP_API_TOKEN=
WHATSAPP_NUMBER_ID=
대시보드에 제공된 값을 추가합니다.
프로젝트의 루트에
wsgi.py
라는 새 파일을 추가합니다. 이것은 gunicorn
에서 Flask 응용 프로그램을 실행하는 데 사용됩니다.from app.main import app
if __name__ == "__main__":
app.run()
그런 다음 다음 명령으로 프로젝트를 시작합니다.
gunicorn -w 4 wsgi:app
귀하의 응용 프로그램은 http://127.0.0.1:8000에서 실행됩니다.
다음 페이로드를 사용하여
POST
에 http://127.0.0.1:8000/send_message
요청을 수행합니다.{
"template_name": "hello_world",
"language_code": "en_US",
"phone_number": "RECIPIENT_PHONE_NUMBER"
}
그리고 해당 번호로 WhatsApp 메시지를 받게 됩니다.
그리고 우리는 WhatsApp Cloud API와 Flask를 사용하는 웹 서비스의 첫 번째 버전을 가지고 있습니다. 다음 부분에서는 Heroku에 Flask 애플리케이션을 배포하고 웹후크를 구성합니다. 계속 지켜봐주세요.🤟
무언가를 추가하고 싶거나 의견이 있으십니까? 댓글 섹션에서 이에 대해 논의해 보겠습니다.
bloggu.io을(를) 사용하여 게시된 기사. 무료로 사용해 보세요.
Reference
이 문제에 관하여(웹 서비스 WhatsApp Cloud API 및 Flask 구축: 템플릿 메시지 보내기 - 1부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/koladev/building-a-web-service-whatsapp-cloud-api-flask-sending-template-messages-part-1-249g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)