Created
October 11, 2010 20:42
-
-
Save TelegramSam/621183 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
ruleset a8x72 { | |
meta { | |
name "NeoSale" | |
description << | |
Selling the Neo Freerunner | |
>> | |
author "Sam Curren" | |
logging on | |
key twitter { | |
"consumer_key" : "<redacted>", | |
"consumer_secret" : "<redacted>", | |
"oauth_token":"<redacted>", | |
"oauth_token_secret":"<redacted>" | |
} | |
} | |
dispatch {} | |
global { | |
dataset highbid <- "https://spreadsheets.google.com/pub?key=<redacted>&single=true&gid=1&range=B1&output=txt" cachable for 1 second; | |
dataset winner <- "https://spreadsheets.google.com/pub?key=<redacted>&single=true&gid=1&range=B2&output=txt" cachable for 1 second; | |
} | |
rule answercall is active { | |
select when twilio callstart | |
{ | |
twilio:say("Thank you for your interest in buying Sam's Neo Freerunner"); | |
twilio:pause(1); | |
twilio:say("The current high bid is #{highbid} dollars."); | |
} | |
fired { | |
raise explicit event getbid; | |
} | |
} | |
rule getbid is active{ | |
select when explicit getbid or twilio getbid | |
{ | |
twilio:gather_start("phonebid"); | |
twilio:say("Dial your bid in whole dollars. Hangup to not place a bid."); | |
twilio:gather_stop(); | |
twilio:redirect("getbid"); | |
} | |
} | |
rule phonebid is active { | |
select when twilio phonebid | |
pre { | |
bidvalue = event:param("Digits"); | |
bidder = event:param("Caller"); | |
} | |
if bidvalue > highbid then { | |
http:post("https://spreadsheets.google.com/formResponse?formkey=<redacted>") with | |
params = {"entry.0.single":bidvalue, "entry.1.single":bidder, "submit":"Submit", "pageNumber":"0", "backupCache":""}; | |
twilio:say("Your bid of #{bidvalue} dollars has been placed. Thank you!"); | |
} | |
fired { | |
raise explicit event sendtweet with newmaxbid = bidvalue; | |
} else { | |
raise explicit event toolow; | |
} | |
} | |
rule bidtoolow is active { | |
select when explicit toolow | |
{ | |
twilio:say("Your bid is below the current high bid of #{highbid} dollars."); | |
} | |
fired { | |
raise explicit event getbid; | |
} | |
} | |
rule sms is active { | |
select when twilio sms | |
pre { | |
messagetext = event:param("Body"); | |
sender = event:param("From"); | |
bidlist = messagetext.extract(re/([0-9]+)/i); | |
} | |
if(bidlist.length() > 0) then { | |
noop(); | |
} | |
fired{ | |
raise explicit event smsbid with bidvalue = bidlist.head() and sender = sender; | |
} else { | |
raise explicit event smshelp; | |
} | |
} | |
rule smsbid is active { | |
select when explicit smsbid | |
pre { | |
bidder = event:param("sender"); | |
bidvalue = event:param("bidvalue"); | |
} | |
if(bidvalue > highbid) then { | |
http:post("https://spreadsheets.google.com/formResponse?formkey=<redacted>") with | |
params = {"entry.0.single":bidvalue, "entry.1.single":bidder, "submit":"Submit", "pageNumber":"0", "backupCache":""}; | |
twilio:sms("Your bid of #{bidvalue} dollars has been placed. Thank you!"); | |
} | |
fired { | |
raise explicit event sendtweet with newmaxbid = bidvalue; | |
} else { | |
raise explicit event smslow; | |
} | |
} | |
rule smslow is active { | |
select when explicit smslow | |
twilio:sms("Your bid is below the current high bid of $#{highbid}. Reply with 'bid x' to bid x dollars."); | |
} | |
rule smshelp is active { | |
select when explicit smshelp | |
twilio:sms("The current high bid for Sam's Neo FreeRunner is $#{highbid}. Reply with 'bid x' to bid x dollars."); | |
} | |
rule tweet is active { | |
select when explicit sendtweet | |
pre { | |
newvalue = event:param("newmaxbid"); | |
tweet = "New Bid! I'm now being sold for $#{newvalue}. Call to Bid: 801.988.9331 #utosc"; | |
} | |
twitter:update(tweet); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment