Ik heb op mijn website een formuliertje gemaakt die automatisch het ingevulde bericht via Google Talk verstuurt naar mijn telefoon.
Een simpele textarea met een submit knop, en via XMPPHP krijg ik keurig een berichtje binnen op mijn telefoon. Werkt vlekkeloos.
Maar, omdat dit dus vlekkeloos werkt, wil ik een level hoger. Kijken of ik ook berichten kan terugsturen, zodat ze verschijnen op mijn webpagina. Als ik dus reageer op mijn telefoon, moet de reactie verschijnen in het venster.
XMPPHP schijnt dat te kunnen doen, maar de example code hiervoor werkt niet. Ik zie dat dit via BOSH werkt, en na een Google zoektocht schijnt Google BOSH (httpbind) niet openbaar te hebben. Is er een andere manier om berichtjes op de webpagina weer te geven?
Dit is de code die werkt om te versturen naar mijn telefoon:
Nu staat er op de XMPPHP site een example die nog steeds XMPP.php (en dus niet BOSH) gebruikt om berichtjes te ontvangen, alleen werkt die code niet. Ik heb encryption toegevoegd aan de code, omdat Google graag via TLS wil praten
Zo werkt dat ook in mijn code.
Echt, pakt hij de useencryption niet. Ik kan alleen niet vinden waarom. Als ik het try { } uit mijn code toevoeg aan de example code, pakt hij de encryption wel en loopt het script ook... ik zie alleen geen berichtjes verschijnen op mijn website...
Iemand verstand van XMPPHP toevallig die mij een duwtje in de juiste richting kan geven? Het script maakt verbinding (zie ik in de verbose log) maar hij haalt geen berichtjes binnen.. is dit tevergeefs omdat Google Talk dit gewoon niet ondersteunt of zit er een foutje in de code?
edit: waarom vind ik toch altijd het foutje als ik mijn topic al heb geplaatst
Er zit een foutje in mijn PHP code.. ik ga er even mee bezig, laat ik wel weten of het gelukt is
Een simpele textarea met een submit knop, en via XMPPHP krijg ik keurig een berichtje binnen op mijn telefoon. Werkt vlekkeloos.
Maar, omdat dit dus vlekkeloos werkt, wil ik een level hoger. Kijken of ik ook berichten kan terugsturen, zodat ze verschijnen op mijn webpagina. Als ik dus reageer op mijn telefoon, moet de reactie verschijnen in het venster.
XMPPHP schijnt dat te kunnen doen, maar de example code hiervoor werkt niet. Ik zie dat dit via BOSH werkt, en na een Google zoektocht schijnt Google BOSH (httpbind) niet openbaar te hebben. Is er een andere manier om berichtjes op de webpagina weer te geven?
Dit is de code die werkt om te versturen naar mijn telefoon:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <?php include("XMPP.php"); $conn = new XMPPHP_XMPP('talk.google.com', 5222, 'USERNAME', 'WACHTWOORD', 'xmpphp', 'gmail.com', $printlog=true); try { $conn->useEncryption(true); $conn->connect(); $conn->processUntil('session_start'); $conn->presence(); $conn->message('GEBRUIKER@gmail.com', ''.$henk.''); $conn->disconnect(); } catch(XMPPHP_Exception $e) { die($e->getMessage()); } echo "Bericht verzonden!\n"; ?> |
Nu staat er op de XMPPHP site een example die nog steeds XMPP.php (en dus niet BOSH) gebruikt om berichtjes te ontvangen, alleen werkt die code niet. Ik heb encryption toegevoegd aan de code, omdat Google graag via TLS wil praten
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| <?php include("xmpp.php"); $conn = new XMPP('talk.google.com', 5222, 'user', 'password', 'xmpphp', 'gmail.com', $printlog=True, $loglevel=LOGGING_INFO); $conn->useEncryption(true); $conn->connect(); while(!$conn->disconnected) { $payloads = $conn->processUntil(array('message', 'presence', 'end_stream', 'session_start')); foreach($payloads as $event) { $pl = $event[1]; switch($event[0]) { case 'message': print "---------------------------------------------------------------------------------\n"; print "Message from: {$pl['from']}\n"; if($pl['subject']) print "Subject: {$pl['subject']}\n"; print $pl['body'] . "\n"; print "---------------------------------------------------------------------------------\n"; $conn->message($pl['from'], $body="Thanks for sending me \"{$pl['body']}\".", $type=$pl['type']); if($pl['body'] == 'quit') $conn->disconnect(); if($pl['body'] == 'break') $conn->send("</end>"); break; case 'presence': print "Presence: {$pl['from']} [{$pl['show']}] {$pl['status']}\n"; break; case 'session_start': $conn->presence($status="Cheese!"); break; } } } ?> |
Echt, pakt hij de useencryption niet. Ik kan alleen niet vinden waarom. Als ik het try { } uit mijn code toevoeg aan de example code, pakt hij de encryption wel en loopt het script ook... ik zie alleen geen berichtjes verschijnen op mijn website...
Iemand verstand van XMPPHP toevallig die mij een duwtje in de juiste richting kan geven? Het script maakt verbinding (zie ik in de verbose log) maar hij haalt geen berichtjes binnen.. is dit tevergeefs omdat Google Talk dit gewoon niet ondersteunt of zit er een foutje in de code?
edit: waarom vind ik toch altijd het foutje als ik mijn topic al heb geplaatst