TrailBot: 681-540-1024
Ever been traveling somewhere and wanted to look up...something...on your phone, but didn't have a good enough signal?
Text (SMS) messages get through when data or voice can't.
Ever thought about going back to a flip phone, but how would you get along without...that one thing?
TrailBot gives you access to the internet you use every day, through SMS:
- Fetch a weather report for anywhere in the US;
- Find GPS coordinates for locations around the world.
- Get turn-by-turn directions and distance between locations, globally;
- Search Wikipedia;
- Look up words in Merriam-Webster's Collegiate Dictionary or the Tournament Word List;
- Follow other TrailBot user's status updates.
- Follow your favorite blogs and news sites
- Get help using TrailBot.
- Play 5word
- Post status updates to your followers;
- Save locations in your address book;
- Direct message other TrailBot @users;
- Join the #TrailBot users chat group, the Tournament Word of the Day announcement group, or others;
- Create your own chat or announcement groups.
New features added regularly, ask if there's something you'd like to see.
TrailBot is currently 100% free to use, and will remain so as long as I can afford my SMS bill. The source code for TrailBot is available for download through GitHub.
Please play nicely.
First Things First
Text TrailBot at: 681-540-1024 The first word of your message is the <command>.You can text:
help <command>
And TrailBot will send back detailed help for <command>.
And you can say:
help all
or
help me
for a list of every <command> TrailBot knows.
If you just say help, you'll get a link to this page and instructions about using 'help me'. This is required by TrailBot's SMS service provider.
Weather Reports
<command>: 'wx' or 'weather'
source: National Weather Service(NWS) 7 day weather forecast.
Not long after I started the AT, I was tired of having to find other hikers to ask for the weather forecast. Spending a few days off-trail to visit my brother, I hooked together the list of AT shelter locations with the NWS website. This is the first thing TrailBot learned how to do.
Say 'wx location' like this:
wx Silver City, NM
TrailBot will look up that location, request a report
from the National Weather Service, and send you a condensed 3 day forecast:
Silver City, NM
And so on for two more days.
30 May 19:15 pm MDT
Tonight: partly cloudy, with a low ~55. SW wend 7-17 mph becoming
NW after midnight. Winds could cust as hight as 23 mph.
Wed: Sunny, with a hight near 78. N NWt wind 6-11 mph
SW 16-21 mph in the morning. Winds could gust as high as 26
mph.
Locations
<commands>: 'where', 'here', 'there', 'addr'
TrailBot knows how to take descriptions of places on Earth (sorry @MajorTom) and figure out their exact coordinates.
Use the <command>: 'where' to find a location,
like this:
where empire state building
And TrailBot will respond:
Location Empire State Building
(full name: Empire State Building, 350, 5th Avenue, Manhattan
Community Board 5, Manhattan, New York County, City of New York, New
York, 10018, United States)
has coordinates 40.74844205 -73.98565890160751
TrailBot (mostly) uses Nominatim, a
free geolocation service covering the entire world. Nominatim works best
when you describe your location from smallest to biggest, separated by
commas:
where rei, tucson, arizona
or:
where county road 541, huerfano county, colorado
TrailBot can also look up these location formats on its own:
City, ST (don't forget the comma!):
where Washington, DC,
latitude/longitude pairs (no comma!):
where 38.9413 -78.1911
ZIP codes:
where 83843
and, back to it's roots, AT shelternames (with the trail:at hint):
where trail:at Low Gap
here and there
If you're using TrailBot, it's likely that you're somewhere on the surface of Earth, and a good chance that you're going somewhere else.
If you've registered an @handle with TrailBot, the <command>s 'here' and 'there' can keep track of those places
'here' tells TrailBot where you are, like this:
here Leadville, CO
'there' tells TrailBot where you're going:
there Jackson, WY
whereupon TrailBot will respond to the first request like this:
Success. 'here' is set to: leadville (full name: Leadville, Lake
County, Colorado, 80461, United States) coordinates: 39.2508229 -106.2925238 To forget 'here', say 'forget here'
And similarly to the second request. Now you can use 'here' and 'there'
as locations. So:
where here
will tell you that you're in Leadville.
Even better,weather reports and driving directions will use 'here'
and 'there' as you'd expect, so
wx
returns the weather for Leadville,
wx there
gives you the forecast in Jackson, and
drive
tells you how to get from here to there.
'here' and 'there' are shortcuts for 'addr here' and 'addr there', and otherwise work just like any other saved address in your...
Address Book
TrailBot can keep track of more than just here and there.
The <command> 'addr' can give a name to any location
Say 'addr name location', like this:
addr vacation fisherman's wharf, san francisco
And TrailBot will reply:
Success. 'vacation' is set to:
fisherman's wharf, san francisco
(full name: Fisherman's Wharf of San Francisco, Taylor Street,
Port of San Francisco, San Francisco, CAL Fire Northern Region,
California, 94133, United States)
coordinates: 37.808332 -122.415715
To forget 'vacation', just 'forget vacation'
After that, you can use the word 'vacation' anywhere that TrailBot
expects a location. Like this:
wx vacation
And TrailBot will tell you:
2 Miles N San Francisco CA
4 Jun 22:06 pm PDT
Tonight: Mostly cloudy, with a low ~54. SW wind ~17 mph, with
gusts as high as 22 mph.
Mon: Partly sunny, with a high near 59. Breezy, with a SW wind
17-26 mph, with gusts as high as 32 mph.
[...]
Shared Locations
The <command>s 'share' and 'unshare' let you control who else
can see locations in your address book. Locations are private unless
you explicitly share them, like this:
share vacation with @GroundControl
and TrailBot says:
Success. Shared vacation with @GroundControl
@GroundControl can now ask:
where @MajorTom.vacation
and get back:
Fisherman's Wharf, San Francisco (full name:
Fisherman's Wharf of San
Francisco, Taylor Street, Port of San Francisco, San Francisco, CAL
Fire Northern Region, California, 94133, United States) coordinates: 37.808332 -122.415715
You can share a location with as many users as you want, or you can
share a location with everyone, like this:
share vacation
To stop sharing, tell TrailBot:
unshare vacation
to stop sharing with everyone.
Secret Menu: sharing 'here'
If @MajorTom tells TrailBot:
share here
anyone can ask:
where @MajorTom
and TrailBot will tell them:
Cape Canaveral (full name: Cape Canaveral, Brevard County, Florida,
United States) coordinates: 28.45077 -80.52662
Driving Directions
<command>: 'drive'
source: The Open Source Routing Machine (OSRM)
TrailBot uses OSRM to give turn-by-turn directions for any two locations it knows about.
Say 'drive from location to location', like this:
drive from Tulsa, OK to Denver, CO
TrailBot will think for a moment, and respond:
Turn directions courtesy OSRM
from Tulsa, OK
to Denver, CO
693 miles: 11hr, 53min
via I 70, US 40, I 70
Start on South Boulder Avenue for 123 yards
Turn left on West 1st Street for 560 yards
[... and so on ...]
Reach Destination
Distance
<command>: 'dist' or 'distance'
Uses ORSM just like driving directions, but
only returns the distance and driving time between the locations:
distance ludlow, vt to rutland,vt
Which will get you back:
Distance courtesy OSRM from ludlow,vt to rutland,vt 24
miles: 0hr, 39min
Notes: you can put the 'from' and 'to' clauses in either order, and if you have 'here' or 'there' set, TrailBot will use them as the default values for 'from' and 'to'.
Wikipedia
<command>: 'wiki' or 'wikipedia'
source: Wikipedia
You can ask TrailBot for any article Wikipedia has:
wiki ben franklin
and TrailBot will send you the summary::
From Wikipedia: Benjamin Franklin (January 17, 1706 [O.S.
January 6, 1705] – April 17, 1790) was an American polymath, a leading writer, scientist, inventor, statesman, diplomat, printer, publisher, and political philosopher. Among the most influential intellectuals of his time, Franklin was one of the Founding Fathers of the United States; a drafter and signer of the Declaration of Independence; and the first postmaster general.
[and so on ...]
If your requests matches more than one article, you'll get
a list of possible matching articles. So saying:
wiki potato famine
returns:
Wikipedia says: "potato famine" may refer to:
European Potato Famine
Ireland's Great Famine
Highland Potato Famine
try again with one of those options
Note: this command will frequently return 1500 characters (10 segments) of text back to you.
Merriam-Webster's Collegiate Dictionary®*
<command>: 'word'source: dictionaryapi.com
Just say:
word jaguar
and get a short definition back:
From Merriam-Webster's Collegiate Dictionary: jag*uar: a
large cat (Panthera onca) chiefly of Central and South America that is larger and stockier than the leopard and is brownish yellow or buff with black spots
* The Merriam-Webster brand guidelines require that I use the full name
of the product, and display this logo:
The Tournament Word List
<command>: 'twl'source: TWL06
I've been playing a lot of Scrabble with @lil, and we needed a reliable resource for determining the validity of words. Most recent versions of the "official" list are restricted to NASPA members, but I found this version of the 2006 list.
Asking:
twl ew
will return the verdict:
NO. 'ew' is not a valid word
(Scrabble Geeks will note that 'ew' IS valid in the latest list)
(Computer Geeks: TWL06 < 512K)
Word of the Day
<command>: 'twotd'Or more correctly, the Tournament Word of the Day, is a way to improve
your/my Scrabble vocabulary. You can say:
twotd
to receive a random, valid, 2-5 letter word from the
Tournament Word List, along with a
definition if available,
like:
Tournament Word of the Day for Friday, 26 April
KLOOF
From Merriam-Webster's Collegiate Dictionary: kloof: a deep glen : ravine
The word changes every day at midnight UTC.
Note: Users who register an @handle can also join the #twotd group to have the Word of the Day delivered to their phone every morning.
Subscribing to Updates
<commands>: 'sub' or 'subscribe', 'unsub' or 'unsubscribe'
You can receive other users' status updates
if you know their @handle. Saying:
subscribe @MajorTom
will get you updates from our fictional pilot. TrailBot will confirm:
Success: subscribed to @MajorTom. Unsubscribe at any time by sending
'unsub @MajorTom'
Now whenever MajorTom posts an update, you'll get a
message like this:
@MajorTom: I'm stepping through the door
And like TrailBot says, you can stop receiving updates at any time:
unsub @MajorTom
TrailBot will say:
Success: unsubscribed from @MajorTom
You can also just get someone's status without subscribing:
status @MajorTom
and get back something like:
@MajorTom: I'm floating in the most peculiar way
Note: every month that you've received at least one status update, you'll get a reminder text from TrailBot listing your subscriptions and instructions for unsubscribing.
Reading News and Blogs
<command>: 'news'
Many websites that publish regular updates also make their articles available as RSS feeds, . This includes most blogs and webcomics, and many news sites.
Trailbot can give you headlines and articles from sites that have
an RSS feed:
news nytimes.com
From nytimes.com
Putin and Kim Jong-un Sign Pact in North Korea: Wed, 19 Jun 2024 12:13:04 +0000
What Weapons Is North Korea Accused of Supplying to Russia?: Tue, 18 Jun 2024 11:16:04 +0000
Netanyahu Lashes Out at U.S., and the Stock Market’s New King: Wed, 19 Jun 2024 10:06:41 +0000
Here Is Why Many Fear More Bloodshed in Darfur: Wed, 19 Jun 2024 13:38:07 +0000
Willie Mays, Baseball’s Electrifying Player of Power and Grace, Is Dead at 93: Wed, 19 Jun 2024 05:39:25 +0000
Registering an @handle
<commands>: 'reg' or 'register', 'unreg' or 'unregister', 'whoami'
A TrailBot @handle is a short, unique name that gets attached to any messages you send, just like on your favorite social media platform. Each @handle can belong to only one phone number, and each phone number can have only one @handle.
Your @handle identifies you in status updates, direct messages, and chat group messages. The list of phone numbers subscribed to your updates and your saved locations are also connected with your @handle.
So pick your @handle, and say something like:
register @MajorTom
TrailBot will say:
Success: @MajorTom registered
TrailBot @handles are limited to 16 characters, letters and numbers
only . TrailBot will use whatever Capitalization you register with, but
differently capitalized versions of your handle still belong to you. If
someone else tries:
reg @maJorTom
TrailBot will say:
Handle '@maJorTom' already exists
But if they ask:
status @MajoRtom
TrailBot might say:
@MajorTom: Planet Earth is Blue
You can always unregister your @handle:
unreg @MajorTom
TrailBot will immediately delete all of the information it has about
you and say:
Success: @MajorTom unregistered
(Twilio, the service that provides TrailBot's connection to the phone
network, keeps logs of all messages for [a long time]. Text messages
are not private, and there's nothing I can do...)
If you've forgotten your @handle, you can ask TrailBot:
whoami
(notice that's all one word!) and get back:
You are @MajorTom
5word
<command>: '5word'
If you've ever played the five-letter word guessing game, on a certain national newspaper's website, you know how to play 5word
(So that TrailBot can keep track of your game status, you must register an @handle to play 5word.)
To start a game, say '5' or '5word', followed by your first
five-letter guess:
5 melon
Trailbot will say something like:
m e L * *
a b c d E f g h i j k L M p q r s t u v w x y z
The first line shows:
- a capital where the letter is in the word AND in the right position (The 'L' above),
- a lowercase where the letter is in the word but in the wrong position ('m' and 'e' above), and
- '*' elsewhere.
The second line is an alphabetical list of characters that ARE in the word (capitals) and that MIGHT BE (lowercase). Letters that are NOT in the word are shown with blank spaces.
Second guess:
5 golem
TrailBot shows each of your guesses, followed by the list of letters:
m e L * *
* * L E M
a b c d E f   h i j k L M p q r s t u v w x y z
You have six guesses to get all the letters.
If you forget where you are in the game, you can just say:
5
and TrailBot will send your current gameboard:
m e L * *
or quick tutorial:
* * L E M
a b c d E f   h i j k L M p q r s t u v w x y z
say '5word quit' to quit
Try to guess the secret five-letter word in six guesses After each
guess, I'll tell you which letters are right, and which of those are in
the correct location in the secret word. I'll also show you all of the
letters you guessed so far, and which ones are part of the secret word.
(If you've ever played 'wordle' on the NY Times website, you know how
to play 5word.) say '5word' and your five-letter guess to start
playing,
say '5word quit' to quit
And if you get tired of playing, just say:
5 quit
You have quit.
Word was XYLEM
Say 5 and your first guess to start a new game!
5 xylem
Status Updates
<command>: 'status'
@handle required
Ever tried to send messages to a group of people while traveling?
Trailbot status updates are like sending group text:
- Like a group text, you only have to send one message to reach everyone;
- Unlike a group text, your followers don't get the dozen thumbs-up emoji from strangers (to them) every time you post;
- Followers can join and leave the group whenever they want. You don't have to manage your list anymore;
- Everyone has control of who they give their phone number to.
So if @MajorTom says:
status I'm stepping through the door
TrailBot will say:
Success: update sent to 0 followers
As people subscribe (tl;dr: they say 'sub @MajorTom' to TrailBot), that number will go up.
NOTE: status updates are limited to 460 characters in length
Direct Messages
@handle required
So you've gotten your @handle, like this:
reg @GroundControl
now just start your message with the @handle of person you're trying
to reach:
@MajorTom Take your protein pills and put your helmet on!
and @MajorTom will receive:
@GroundControl: Take your protein pills and put your helmet on!
Joining Groups
<command>: 'join', 'leave'@handle required
Groups:
- #twotd: get the Tournament Word of the Day sent to you every morning to grow your Scrabble vocabulary.
- #TrailBot: get the latest news about TrailBot features and development, report bugs, and ask questions or make feature requests of the TrailBot development team and other TrailBot users.
Just say:
join #twotd
or
join #trailbot
To leave, replace 'join' with 'leave':
leave #twotd
Note: every month that you've received at least one message in a group, TrailBot will send you a reminder text, listing the groups you've joined and how to leave them.
Creating Groups
<commands>: 'group', 'ungroup', 'invite'You can also create your own groups:
group #spaceOddity
will create a group named #spaceOddity, and add you as a member of the
group. Now other people can say:
join #spaceOddity
to send and receive messages from the group. You can add the keyword
'private' if you want to prevent users from joining without an invitation,
like this:
group #myOddity private
then invite users:
invite @MajorTom to #myOddity
If you want to be the only one to send messages to the list, use the
'announce' keyword:
group #twotd announce
(You can use both 'private' and 'announce' on the same group, with the
expected results.)
The Fine Print
Privacy
TrailBot does not sell or share your data. My SMS provider, Twilio, keeps logs of all traffic sent and received, and you should never (TrailBot or not) send anything in a text you wouldn't want to hear read aloud in court, but I will only ever look at traffic logs to resolve bugs or answer questions like "How many people are using TrailBot?" or "What features are people using most?"
If you subscribe to any @handles, TrailBot has to keep a record of your phone number in order to send you updates. When you unsubscribe, that record is erased.
If you register your own @handle, TrailBot records your phone number, @handle, and any information you have specifically saved. When you unregister, those records are erased.
TrailBot keeps logs and makes backup copies of user data so it can find and fix bugs, and recover from disk failures or other catastrophes. Backup copies might contain otherwise 'erased' records. Logs and backup copies are erased after no more than 30 days.
Playing Nice
Don't use TrailBot to harrass, annoy, or otherwise disturb others. If you are getting unwanted messages through TrailBot, contact me by email, and say 'STOP' to TrailBot to stop all messages immediately.
Don't make excessive requests. Some of the services TrailBot provides access to will only serve so many requests per month, day, or second. Also, sending and receiving texts costs TrailBot money.
Money
TrailBot does cost money to run. As of this writing, I pay 0.79 cents for each segment TrailBot sends or receives. so A 3-day weather report costs about a nickel, a Wikipedia request is almost a dime. I'm committed to keeping TrailBot free and open, but also to eating and having a warm place to sleep.
If you find yourself enjoying TrailBot and using it often, please consider making a donation.
Not My Rules
TrailBot, as a computer talking to humans over SMS, has to abide by the rules laid down by the cellular networks, called 10DLC A2P. Those rules are in place to help make sure people aren't getting spammed or harassed in their text messages, which I support.
As part of that, TrailBot will send you a message every month in which you've received at least one status update or group message, listing all of your subscriptions and group memberships, and giving your instructions for unsubscribing.
The 460 character limit
SMS messages are sent in batches of 160 characters, known as a segments. This is why Twitter had their 140 character limit for a long time: they started out as a group text messaging app. Yes, I copied their idea.
Because status updates have the potential to go out to a lot of people, they're limited in size.
460 characters is three segments (160*3=480) minus space for an '@', a 16-character handle, a colon. a space, and one character left over for good luck.