해외에서 발송된 택배의 배송 및 통관 상태를 조회하고 이를 텔레그램 채널로 알람을 보내주는 봇입니다.
택배 사의 서버에 직접 조회를 요청하며 결과를 파싱하여 알림을 보냅니다. 서드파티 서비스를 이용할 때 발생할 수 있는 개인정보의 유출을 방지할 수 있습니다. 한 번의 배송 조회로는 단편적인 정보만 얻을 수 있지만, 쿼리의 양이 많이 질수록 얻을 수 있는 정보는 많아집니다. 그리고 해외 상품의 경우 관세청의 통관서비스를 통해 상품명의 일부를 알아낼 수도 있습니다. 폐쇄적인 방식을 통해 이러한 위험을 사전에 차단합니다.
python3 -m pip install -r requirements.txt
cofing.tmpl.yaml 파일을 config.yaml로 복사한 뒤 각 항목을 채워줍니다. Telegram 봇의 발급 및 채널 생성 방식은 Telegram의 매뉴얼을 확인해 주세요. MongoDB를 사용할 경우 driver를 mongodb로 바꾸어 주세요.GG
database:
driver: file # support: file, mongodb
host: localhost
port: 27017
database: parcel-tracker
user: '' # '' mean no authentication required
pwd: ''
telegram:
token: Telegram에서 생성한 봇의 토큰을 넣어줍니다.
chat-id: 알람을 받을 채널 ID를 넣어줍니다.
err-chat-id: Python의 에러 메시지를 받는 경우 이 알람을 받을 채널 ID를 넣어줍니다.
봇은 데몬으로 동작하지 않으며 실행할 때에만 배송을 조회합니다. 주기적인 조회를 위해서는 스케줄러 또는 crontab 등에 추가합니다. 스케줄러에 등록할 때에는 -u 옵션을 주어야 합니다. 그리고 -e 옵션도 주는 것을 권장합니다.
현재 봇을 통해 항목을 추가하거나 수정하는 기능은 지원하지 않습니다. parcels.tmpl.yaml 파일을 parcels.yaml 파일로 복사한 뒤 수동으로 관리합니다.
- Name: 택배의 이름을 지정합니다.
LogiCodes: 택배 회사의 코드를 한개 또는 여러개 입력합니다. 코도는 쉼표(',')를 이용하여 구분합니다. 지원하는 코드는 -l 명령으로 확인할 수 있습니다.
TrackNo: 택배 추적번호입니다.
Year: 택배를 발송된 연도를 입력합니다. 통관 조회에 사용됩니다.
위에서 설명한 config.yaml, parcels.yaml을 작성한 뒤 track을 실행합니다. 기본적으로 stdout으로 결과가 출력되며 -u 옵션을 준 경우 텔레그램 채널에 업데이트 되고, -e 옵션을 준 경우 스크립트 내에서 오류가 발생했을 때 이 오류 또한 지정한 채널을 알람이 갑니다.
./track [-u] [-e]
현재 아래 두 곳의 조회만 지원하며 다른 택배사의 경우 추후 추가될 예정입니다.
- dhl: DHL (https://developer.dhl/ 등록 필요)
- unipass: 관세청 통관
- post-kr: 우체국
패키지 내에는 다양한 택배사가 등록되어 있으나 해당 조회는 2020년 이전에 작성된 것이라 현재는 동작하지 않습니다.
이 텔레그램 봇은 제가 직구하여 해외에서 받을 물건이 있을 때만 업데이트 됩니다.
- 봇 데몬으로 만들기
- 여러 택배사 및 항공 조회 추가하기
- 서드파티 조회 기능 추가하기 (다면 위에서 언급한 개인정보 문제는 감수하여야 함)