Spaces:
Running
Running
| summary: "Inbound channel location parsing (Telegram + WhatsApp) and context fields" | |
| read_when: | |
| - Adding or modifying channel location parsing | |
| - Using location context fields in agent prompts or tools | |
| title: "Channel Location Parsing" | |
| # Channel location parsing | |
| OpenClaw normalizes shared locations from chat channels into: | |
| - human-readable text appended to the inbound body, and | |
| - structured fields in the auto-reply context payload. | |
| Currently supported: | |
| - **Telegram** (location pins + venues + live locations) | |
| - **WhatsApp** (locationMessage + liveLocationMessage) | |
| - **Matrix** (`m.location` with `geo_uri`) | |
| ## Text formatting | |
| Locations are rendered as friendly lines without brackets: | |
| - Pin: | |
| - `π 48.858844, 2.294351 Β±12m` | |
| - Named place: | |
| - `π Eiffel Tower β Champ de Mars, Paris (48.858844, 2.294351 Β±12m)` | |
| - Live share: | |
| - `π° Live location: 48.858844, 2.294351 Β±12m` | |
| If the channel includes a caption/comment, it is appended on the next line: | |
| ``` | |
| π 48.858844, 2.294351 Β±12m | |
| Meet here | |
| ``` | |
| ## Context fields | |
| When a location is present, these fields are added to `ctx`: | |
| - `LocationLat` (number) | |
| - `LocationLon` (number) | |
| - `LocationAccuracy` (number, meters; optional) | |
| - `LocationName` (string; optional) | |
| - `LocationAddress` (string; optional) | |
| - `LocationSource` (`pin | place | live`) | |
| - `LocationIsLive` (boolean) | |
| ## Channel notes | |
| - **Telegram**: venues map to `LocationName/LocationAddress`; live locations use `live_period`. | |
| - **WhatsApp**: `locationMessage.comment` and `liveLocationMessage.caption` are appended as the caption line. | |
| - **Matrix**: `geo_uri` is parsed as a pin location; altitude is ignored and `LocationIsLive` is always false. | |