Voicemail - gonzee.tv

Download Report

Transcript Voicemail - gonzee.tv

VOICEMAIL
ROB – GONZEE.TV
I’M ROB! (yet again)
FIRST APP ON BOXEE
LAUGH-O-TRON
SCOPE THIS MY NINJA
(totally demoing Laugh-o-Tron)
WHERE O’ WHERE
TELEVISION
BOXEE FTW!
(totally demoing voicemail app)
LAUGHOTRON VOICEMAIL
Resources
Intro to Boxee GUI
Intro to Twilio REST API
CODE

oh snap!
GET MACGUYVER ON IT
List Container
http://developer.boxee.tv/List_Container
 Twilio Python module
http://www.twilio.com/docs/libraries/
 ElementTree (or your XML parser of choice)
http://effbot.org/zone/element-index.htm

HOW IT WORKS
REST
XML
THE CAKE IS A LIE
BOXEE GUI
XML Driven
 Controls
 Python Events

<?xml version="1.0"?>
<window type="window" id="14000">
<defaultcontrol
always="true">111</defaultcontrol>
<allowoverlay>yes</allowoverlay>
<controls>
<control type="group">
</control>
</controls>
</window>
LIST CONTAINER
<control type="list" id="111“>
<onright>-</onright>
<posx>160</posx>
<posy>60</posy>
<width>960</width>
<height>570</height>
<orientation>vertical</orientation>
<itemlayout>
</itemlayout>
<focusedlayout width="960" height="80">
</focusedlayout>
<content type="action">
</content>
</control>
ONLOAD EVENT
<?xml version="1.0"?>
<window type="window" id="14000">
<onload lang="python"><![CDATA[
#TOTALLY PUT YOUR CODE HERE
]]></onload>
<defaultcontrol always="true">111</defaultcontrol>
<allowoverlay>yes</allowoverlay>
<controls>
<control type="group">
</control>
</controls>
</window>
CODE!
import twilio
import elementtree.ElementTree as ET
# Twilio REST API version
API_VERSION = '2008-08-01'
# Twilio AccountSid and AuthToken
ACCOUNT_SID = ‘INSERTACCOUNTSID'
ACCOUNT_TOKEN = ‘INSERTSECRETTOKEN'
# Create a Twilio REST account object using your Twilio account ID and token
account = twilio.Account(ACCOUNT_SID, ACCOUNT_TOKEN)
MORE CODE!
# Use the Recording resource to get all the recordings from our account
try:
response = account.request('/%s/Accounts/%s/Recordings' % (API_VERSION,
ACCOUNT_SID), 'GET')
except Exception, e:
print e
print e.read()
# Parse result
response = ET.fromstring(response)
WAIT – THAT’S NOT MUCH CODE?
container = mc.ListItems()
for recording in response.findall("*/Recording"):
newitem = mc.ListItem(mc.ListItem.MEDIA_AUDIO_SPEECH)
newitem.SetLabel(recording.findtext('DateCreated'))
newitem.SetDuration( int(recording.findtext('Duration')) )
newitem.SetThumbnail("http://apps.gonzee.tv/laughotronvoicemail/images/
thumb.png")
newitem.SetProperty("Sid", recording.findtext('Sid'))
newitem.SetProperty("AccountSid", recording.findtext('AccountSid'))
newitem.SetProperty("CallSid", recording.findtext('CallSid'))
newitem.SetProperty("DateUpdated", recording.findtext('DateUpdated'))
newitem.SetPath('https://api.twilio.com/%s/Accounts/%s/Recordings/' %
(API_VERSION, ACCOUNT_SID) + recording.findtext('Sid') + ".mp3")
container.append(newitem)
list = mc.GetWindow(14000).GetList(111).SetItems(container)
QUESTIONS?
10001110111

Download
http://dir.gonzee.tv/download/tv.gonzee.laughotronvoicemail.zip

Checkout
svn checkout http://twilio-boxeehackathon.googlecode.com/svn/trunk/voicemail/
twilio-boxee-hackathon-read-only
KTHX