[파이썬] Instagram Graph API로 DM 자동응답 시스템 만들기

 

Instagram Graph API로 DM 자동응답 시스템 만들기: 개인 PC 환경에서 구현하는 방법

안녕하세요! 오늘은 Instagram Graph API를 활용하여 DM 자동응답 시스템을 개인 PC 환경에서 구현하는 방법을 쉽게 풀어 소개합니다.
인스타그램에서 릴스나 게시물 홍보 시, 사용자가 DM으로 특정 키워드를 보내면 자동으로 지정된 링크나 메시지를 답장하는 기능을 생각해보신 적 있으시죠?

이 글에서는 그런 기능을 개인 PC 환경에서도 손쉽게 구현할 수 있는 기본 개념과 방법을 소개합니다.


1. Instagram DM 자동응답, 왜 필요한가?

  • 인스타그램 릴스에 “구입 원하시면 DM으로 ‘코드A’ 보내주세요” 라고 안내

  • 사용자가 DM으로 ‘코드A’를 보내면, 자동으로 구입 링크를 응답

  • 수동 대응의 번거로움 해소 및 신속한 고객 대응 가능


2. 준비 조건

  • Instagram 비즈니스 계정 또는 크리에이터 계정 필요

  • 해당 계정은 반드시 Facebook 페이지와 연결되어 있어야 함

  • Meta 개발자 계정 및 앱 생성

  • Instagram Graph API 권한 획득 및 Page Access Token 확보


3. 구현 개요

자동응답 시스템의 핵심 흐름은 아래 두 가지 방식 중 하나로 새 DM을 감지하고, 대응하는 것입니다.

방식설명장점단점
Webhook(푸시 알림)인스타그램 서버가 메시지 도착 시 내 서버로 알림 전송실시간, 효율적외부 공개 서버 필요, 개인 PC에선 환경 구축 어려움
주기적 폴링(Polling)내 서버가 일정 간격으로 Instagram API를 호출해 새 메시지 조회개인 PC 환경에 적합, 서버 외부 공개 불필요실시간성 떨어짐, API 호출 제한 있음

4. Instagram Graph API 주요 엔드포인트

  • GET /{ig-user-id}/conversations
    → 내 인스타그램 계정의 DM 대화 목록 조회

  • GET /{conversation-id}/messages
    → 특정 대화 내 메시지 리스트 조회

  • POST /me/messages
    → 자동 응답 메시지 전송


5. 개인 PC에서 구현하는 방법: Polling 방식 예시

개인 PC에서 인터넷에 공개된 서버가 아니더라도, 주기적으로 API를 호출해 새 DM 메시지를 확인하고 답장을 보내는 방식을 추천합니다.

기본 동작 흐름

  1. Instagram Graph API로 DM 대화 목록 조회

  2. 대화별로 최신 메시지 확인

  3. 메시지 텍스트에서 ‘코드A’ 같은 키워드 검사

  4. 조건에 맞으면 자동으로 지정 링크나 메시지 전송


6. Python으로 간단한 Polling 구현 예제

import time import requests ACCESS_TOKEN = "YOUR_PAGE_ACCESS_TOKEN" IG_USER_ID = "YOUR_IG_BUSINESS_ACCOUNT_ID" LAST_PROCESSED_MESSAGE_ID = None def get_conversations(): url = f"https://graph.facebook.com/v18.0/{IG_USER_ID}/conversations?access_token={ACCESS_TOKEN}" res = requests.get(url).json() return res.get('data', []) def get_messages(conversation_id): url = f"https://graph.facebook.com/v18.0/{conversation_id}/messages?access_token={ACCESS_TOKEN}" res = requests.get(url).json() return res.get('data', []) def send_message(user_id, text): url = f"https://graph.facebook.com/v18.0/me/messages?access_token={ACCESS_TOKEN}" payload = { "recipient": {"id": user_id}, "message": {"text": text}, "messaging_type": "RESPONSE" } requests.post(url, json=payload) def main(): global LAST_PROCESSED_MESSAGE_ID while True: conversations = get_conversations() for conv in conversations: conv_id = conv['id'] messages = get_messages(conv_id) for msg in messages: msg_id = msg['id'] if LAST_PROCESSED_MESSAGE_ID == msg_id: break sender_id = msg['from']['id'] text = msg.get('text', '').strip() if text == "코드A": send_message(sender_id, "https://yourstore.com/productA") LAST_PROCESSED_MESSAGE_ID = msg_id time.sleep(30) if __name__ == "__main__": main()

7. 주요 주의사항

  • API 호출 횟수 제한(rate limit)이 있으니 너무 자주 호출하지 않도록 주의

  • ACCESS_TOKEN은 장기 토큰 권장, 만료되면 갱신 필요

  • 사용자가 먼저 DM을 보내야 자동응답 가능 (정책상 인스타에서 먼저 DM 보내는 건 제한)

  • 개인정보 관리에 신경 써야 함


8. 마치며

Instagram Graph API를 활용하면, 개인 PC에서도 충분히 DM 자동응답 시스템을 만들 수 있습니다.
처음에는 Polling 방식으로 시작해 보시고, 이후 외부 서버 환경이 마련되면 Webhook 기반 실시간 알림으로 확장하는 것도 좋은 방법입니다.

댓글

이 블로그의 인기 게시물

공압 속도 제어: 미터인 vs 미터아웃

[주식] 한국거래소(KRX) 데이터 API 입문 가이드

[PLC] PLC 아날로그 입출력 기본

[PLC] 절연 변압기 (Isolation Transformer)

제너 다이오드에 저항을 연결하는 이유

[수학] 정규 분포란? 왜 종 모양을 띠고 있을까?

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

[자동화] 안쓰는 안드로이드폰을 활용한 식물 성장 타임랩스 촬영

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

[스마트팜] EC/pH 미터 만들기: 아두이노로 전기 전도도 및 pH 측정