Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== xAP Twitter ====== {{ :livebox:twitter_logo_header.png}} This component allows you to tweet messages and control any xAP compliant device. The Livebox being such a device. {{:livebox:twitter-gui.png|}} Due to the way in which Twitter works, you are not able to enter the same tweet twice. To work around this, the xap-twitter daemon will DELETE the tweet once it has processed it. This means that you lose the audit trail of the commands you have sent. However, it has the benefit of giving active feedback that the command was accepted and processed. Only message beginning with the COMMAND PREFIX will be process by the daemon, and hence eligible for deletion. Authentication is done via [[http://oauth.net/|OAUTH]] so your password is **not** stored on the livebox. <note tip>If you are struggling to get OAUTH to work on when using IE8, try using another browser, eg Chrome</note> {{:livebox:tweet.png|}} This will result in the following xAP message being transmitted. <code> xap-header { v=12 hop=1 uid=FF00D900 class=alias source=dbzoo.livebox.Twitter } command { text=relay 1 on } </code> The commands you enter resolve the same way as the Google Calendar component (//See [[google_calendar#calendar_aliases]]//) and require an [[#alias_interpreter]] to resolve these into appropriate actions. The diagram below shows the entire process. {{:livebox:twitter_xap_process_v3.png|}} <note tip>To get up and running quickly you can use the sample provided on the box as a starting point. <code> cp /etc_ro_fs/plugboard/samples/aliasApplet.lua /etc/plugboard /etc/init.d/xap restart plugboard </code></note> ===== Sending tweets ===== The xap-twitter process can also be used to send TWEETs to twitter. This is really useful if you have other scripts or processing running and you wish to record events. Twitter can be that event recording system to notify when something happens. As tweets can be relayed to your phone, this gives you the ability to remotely monitor events. \\ Sample payload to create the tweet "Hello World" <code> xAP-header { v=12 hop=1 uid=FF00DB00 class=xAPBSC.cmd source=dbzoo.acme.test target=dbzoo.livebox.twitter } output.state.1 { id=* text=Hello World } </code> ===== alias interpreter ===== An alias engine is supplied on the HAH as a sample to install this <code> # cp /etc_ro_fs/plugboard/samples/aliasApplet.lua /etc/plugboard </code> This is how the default alias engine looks - You'll want to edit this as you add twitter and google calender command shortcuts. <code lua> --[[ Alias interpreter Use to perform actions based on xAP alias class messages emitted by both xap-twitter and xap-googlecal --]] module(...,package.seeall) require("xap") require("xap.bsc") require("string") rex = require("rex_posix") info={ version="1.1", description="Alias Interpreter" } pat={ [rex.new("(relay) ([1-4]) (on|off)")]=function(m) rfRelayCmd(m) end, [rex.new("(rf) ([0-9]+) (on|off)")]=function(m) rfRelayCmd(m) end, [rex.new("tweet (.*)")]=function(m) tweet(m) end, ["reboot"] = function() os.execute("reboot") end } function tweet(m) local msg = unpack(m) bsc.sendText("dbzoo.livebox.Twitter",msg) end function rfRelayCmd(t) local addr1,addr2,state = unpack(t) bsc.sendState(string.format("dbzoo.livebox.Controller:%s.%s",addr1,addr2),state) end function aliasEngine(frame) local alias = frame:getValue("command","text") for r,f in pairs(pat) do if type(r) == "string" then if r == alias then f() end else p={r:match(alias)} if #p > 0 then f(p) end end end end function init() local f = xap.Filter() f:add("xap-header","class","alias") f:add("command","text",xap.FILTER_ANY) f:callback(aliasEngine) end </code> livebox/twitter.txt Last modified: 2012/05/29 10:59by brett