반응형
고객 문의 기능은 기업과 고객 간의 소통 창구를 제공하는 핵심 요소입니다. 고객이 질문, 요청, 또는 불만 사항을 등록할 수 있는 시스템은 고객 만족도를 높이는 데 필수적입니다. 아래는 Python Flask를 사용해 기본적인 고객 문의 기능을 구현하는 API 예제입니다.
주요 기능
- 문의 생성
고객이 이름, 이메일, 문의 내용을 제출. - 문의 조회
관리자나 고객이 특정 문의 내용을 확인. - 문의 목록 조회
모든 문의 내역을 관리자가 확인. - 문의 상태 업데이트
문의에 대한 상태(예: 처리 중, 완료)를 변경.
API 설계
데이터베이스 구조
- 문의 테이블:
컬럼타입설명
id | Integer (PK) | 문의 ID |
name | String | 고객 이름 |
String | 고객 이메일 | |
message | Text | 문의 내용 |
status | String | 상태 (등록, 처리 중, 완료) |
created_at | DateTime | 문의 등록일 |
코드 작성
Flask API 구현
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
# Flask 앱 생성
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///inquiries.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 데이터베이스 초기화
db = SQLAlchemy(app)
# 문의 데이터베이스 모델
class Inquiry(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
email = db.Column(db.String(100), nullable=False)
message = db.Column(db.Text, nullable=False)
status = db.Column(db.String(20), default="등록", nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
# 데이터베이스 생성
with app.app_context():
db.create_all()
# 1. 문의 생성 API
@app.route('/inquiries', methods=['POST'])
def create_inquiry():
data = request.json
try:
new_inquiry = Inquiry(
name=data['name'],
email=data['email'],
message=data['message']
)
db.session.add(new_inquiry)
db.session.commit()
return jsonify({"message": "문의가 성공적으로 등록되었습니다.", "inquiry_id": new_inquiry.id}), 201
except KeyError as e:
return jsonify({"error": f"필수 입력값이 누락되었습니다: {str(e)}"}), 400
# 2. 특정 문의 조회 API
@app.route('/inquiries/<int:inquiry_id>', methods=['GET'])
def get_inquiry(inquiry_id):
inquiry = Inquiry.query.get(inquiry_id)
if inquiry:
return jsonify({
"id": inquiry.id,
"name": inquiry.name,
"email": inquiry.email,
"message": inquiry.message,
"status": inquiry.status,
"created_at": inquiry.created_at.strftime("%Y-%m-%d %H:%M:%S")
}), 200
else:
return jsonify({"error": "문의 내역을 찾을 수 없습니다."}), 404
# 3. 모든 문의 목록 조회 API
@app.route('/inquiries', methods=['GET'])
def get_all_inquiries():
inquiries = Inquiry.query.all()
result = []
for inquiry in inquiries:
result.append({
"id": inquiry.id,
"name": inquiry.name,
"email": inquiry.email,
"message": inquiry.message,
"status": inquiry.status,
"created_at": inquiry.created_at.strftime("%Y-%m-%d %H:%M:%S")
})
return jsonify(result), 200
# 4. 문의 상태 업데이트 API
@app.route('/inquiries/<int:inquiry_id>', methods=['PUT'])
def update_inquiry_status(inquiry_id):
data = request.json
inquiry = Inquiry.query.get(inquiry_id)
if inquiry:
inquiry.status = data.get('status', inquiry.status)
db.session.commit()
return jsonify({"message": "문의 상태가 성공적으로 업데이트되었습니다."}), 200
else:
return jsonify({"error": "문의 내역을 찾을 수 없습니다."}), 404
if __name__ == '__main__':
app.run(debug=True)
API 사용 방법
1. 문의 생성
POST /inquiries
요청 본문:
{
"name": "홍길동",
"email": "hong@example.com",
"message": "호텔 객실 예약 관련 문의입니다."
}
응답:
{
"message": "문의가 성공적으로 등록되었습니다.",
"inquiry_id": 1
}
2. 특정 문의 조회
GET /inquiries/<inquiry_id>
응답:
{
"id": 1,
"name": "홍길동",
"email": "hong@example.com",
"message": "호텔 객실 예약 관련 문의입니다.",
"status": "등록",
"created_at": "2024-01-01 10:00:00"
}
3. 모든 문의 목록 조회
GET /inquiries
응답:
[
{
"id": 1,
"name": "홍길동",
"email": "hong@example.com",
"message": "호텔 객실 예약 관련 문의입니다.",
"status": "등록",
"created_at": "2024-01-01 10:00:00"
}
]
4. 문의 상태 업데이트
PUT /inquiries/<inquiry_id>
요청 본문:
{
"status": "처리 중"
}
응답:
{
"message": "문의 상태가 성공적으로 업데이트되었습니다."
}
확장 가능성
- 인증 시스템 추가:
- 고객과 관리자 계정을 분리하여 각자의 역할에 맞는 권한 부여.
- 첨부 파일 지원:
- 문의와 함께 이미지, 문서 등의 첨부 파일을 업로드하는 기능 추가.
- 자동화 이메일 알림:
- 문의 등록 시 고객과 관리자에게 알림 이메일 발송.
- 고객 포털:
- 고객이 자신의 문의 내역을 확인하고 상태를 추적할 수 있는 웹 인터페이스 구축.
결론
위 코드는 Flask와 SQLite를 사용한 간단한 고객 문의 기능입니다. 이 API를 활용하면 고객 문의 접수를 효율적으로 관리할 수 있으며, 이를 기반으로 다양한 기능을 추가해 나갈 수 있습니다. 지금 바로 구현해 보고, 고객과의 소통을 한 단계 업그레이드해 보세요! 🚀
반응형