Skip to content

Instantly share code, notes, and snippets.

@netpro2k
Created November 24, 2011 05:05
Show Gist options
  • Save netpro2k/1390664 to your computer and use it in GitHub Desktop.
Save netpro2k/1390664 to your computer and use it in GitHub Desktop.
class SiriProxy::Plugin::Twitter < SiriProxy::Plugin
# this watches when in the default context
listen_for /tweet (.*)/ do |data, tweetText|
show_wolfram_snippet [
{image: 'http://cl.ly/1l040J1A392n0M1n1g35/content'}, # this just makes things looks nice, but is obviously specific to my username
{text: tweetText}
]
# this locks out other plugins until a confirmation or deny
confirm do |confirmed|
if confirmed
send_tweet tweet
say "Tweet posted"
else
say "Ok I wont send it."
end
end
end
end
class SiriProxy::Plugin::MelbourneMetroTrains < SiriProxy::Plugin
# this watches when in the default context
listen_for /when is my next train/, do |data|
respond_with_next_train data
end
# after showing a schedule, user can ask to see a map
# if another plugin accepts a command, context gets cleared
listen_for :showing_schedule, /map/, do |data|
show_map Map.new(@train_details.station.coordinates) # Automatic bounding box
end
def respond_with_next_train(data)
train_details = fetch_train_details(data.current_location, default_station)
if train_details
say "Your next #{train_details.line} train to #{default_station} departs from #{train_details.source} at #{train_details.time}"
# this adds the context to any existing ontexts
add_context :showing_schedule
# you can also replace_context to clear all contexts and replace with given one
else
say "Sorry, I'm unable to retrieve your train details."
clear_context()
end
end
def ask_and_store_default_station
say "I don't know where you usually go in the #{morning_or_afternoon}"
#next response when issuing an ask is not sent to other plugins
station = ask "What is the station?", all_stations
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment