{"id":1932,"date":"2009-11-25T12:45:56","date_gmt":"2009-11-25T10:45:56","guid":{"rendered":"https:\/\/versme.net\/blog\/?p=1932"},"modified":"2013-12-28T14:49:30","modified_gmt":"2013-12-28T12:49:30","slug":"ping-fm-ir-blake-lt-integracija-per-5-minutes","status":"publish","type":"post","link":"https:\/\/versme.net\/blog\/ping-fm-ir-blake-lt-integracija-per-5-minutes\/","title":{"rendered":"Ping.fm ir Blake.lt integracija per 5 minutes"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/versme.net\/blog\/images\/pingfm.png\" align=\"right\" \/><\/p>\n<p>Jau kuris laikas naudojuosi Blake.lt prane\u0161im\u0173 siuntimui gan\u0117tinai globaliu m\u0105stu &#8211; i\u0161 \u010dia jos gali keliauti \u012f Twitter, Facebook, E\u017eio klub\u0105 ir pan. Statusus atnaujinti galima per XMPP (GTalk) protokol\u0105, kas labai pravartu, jeigu nenorite atidaryti <a href=\"http:\/\/www.blake.lt\">Blake.lt<\/a> puslapio atnaujindami status\u0105. Ta\u010diau man to negana &#8211; tod\u0117l labai susidom\u0117jau <a href=\"http:\/\/www.ping.fm\">Ping.fm<\/a> si\u016blomomis galimyb\u0117mis &#8211; status\u0105 galite atnaujinti per Skype, GTalk, SMS, WAP, nar\u0161ykl\u0119 ir t. t. Statusas keliauja tiek \u012f Linkedin, Twitter, Facebook tiek \u012f daug kit\u0173 socialini\u0173 tinkl\u0173. Ta\u010diau Blake.lt palaikom\u0173 tinkl\u0173 s\u0105ra\u0161e n\u0117ra. Blake.lt reikia pa\u010diam pasidaryti \u201epalaikomu\u201c tinklu. Laimei tam nereikia net penki\u0173 minu\u010di\u0173.<\/p>\n<p>I\u0161 prad\u017ei\u0173 perskai\u010diau <a href=\"http:\/\/www.nepo.lt\">NePo<\/a> ra\u0161yt\u0105 <a href=\"http:\/\/pixel.lt\/puolam-blakes.html\">straipsn\u012f apie Blake API ir OAuth<\/a> ta\u010diau i\u0161 karto \u012f akis puol\u0117 pastaba, jog reik\u0117s kontaktuoti su administratoriais d\u0117l trupu\u010dio duomen\u0173:<code><em><\/p>\n<blockquote>\n<p>Pirmiausiai jums reik\u0117s oauth_consumer_key ir oauth_consumer_secret, kuriuos gausite tik asmeni\u0161kai sukontaktav\u0119 su Blak\u0117s kur\u0117jais.<\/p>\n<\/blockquote>\n<p><\/em><\/code><\/p>\n<p>Kur \u010dia visas patogumas? Per daug negalvoj\u0119s atsidariau <a href=\"http:\/\/blakelt.pbworks.com\/\">Blake.lt API dokumentacijos puslap\u012f<\/a>. Truput\u012f paskai\u010diau ir supratau, jog Blake.lt API dar toli iki Twitter API &#8211; n\u0117ra net papras\u010diausios \u201efollow\u201c funkcijos prid\u0117ti naujiem draugam, kas yra labai b\u016btina funkcija marketingo m\u0117g\u0117jam save populiarinti u\u017esisakant kit\u0173 srautus. Nors mano tikslas tik atnaujinti status\u0105, ta\u010diau \u010dia nieko naujo neradau &#8211; bandant naudotis bet kokia funkcija, reikalaujama autorizacija per \u0161iuos kintamuosius:<em><code><\/p>\n<blockquote>\n<p>{\"error\":\"OAuth Verification Failed: Can't verify request, missing oauth_consumer_key or oauth_token\"}<\/p>\n<\/blockquote>\n<p><\/code><\/em><\/p>\n<p>Nusprend\u017eiau per daug ne\u017eaisti ir atsidariau <a href=\"http:\/\/blake.lt\/accounts\/devices\">Blake.lt nustatym\u0173 puslap\u012f<\/a>. \u010cia i\u0161 karto u\u017e aki\u0173 u\u017ekliuvo galimyb\u0117 status\u0105 atnaujinti per XMPP (GTalk). Tai kiek bjaurokas metodas, ta\u010diau visas darbas u\u017etruko ne daugiau 5 minu\u010di\u0173.<\/p>\n<p><strong>Reikalavimai \u0161iam metodui<\/strong><\/p>\n<ul>\n<li>Serveris su PHP 5.x palaikymu.<\/li>\n<li>curl.<\/li>\n<li>Google Talk s\u0105skaita.<\/li>\n<\/ul>\n<p><strong>Blake.lt ir GTalk palaikymas<\/strong><\/p>\n<p>Pirmiausiai <a href=\"http:\/\/blake.lt\/accounts\/devices\">Blake.lt nustatym\u0173 puslapyje<\/a> \u012fjungiame GTalk palaikym\u0105:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/versme.net\/blog\/images\/gtalk.jpg\" alt=\"GTalk \u012fjungimas Blake.lt\" \/><\/p>\n<p>Jeigu norite &#8211; galite u\u017ed\u0117ti varnel\u0119. Tada \u012f GTalk&#8217;\u0105 gausite visus draug\u0173 status\u0173 atnaujinimus, kuriuos esate u\u017esisak\u0119.<\/p>\n<p>Dabar m\u016bs\u0173 tur\u0117t\u0173 papra\u0161yti patvirtinti, jog m\u016bs\u0173 nurodyta GTalk s\u0105skaita priklauso i\u0161 tikr\u0173j\u0173 mums:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/versme.net\/blog\/images\/gtalk2.jpg\" alt=\"GTalk \u012fjungimas Blake.lt\" \/><\/p>\n<p>Atsidarykime <a href=\"http:\/\/www.gmail.com\">GMail<\/a>&#8216;\u0105 ir pokalbi\u0173 laukelyje \u012fra\u0161ykime \u201eblake.lt.gtalk@gmail.com\u201c:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/versme.net\/blog\/images\/gtalk3.jpg\" alt=\"Blake.lt GTalk roboto prid\u0117jimas \u012f kontaktus\" \/><\/p>\n<p>I\u0161 \u010dia pasirenkame \u201eInvite to chat\u201c, \u201eSend invites\u201c. Dabar kontakt\u0173 s\u0105ra\u0161e tur\u0117t\u0173 atsirasti kontaktas \u201eblake.lt gtalk\u201c. Paspauskime ant jo ir \u012fveskime Blake.lt duot\u0105 patvirtinimo kod\u0105 (pavyzdyje, tai \u201e8d39a7f2a2\u201c):<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/versme.net\/blog\/images\/gtalk4.jpg\" alt=\"Blake.lt GTalk roboto prid\u0117jimas \u012f kontaktus\" \/><\/p>\n<p>Bet kokia \u017einut\u0117, nusi\u0173sta \u0161iam kontaktui, paklius \u012f Blake.lt kaip j\u016bs\u0173 statuso atnaujinimas. <a href=\"http:\/\/blake.lt\/accounts\/devices\">Blake.lt nustatym\u0173 puslapyje<\/a> tur\u0117t\u0173 dingti pra\u0161ymas patvirtinti s\u0105skait\u0105.<\/p>\n<p>Dabar galite pereiti prie PHP scenarijaus (\u201escript&#8217;o\u201c) ra\u0161ymo.<\/p>\n<p><strong>Norite tiesiog i\u0161bandyti kaip tai veikia?<\/strong><\/p>\n<p>Praleiskite sekan\u010di\u0105 dal\u012f ir prad\u0117kite nuo 5-ojo \u017eingsnio. Tik vietoje \u201eblake.php\u201c (pvz., \u201ehttps:\/\/versme.net\/Temp\/blake.php\u201c) ra\u0161ykite:<\/p>\n<blockquote><p><code>https:\/\/versme.net\/blake.php?username=prisijungimovardaspriegmailbeeta&password=slaptazodis<\/code><\/p><\/blockquote>\n<p>Pavyzd\u017eiui:<\/p>\n<blockquote><p><code>https:\/\/versme.net\/blake.php?username=ernetas&password=slaptazodis<\/code><\/p><\/blockquote>\n<p>Pavyzdyje lai\u0161kas b\u016bt\u0173 siun\u010diamas \u012f ernetas@gmail.com, o GTalk s\u0105skaita ir slapta\u017eodis tur\u0117t\u0173 b\u016bti nuo \u201eernetas@gmail.com\u201c.<\/p>\n<p><strong>XMPPHP scenarijus statuso atnaujinimui per GTalk<\/strong><\/p>\n<p>M\u016bs\u0173 ra\u0161omas scenarijus bus dvejop\u0173 funkcij\u0173 &#8211; i\u0161si\u0173sti XMPP protokolu \u017einut\u0119 Blake.lt robotui ir i\u0161si\u0173sti lai\u0161k\u0105 su statuso atnaujinimu sau, jeigu kartais Blake.lt neveikt\u0173 ir tuo metu negal\u0117t\u0173 atnaujinti m\u016bs\u0173 statuso.<\/p>\n<p>Pirmiausiai surenkame vis\u0105 reikiam\u0105 informacij\u0105 lai\u0161kui:<\/p>\n<p><code><\/p>\n<blockquote><p><?php\n$email   = \"ernetas@gmail.com\";\n$subject = \"Blake.lt statuso atnaujinimas\";\n$body    = \"J\u016bs atnaujinote savo Blake.lt status\u0105!\\n\\n\";\n$body   .= \"Naudotas metodas: {$_POST[\"method\"]}\\n\";\nif($_POST[\"title\"] != \"\"){\n  $body .= \"Pavadinimas: {$_POST[\"title\"]}\\n\";\n}\n$body   .= \"\u017dinut\u0117: \" .stripslashes($_POST[\"message\"]) .\"\\n\";\nif($_POST[\"location\"] != \"\"){\n  $body .= \"Vieta: {$_POST[\"location\"]}\\n\";\n}\nif($_POST[\"media\"] != \"\"){\n    $body .= \"\\nKiti duomenys:\\n\\n\";\n    $body .= \"\u017dinut\u0117 Raw formatu: {$_POST[\"raw_message\"]}\\n\";\n  $body .= \"Media URL: {$_POST[\"media\"]}\\n\";\n}\nif($_POST[\"trigger\"] != \"\"){\n  $body .= \"Trigger: {$_POST[\"trigger\"]}\\n\";\n}\n$body   .= \"\\nTai viskas!\";\n<\/code>\n<\/p><\/blockquote>\n<p><em>$email<\/em> - gav\u0117jo el. pa\u0161to adresas.<br \/>\n<em>$subject<\/em> - lai\u0161ko tema.<br \/>\n<em>$body<\/em> - pirmoji lai\u0161ko eilut\u0117, o scenarijaus gale - $body jau visas lai\u0161ko turinys.<\/p>\n<p>Toliau tikriname ar \u017einut\u0117 i\u0161 ties\u0173 yra, o gal \u010dia papras\u010diausiai ka\u017ekas u\u017ekliuvo u\u017e \u0161io scenarijaus be joki\u0173 \u017einu\u010di\u0173?<\/p>\n<blockquote>\n<p><code>if(count($_POST) > 0) {<br \/>\n<..vykdomas siuntimas..><br \/>\n}<\/code><\/p>\n<\/blockquote>\n<p>Vietoje \u201e<..vykdomas siuntimas..>\u201c ra\u0161ome norim\u0105 scenarij\u0173, kuris bus vykdomas siun\u010diant \u017einut\u0119.<\/p>\n<p>Nor\u0117dami i\u0161si\u0173sti lai\u0161k\u0105 apie \u017einut\u0119 \u010dia \u012fra\u0161ykite eilut\u0119:<\/p>\n<blockquote>\n<p><code>mail($email, $subject, $body, \"From: \\\"Ping.fm statuso atnaujinimas\\\" <support@ping.fm>\");<\/code><\/p>\n<\/blockquote>\n<p>Taip pat nepamir\u0161kite i\u0161si\u0173sti pa\u010dios \u017einut\u0117s Blake.lt GTalk robotui:<\/p>\n<blockquote><p><code>include 'XMPPHP\/XMPP.php';<br \/>\n$conn = new XMPPHP_XMPP('talk.google.com', 5222, 'jusupastas@gmail.com', 'slaptazodis', 'xmpphp', 'gmail.com', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_INFO);<br \/>\ntry {<br \/>\n    $conn->connect();<br \/>\n    $conn->processUntil('session_start');<br \/>\n    $conn->presence();<br \/>\n    $conn->message('blake.lt.gtalk@gmail.com',  stripslashes($_POST[\"message\"]));<br \/>\n    $conn->disconnect();<br \/>\n} catch(XMPPHP_Exception $e) {<br \/>\n    die($e->getMessage());<br \/>\n}<br \/>\n?><\/code><\/p><\/blockquote>\n<p>Nepamir\u0161kite pakeisti \u201ejusupastas@gmail.com\u201c ir \u201eslaptazodis\u201c \u012f prisijungimo duomenis prie GTalk. Slapta\u017eodyje venkite naudoti nestandartinius simbolius. Pavyzd\u017eiui, viengub\u0173 kabu\u010di\u0173 sistema nesupras teisingai.<\/p>\n<p>Bendras scenarijaus vaizdas: <a href=\"http:\/\/pastebin.com\/f1803eb6f\">http:\/\/pastebin.com\/f1803eb6f<\/a>.<\/p>\n<p>Scenarij\u0173 i\u0161saugokime pavadinimu \u201eblake.php\u201c (neb\u016btinai, ta\u010diau toliau tok\u012f naudosime pavyzdyje).<\/p>\n<p><strong>Surenkame ir pabaigiame integracij\u0105<\/strong><\/p>\n<p>1. Parsisi\u0173skite XMPP implementacij\u0105 XMPPHP i\u0161 oficialaus puslapio Google Code: <a href=\"http:\/\/code.google.com\/p\/xmpphp\/\">http:\/\/code.google.com\/p\/xmpphp\/<\/a>.<br \/>\n2. I\u0161pakuokite naujame kataloge.<br \/>\n3. \u012e server\u012f perkelkite katalog\u0105 \u201eXMPPHP\u201c i\u0161 archyvo. Kiti failai mums nereikalingi.<br \/>\n4. Serveryje, \u0161alia \u201eXMPPHP\u201c katalogo \u012fkelkime \u201eblake.php\u201c scenarij\u0173.<br \/>\n5. Prisijunkime prie Ping.fm ir \u201e<a href=\"http:\/\/ping.fm\/dashboard\/\">dashboard<\/a>'e\u201c spaud\u017eiame \u201e<a href=\"http:\/\/ping.fm\/networks\/\">Add more networks<\/a>.<br \/>\n6. Pasirenkame \u201eCustom URL\u201c spausdamie \u201e<a href=\"http:\/\/ping.fm\/custom\/\">Add network<\/a>\u201c.<br \/>\n7. \u201eCustom URL\u201c nurodome \u201eblake.php\u201c scenarijaus adres\u0105 ir spaud\u017eiame \u201eSubmit\u201c. Pvz.: \u201ehttps:\/\/versme.net\/Temp\/blake.php\u201c.<br \/>\n8. Gr\u012f\u017etame \u012f \u201e<a href=\"http:\/\/ping.fm\/dashboard\/\">Dashboard<\/a>\u201c ir i\u0161bandome. <a href=\"http:\/\/blake.lt\/message\/86919\">Veikia. Vuolia!<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jau kuris laikas naudojuosi Blake.lt prane\u0161im\u0173 siuntimui gan\u0117tinai globaliu m\u0105stu &#8211; i\u0161 \u010dia jos gali keliauti \u012f Twitter, Facebook, E\u017eio klub\u0105 ir pan. Statusus atnaujinti galima per XMPP (GTalk) protokol\u0105, kas labai pravartu, jeigu nenorite atidaryti Blake.lt puslapio atnaujindami status\u0105. Ta\u010diau man to negana &#8211; tod\u0117l labai susidom\u0117jau Ping.fm si\u016blomomis galimyb\u0117mis &#8211; status\u0105 galite atnaujinti [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[26,47],"tags":[246,243,460,463,244,247,245,177],"class_list":["post-1932","post","type-post","status-publish","format-standard","hentry","category-internetas","category-patarimai","tag-api","tag-blake-lt","tag-internetas","tag-patarimai","tag-php","tag-ping-fm","tag-programavimas","tag-socialiniai-tinklai"],"_links":{"self":[{"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/posts\/1932","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/comments?post=1932"}],"version-history":[{"count":35,"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/posts\/1932\/revisions"}],"predecessor-version":[{"id":3359,"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/posts\/1932\/revisions\/3359"}],"wp:attachment":[{"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/media?parent=1932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/categories?post=1932"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/versme.net\/blog\/wp-json\/wp\/v2\/tags?post=1932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}