채널 위치 파싱

OpenClaw는 채팅 채널에서 공유된 위치를 다음과 같이 정규화합니다:

  • 인바운드 본문에 추가되는 사람이 읽을 수 있는 텍스트
  • 자동 응답 컨텍스트 페이로드의 구조화된 필드

현재 지원되는 채널:

  • Telegram (위치 핀 + 장소 + 실시간 위치)
  • WhatsApp (locationMessage + liveLocationMessage)
  • Matrix (geo_uri가 포함된 m.location)

텍스트 형식

위치는 괄호 없이 읽기 쉬운 형태로 렌더링됩니다:

  • 핀:
    • 📍 48.858844, 2.294351 ±12m
  • 이름이 있는 장소:
    • 📍 Eiffel Tower — Champ de Mars, Paris (48.858844, 2.294351 ±12m)
  • 실시간 공유:
    • 🛰 Live location: 48.858844, 2.294351 ±12m

채널에 캡션/댓글이 포함된 경우 다음 줄에 추가됩니다:

📍 48.858844, 2.294351 ±12m
Meet here

컨텍스트 필드

위치가 존재하면 ctx에 다음 필드가 추가됩니다:

  • LocationLat (number)
  • LocationLon (number)
  • LocationAccuracy (number, 미터; 선택 사항)
  • LocationName (string; 선택 사항)
  • LocationAddress (string; 선택 사항)
  • LocationSource (pin | place | live)
  • LocationIsLive (boolean)

채널별 참고 사항

  • Telegram: 장소는 LocationName/LocationAddress로 매핑됩니다. 실시간 위치는 live_period를 사용합니다.
  • WhatsApp: locationMessage.commentliveLocationMessage.caption은 캡션 줄로 추가됩니다.
  • Matrix: geo_uri는 핀 위치로 파싱됩니다. 고도는 무시되며 LocationIsLive는 항상 false입니다.