현재 카톡방에서 사용하는 모습
아직 예외처리를 하나도 못해서 버그가 많기때문에 코드는 나중에 다 고치고 공개하겠다..
언제가 될지는 모름
개발관련 지식이있다면 아래 내가 뻘짓했던 글만 보고 쉽게 구현할수있을것이다
먼저 서울데이터열린광장에서 서울시 지하철 실시간 도착정보의 API를 이용해야한다
이용하려면 API 키를 발급받아야되는데
일반 인증키로는 안되기때문에 삽질하지말고 실시간 지하철 인증키 신청하자..
근데 위치기반 서비스 사업 신고필증이나 이용신청서 작성이 필요하다 ..
키 신청할때 이렇게 신청서를 요구한다,, 그래서 일단 보류했다
하지만 이렇게 sample 키를 제공해준다 !
http://swopenapi.seoul.go.kr/api/subway/sample/xml/realtimeStationArrival/0/5/서울
난 이것을 이용해서 구현했다.. 반쪽짜리 구현인셈이다
URL에 접속하면..
이런식으로 xml이 출력된다
나는 json을 이용할것이기 때문에 url에서 xml 부분을 json으로 바꿨다
요청인자들은 데이터광장 페이지에 이렇게 설명을 잘해놨으니 참고하면된다
지하철역명은 만약 이수역일경우
http://swopenapi.seoul.go.kr/api/subway/sample/xml/realtimeStationArrival/0/5/이수
이렇게 입력하면안되고
http://swopenapi.seoul.go.kr/api/subway/sample/xml/realtimeStationArrival/0/5/총신대입구(이수)
이렇게 정확한 이름을 입력해줘야한다
그 정확한 이름은 데이터광장에서 아래 File 탭을 가면 엑셀을 다운받을수있다
파일을 열어보면
이런식으로 정확한 역이름을 볼수있다
그래서 결국 카카오톡봇에서는 어떻게 구현했나,..
/지하철 총신대입구(이수)
이런식으로 메시지가 오면
http://swopenapi.seoul.go.kr/api/subway/sample/json/realtimeStationArrival/0/5/총신대입구(이수)
이 API주소로 데이터 요청하고, 반환된 데이터에서 필요한 부분만 뽑아서 메시지를 출력하면된다
현재 문제가 좀 많은데, 일단 샘플API키로 하기때문에 데이터를 5개까지만 뽑아올수있다
그이상을 요청하게될경우
{"status":500,"code":"ERROR-335","message":"샘플데이터(샘플키:sample) 는 한번에 최대 5건을 넘을 수 없습니다. 요청시작위치와 요청종료위치 값은 1 ~ 5 사이만 가능합니다.","link":"","developerMessage":"","total":0}
이런 에러 메시지를 볼수있을것이다
사당역이나 신도림역같은 환승역의 경우 실시간 도착정보가 8개이상이 되기도하는데,
샘플키로는 그중 5개만 받아올수있어서 제대로된 구현에 한계가있으므로 다 받고싶으면 api키를 신청해야한다
위에도 말했듯이 귀찮아서 일단 보류상태
또다른 문제는 json으로 데이터뽑아오는게 하드코딩된 상태라서
해당역의 지하철 도착정보가 5개이하일경우 에러가 뜨는것 , 이건 하드코딩으로 대충만들어서 나오는 에러라서 금방고칠수있다
그리고 api 자체가 답을 안줄경우이다
이런식으로 에러가 뜬다 , 가끔씩 나오는데 왜그러는지 정확히 파악은 못했다
이또한 샘플키라서 그런것일수도..
여러모로 제대로 굴리려면 예외처리가 필요한상태이다
끝
'개발 > 카카오톡 봇' 카테고리의 다른 글
카카오톡 공식봇(?) 팬다 jr 등장 (13) | 2020.07.22 |
---|---|
카카오톡 봇 만들기 - 9 - 숫자 야구게임 (17) | 2020.04.21 |
카카오톡 봇 만들기 - 7 - 네이버 실검 가져오기 (8) | 2019.10.28 |
지하철 실시간 도착 정보 받아오기 하는중 (0) | 2019.10.20 |
카카오톡 봇 만들기 - 6 - 봇 기능 만들기 2 (0) | 2019.10.09 |