-
-
Save netpro2k/1390753 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class SiriProxy::Plugin::Twitter < SiriProxy::Plugin | |
# this watches when in the default context | |
listen_for /tweet (.*)/ do |data, tweetText| | |
show_rich_snippet do | |
image 'http://cl.ly/1l040J1A392n0M1n1g35/content' # this just makes things looks nice, but is obviously specific to my username | |
text tweetText | |
end | |
# this locks out other plugins until a confirmation or deny | |
confirm do | |
confirmed do | |
send_tweet tweet | |
say "Tweet posted" | |
end | |
cancelled do | |
say "Ok I wont send it." | |
end | |
end | |
end | |
end | |
class SiriProxy::Plugin::BlockTest < SiriProxy::Plugin | |
listen_for /matched in default state/ do |data| | |
say "default state" | |
end | |
listen_for /also matched in default state/ do |data| | |
say "Changing state to foo" | |
set_state :foo | |
end | |
listen_for /also matched in default state/, next_state: :foo do |data| | |
say "Also changing state to foo" | |
end | |
# define multiple listen_for's in a given state | |
within_state :foo do | |
listen_for /matched in foo state/ do |data| | |
say "foo state" | |
end | |
listen_for /also matched in foo state/ do |data| | |
say "also foo state" | |
end | |
end | |
end | |
class SiriProxy::Plugin::MelbourneMetroTrains < SiriProxy::Plugin | |
# this watches when in the default state | |
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, state gets cleared | |
listen_for /map/, within_state: :showing_schedule, 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 state to any existing ontexts | |
set_state :showing_schedule | |
else | |
say "Sorry, I'm unable to retrieve your train details." | |
clear_state() # or set_state nil | |
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?", options: all_stations) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment