Přeskočit na obsah

Hledej:


elfineer | blog

@PavelHoralik @ischiam tomu obyčejně hráblo, ne? :)
twitter.com/elfineer


kvě 10 06

Facebook SMS API

Datum a čas čtvrtek 6. května 2010, 10:56
Tagy facebook o2 sms mobil webdesign
Komentáře 2 (přejít na komentáře, přidat nový, sledovat pomocí RSS)
Přečteno 11488×
Popis Do své aplikace na Facebooku můžete snadno přijímat SMS i odpovídat na ně, omezení je však hodně (obsahuje funkční ukázku v aplikaci + jak implementovat).

Díky tomu, že O2 v dubnu spustilo ovládání (článek zde na blogu) Facebooku přes SMS, můžete snadno od uživatelů přijímat SMS. Uživatel napíše zprávu na stejné číslo jako by použil pro aktualizaci statusu či jiný příkaz Facebooku (tedy 9996209), pouze na začátek napíše klíčové slovo, které Facebooku řekne, že jde o zprávu do vaší aplikace. Facebook pak zprávu předá jako POST požadavek hlavní stránce. Aplikace pak může provést, co se po ní chce, sestavit text do SMSky a použitím jednoduché funkce odeslat odpověď. Podobně jako kdybyste používali pro svou aplikaci SMS bránu typu Mobilem.cz nebo třeba více profi řešení od operátora.

Samotné rozchození SMSek je na uživatele ale poměrně náročné.

  • Uživatel musí používat O2. Je samozřejmě možné, že službu budou podporovat i jiní operátoři, např. Vodafone ale na Twitteru psal, že o ni neuvažuje.
  • Uživatel musí mít vaši aplikaci přidanou ve svém profilu (tzn. nejdřív musí u počítače udělat něco, aby mu SMSky fungovaly).
  • A ještě musí mít tato aplikace samotná SMS povolení, kterou získá odkazem z aplikace.
  • Samozřejmě také musí mít funkční samotný SMS Facebook, k tomu už ho ale naláká odkaz z aplikace.

Facebook SMS API

Jak začít používat?

Takovouhle hračku jsem si samozřejmě musel vyzkoušet a opět se na to hodil můj TV program, resp. jeho Facebook aplikace – pokud si tedy chcete vyzkoušet, jste vítání.

Co tedy musí udělat uživatel?

  • Nejprve musí používat FB aplikaci, tedy autorizovat ji jako každou jinou.
  • V aplikaci musí návštivit sekci „Do mobilu“ a zde kliknout na odkaz. Pokud nemá nastavený Facebook SMS, objeví se formulář pro zadání telefonního čísla.

Facebook SMS API

Nyní stačí napsat SMSku ve formátu VTELEVIZI (něco) na 9996209. (něco) je text, který se aplikace pokusí vyhledat v TV programu a odpoví mu datem, časem, kanálem a jménem pořadu. Také může poslat SMSku VTELEVIZI MOJE a přijdou mu v odpovědi 3 nejbližší pořady z jeho osobního programu.

To je zatím vše, vím, že by program mohl být mnohem chytřejší (například by bylo možné odpovědět na hledání slovem „PRIDEJ“ a pořad by se přidal do osobního programu), ale neočekávám, že by byl o tuto funkci velký zájem – viz požadavky na uživatele, tohle je spíš jen takový test. Pokud ale uvidím, že to víc lidí vážně používá, není problém.

Omezení

Využívání těchto SMS obsahuje ale řadu omezení – jejich podrobný popis najdete na Facebook Developers. Nejvýraznější je, že sami od sebe můžete poslat uživateli jen jednu SMS denně (chápu-li popis dobře, tak máte limit tolika MT SMS (MT = Mobile Terminated – na mobil), kolik uživatelů s povolenými SMS vaše aplikace má). Sice když jsem si udělal testovací stránku, která na můj mobil poslala SMS a obnovoval ji, chodily další a další zprávy, tento limit tu však je a proto by nemělo smysl nějak dlouze programovat třeba SMS připomenutí před začátky pořadů, když by to od začátku porušovalo pravidla.

Toto omezení ale dává smysl, protože by operátorům nejspíš hodně vadilo, kdyby mohl každý aplikacemi obcházet standardní SMS brány a měl tak „kvalitní spojení“ zdarma (oproti třeba přesměrování na mobilní e-maily, které mají místy i desítky minut zpoždění). Taky by se vašich SMS měl týkat časový limit – tedy máte-li (jako například já) nastaveno, že vám SMS nechodí v noci (stejně přišla).

Na SMSky od uživatelů (MO = Mobile Originated) ale můžete odpovídat bez omezení (počtu i času) a to je právě to, na co se toto SMS API hodí. Také se ve své aplikaci nikdy nedozvíte telefonní číslo, vždy jen standardní Facebook ID, se kterým pracujete ve své aplikaci dosud.

Implementace do aplikace

Samotná implementace do aplikace je snadná (pokud jste na začátku pochopili jiné věci, jako jak používat FBML, kde vzít ID uživatele atd., tak tohle je jednoduché).

Nejprve musíte v aplikaci Developer povolit SMS.

Facebook SMS API

Pak musíte uživateli vnutit, aby nějakým způsobem povolil příjem SMS zrovna vaší aplikace. Nejjednodušší je vložit do aplikace odkaz a v něm si vyžádat povolení na SMS (Klik­něte pro povolení SMS.). Další možností je, že uživatel si otevře na mobilu adresu http://m.face­book.com/autho­rize.php?api_key­=(váš API klíč)&v=1.0&ex­t_perm=sms. To je ale dle mého názoru nesmysl, protože A) tu adresu byste potřebovali na mobil nějak dopravit (ideálně SMSkou, ale ještě nemáte SMS práva), B) když někdo má internet v mobilu, tak je asi lepší ovládat vaší aplikaci přes WAP (resp. mXHTML, ale rozumíme si) než přes SMS. Navíc se tím vystavujete riziku, že stránku neotevře, protože nemá nastavené GPRS (toho bych se dneska nebál) nebo nechce platit (tahle drobnost by ho mohla stát 20 Kč při účtování GPRS podle času)… Prostě to nemá smysl, doporučuju odkaz do aplikace.

Pokud vám uživatel tohle povolení nedá (resp. mu dostatečně nevysvětlíte, že ho má dát), tak pošle-li SMS s klíčovým slovem, objeví se mu to jako nový status. (Je pravda, že kdyby takové omezení nebylo, tak by asi bylo možné odchytávat statusy se slovy jako „byl“, „viděl“, „šel“ (spíš tedy v angličtině) a uživatelé by se hodně divili, kam mizí statusy.)

Důležitou věcí je právě klíčové slovo. Klíčovým slovem je adresa vaši aplikace za apps.facebook.com (Canvas URL). Zde mi trvalo docela dlouho zjistit, kde se děje chyba (a všechny pokusy chodily jako status a ty zas jiným lidem na mobily). Nakonec jsem jen zjistil, že FB nějak špatně bere podtržítko v adrese, takže původní apps.facebook­.com/tv_program jsem změnil na apps.facebook­.com/vtelevizi. Tato změna je jednoduchá a uživatele se nijak nedotkne. Jen kdybyste dělali takovouto změnu kvůli klíčovému slovu, tak doporučuji založit novou aplikaci, tu dát na starou adresu a do ní dat odkaz na novou aplikaci.

Facebook SMS API

A teď už konečně odesílání a příjem.

SMS uživateli odešlete pomocí funkce sms.send, kde v parametrech uvedete Facebook ID a text zprávy. Také existuje funkce sms.canSend, která by vám měla říct, jestli má uživatel povolené SMS atd. Červený text „For up to date reference documentation…“ na wiki ještě o víkendu, kdy jsem si se SMS hrál, nebyl, takže je možné, že se v API budou dít změny spolu s novým GRAPH API.

Ááále… aby to nebylo tak jednoduché, tak u „té tradiční PHP knihovny“ (které nyní Facebook na Wiki říká older PHP client) mi nešly SMS funkce – pomohl tento tip z fóra (přidání několika řádků do souboru facebookapi_php5_res­tlib.php).

Příjem SMSky je ještě jednodušší – Facebook vám SMS předá jako POST požadavek na hlavní stránku aplikace (to bohužel změnit nejde). To, že jde o SMS, poznáte podle 1ky v proměnné $_POST[‚fb_sig_sm­s‘]. V $_POST[‚fb_sig_u­ser‘] je ID uživatele, který SMS poslal a v $_POST[‚fb_sig_mes­sage‘] samotný text zprávy (už bez vašeho klíčového slova). V $_POST[‚fb_sig_sm­s_sid‘] ještě naleznete nějaké ID SESSION, které souvisí s tím, že SMSka na mobil přijde od čísla 9996209(+ 3 čísla přípony). Pokud tedy na mobilu uživatel zvolí odpovědět, Facebook pozná, na co odpovídá a není už pak nutné psát klíčového slovo. Toto není specialita jen SMS API aplikací, FB toto standardně používá u normálních SMS (podle čísla pozná, jestli funkcí Odpovědět v mobilu reagujete na jaký status, zprávu…).

Facebook SMS API

Bezpečnost

Nejsem si úplně jistý, jestli opravdu nijak nelze vaší aplikaci podvrhnout SMS, která nebyla SMS, ale každý může díky API vedět, jak má vypadat POST požadavek. Zkoušel jsem jen velmi primitivní stránku, kde byly nastaveny inputy se stejnými jmény na hodnoty, které by vygenerovala SMS, a to mi neprošlo, takže to asi bude někde ošetřeno.

To je vše, jsem zvědavý, jestli to někdo bude používat (alespoň vyzkouší) a jestli vůbec někdo pravidelně. Ale to API jsem si vyzkoušet musel :) (a jsem zas o kousek chytřejší!)

čtvrtek 6. května 2010, 10:56 - 11488× shlédnuto - RSS komentářů - tagy: facebook o2 sms mobil webdesign



?>


Nepřehlédněte

kada - pátek 22. dubna 2011, 17:21 - #

z facebooku mne chodej sms kdy za každým písmenem je @

elfineer - pátek 22. dubna 2011, 19:30 - web - #

Jj, Facebook to má teď rozbité, psal jsem to O2 do toho formuláře na fan stránce a prý o tom vědí a je to věc FB.

Komentáře používají Texy! syntaxi.

"odkaz":http://kam.vede.cz, *zdůrazněné (em)*, **zdůrazněnější (strong)**, citace


Hledání

Mikroblog

GOTO TWITTER
GOTO POSTEROUS

Reklama

Nejčtenější

Reklama

Kvalitní domény, levný webhosting
Vyzkoušejte spolehlivý Český hosting. www.cesky-hosting.cz

Facebook tipy

Moje weby

Napište mi vzkaz