Difference between revisions of "Jabber Send Message"
m (Reverted edits by OrcnaBocac (Talk) to last version by PhilippeTeuwen) |
m (Protected "Jabber Send Message": Excessive spamming ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))) |
(No difference)
|
Revision as of 19:18, 6 September 2009
See also sendxmpp in Alert notifications
Envoi de messages Jabber via une page PHP
Prérequis: le fichier class.jabber.php doit accompagner le script PHP sur le serveur.
Ce script PHP est utilisable de deux façons côté client:
Soit interactivement soit dans un script.
Le script jabber_sendmsg.php:
Attention, le copier depuis le source de la page!!
<?php /* jabber_sendmsg 0.0.2 http://wiki.teuwen.org/index.php/JabberSendMessage/ Copyright (C) 2003 Philippe Teuwen <phil_at_teuwen.org> License: GPLv3 or later ChangeLog 0.0.2 Handle delivery error, add UTF8 support & more resistant to input 0.0.1 Initial release */ require("class.jabber.php"); $JABBER = new Jabber; $JABBER->server = "jabber.reseaucitoyen.be"; $JABBER->port = 5222; $JABBER->username = "rcbot"; $JABBER->password = "xxxxxx"; $JABBER->resource = "ClassJabberPHP"; //For debug purpose //$JABBER->enable_logging = TRUE; //$JABBER->log_filename = '/var/log/jabber/rcbot.txt'; function HtmlBegin() { print "<html>"; print " <head>"; print " <title>Envoi de messages Jabber</title>"; print " </head>"; print " <body style=\"color: rgb(0, 0, 0); background-color: rgb(255, 255, 204);\">";
print "
"; } function HtmlForm() { print "
";
print "<form action=\"jabber_sendmsg.php\" method=\"POST\">";
print "
"; print ""; print ""; print ""; print ""; print "DE: | <input type=\"text\" name=\"from\" value=\"\"> |
A: | <input type=\"text\" name=\"jid\" value=\"\"> |
MSG: | <textarea rows=\"5\" name=\"body\" cols=\"20\"></TEXTAREA> |
<input type=\"hidden\" name=\"form\" value=\"true\"><input type=\"submit\" value=\"Envoi\"> |
";
print "</form>";
print "
"; // print ""; // print "ps: évitez les caractères accentués"; // print ""; } function HtmlEnd() { print "
";
print " </body>"; print "</html>"; } if( $form != 'true' && $jid == && $body == ) { HtmlBegin(); HtmlForm(); HtmlEnd(); die(); } if( $jid == || $body == ) { // this is a bad thing if( $form != 'true' ) { print "ERROR: jid or body missing\n"; die(); } HtmlBegin(); print "Erreur: Dites-moi au moins à qui et ce que je suis sensé envoyer!
"; HtmlForm(); HtmlEnd(); die(); } $jid = array_shift(explode("@$JABBER->server",$jid)); if( preg_match("/@/",$jid) ) { if( $form != 'true' ) { print "ERROR: accept only local recipients\n"; die(); } HtmlBegin(); print "Erreur: Je refuse d'envoyer qqch à des utilisateurs autres que @$JABBER->server!
"; HtmlForm(); HtmlEnd(); die(); } if( preg_match("/[^a-zA-Z0-9_.-]/",$jid) ) { if( $form != 'true' ) { print "ERROR: malformed recipient\n"; die(); } HtmlBegin(); print "Erreur: Le nom du récipiendaire semble contenir des caractères non autoris& HtmlForm(); HtmlEnd(); die(); } $jid.="@$JABBER->server"; $message = "Message "; if( $from != ) { $from = utf8_encode(htmlspecialchars($from)); $message .= "soi-disant de ".$from.":\n"; } else $message .= "anonyme:\n"; $message .= utf8_encode(htmlspecialchars($body)); $JABBER->Connect() or die("ERROR: couldn't connect!\n"); $JABBER->SendAuth() or die("ERROR: couldn't authenticate!\n"); $return = $JABBER->SendMessage($jid, "normal", NULL, array( // body, thread... whatever "body" => $message ) ); $JABBER->Disconnect(); if( $form != 'true' ) { if( $return == TRUE ) print "SUCCESS\n"; else print "ERROR: couldn't send message!\n"; die(); } HtmlBegin(); if( $return == TRUE ) print "Message envoyé!
"; else print "Erreur: Je n'ai pu envoyer le message\n"; HtmlForm(); HtmlEnd(); ?>
Exemple de code HTML
à incorporer à une page web pour une utilisation interactive
<a href="" onClick= "javascript:window.open( 'utils/jabber_sendmsg.php', 'SendMsgs', 'width=300,height=300,menubar=no,scrollable=no,resizable=yes,left=0,top=0,screenX=0,screenY=0' )"> Envoi de messages Jabber </a>
cf http://jabber.reseaucitoyen.be lien "Envoi de messages Jabber"
Exemple de requête à incorporer dans un script
wget -O - -q "http://jabber.reseaucitoyen.be/utils/jabber_sendmsg.php?jid=phil&body=alerte"
En cas d'utilisation depuis un script, il y a deux types de messages de retour possible: "SUCCESS" et "ERROR:..."
Utilisateur robot
Nous avons vu qu'il est nécessaire qu'un compte existe pour envoyer les messages, "rcbot" dans notre exemple.
Il peut être utile de lui donner une règle de filtre telle qu'elle prévienne les malheureux qui tenteraient de répondre aux messages qu'il envoie.
<query xmlns='jabber:iq:filter' xdbns='jabber:iq:filter'> <rule name='Refuse all'> <reply>Je ne suis qu'un robot, il est vain de vouloir parler avec moi! </reply> <unavailable/> </rule> </query>