Bonjour à tous, c'est ma première fois que je créé un poste
But du tuto : expliquer le moyen d'envoyer des messages PUSH (gratuit) sur un téléphone android à la place des sms (payant)
Ouvrir un compte sur le site "https://notifrier.appspot.com" ou un autre fournisseur de ce genre il en existe d'autre, par contre une adresse Gmail est nécéssaire.
dans profil créer une source
installer l'application Notifry sur votre smartphone (juste pour info le mien est un HTC Wildfire en froyo 2.2.1)
une fois cette source créée, une key vous sera fournie notez la
Activer Curl dans "Panneau de configuration" -> "Services web" -> "Parametres PHP" - > "Selectionner PHP Extension" -> cocher curl
coller le contenu du fichier ci dessous dans un fichier (push.php) dans un répertoire du dossier web (il faut le serveur web activé)
<?
/**
* Notifry - PHP server push script.
*
* Copyright 2011 Daniel Foote
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*
* This script sends the notification to the backend server for the given source.
* Return codes:
* 0 - Success
* 1 - HTTP error
* 2 - Backend error
*/
// Configuration.
$fp = fopen("push.txt","a"); // ouverture du fichier en écriture
fputs($fp, "--------------------------------------------------------------------------------------------------------------------"."\r\n" );
fputs($fp, "remote address".$_SERVER['REMOTE_ADDR']."\r\n" );
fputs($fp, "remote address".gethostbyaddr($_SERVER['REMOTE_ADDR'])."\r\n" );
$BACKEND = 'https://notifrier.appspot.com/notifry';
if( !isset($_GET["titre"]) || !isset($_GET["message"]))
{
fputs($fp, "erreur manque param Get \r\n");
fclose($fp);
exit();
}
// Prepare our parameters.
$params = array();
$params['source'] = "mettre la KEY FOURNIE";
$params['message'] = $_GET["message"];
$params['title'] = $_GET["titre"];
$params['format'] = 'json';
//paramètre optionel
if( isset($_GET["url"]))
{
$params['url'] = $_GET["url"];
}
// Encode the parameters for transport.
$encodedParameters = array();
foreach( $params as $key => $value )
{
$encodedParameters[] = $key . "=" . urlencode($value);
fputs($fp, $key . "=" . $value."\r\n" );
}
$body = implode("&", $encodedParameters);
// Using CURL, send the request to the server.
$c = curl_init($BACKEND);
//pour supprimer les messages erreur de certificat de curl
curl_setopt ($c, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($c, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $body);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 20);
$page = curl_exec($c);
// Parse the result.
if( $page !== FALSE )
{
// The result is JSON encoded.
$decoded = json_decode($page, TRUE);
if( $decoded === FALSE )
{
fputs($fp, 'Failed to decode server response: '.$page."\r\n");
}
else
{
if( isset($decoded['error']) )
{
fputs($fp,'Server did not accept our message: '.$decoded["error"]."\r\n");
curl_close($c);
exit(2);
}
else
{
fputs($fp,'Success! Message size '.$decoded["size"]."\r\n");
}
}
}
else
{
fputs($fp,"HTTP error: ".curl_error($c)."\r\n");
curl_close($c);
exit(1);
}
curl_close($c);
fclose($fp);
?>
Pour info ce code provient du site énoncé ci dessus dans l'onglet API puis "standalone scripts" (qui provient de chez google)
maintenant il faut activer la notification SMS, créer un fournisseur de service SMS
cela vous modifiera le fichier /usr/syno/etc/synosms.conf
[synosms]
phone1code="33"
phone2code=""
phone1num="VOTRE NUM DE TEL"
passwd=""
phone2num=""
interval="0"
user="Diskstation"
server="local"
sms_enable="yes"
[clickatell]
port="443"
needssl="yes"
sepchar="+"
template="https://api.clickatell.com/http/sendmsg?user=@@USER@@&password=@@PASS@@&api_id=3148203&to=@@PHONE@@&text=@@TEXT@@"
url="https://api.clickatell.com/http/sendmsg?user=TestUser&password=TestPassword&api_id=3148203&to=886123456789&text=Hello+world"
[local]
port=""
needssl="no"
sepchar=" "
template="http://localhost/cam/push.php?message=@@TEXT@@&titre=@@USER@@&url=@@PHONE@@&pass=@@PASS@@"
url="http://localhost/cam/push.php?message=Hellow World&titre=1&url=2&pass=3"
Ci dessus dans [local] dans url = "le chemin réel ou est placé push.php?suivi des paramètre attendus", pass=3 ne sert à rien mais le DSM a besoin de 4 paramètres pour fonctionner
bien mettre Hello World dans l'url avec le parametre du contenu message
En fait lorsque vous utilisez l'interface graphique du DSM pour créer un nouveau fournisseur il faut collé : urlensuite le DSM vous demande de faire correpondre les paramètres de push.php avec ceux des sms
Ci-dessus template, le DSM fera correspondre
TEXT avec message
USER avec titre
PHONE avec url
PASS avec pass mais bon celui ci ne sert à rien
Voilà j'espère que c'est clair et que cela vous aidera pour être informé par message PUSH de l'état de votre petit Syno
Pour info cette technique fonctionne aussi avec "Surveillance Station"
Pouf pas facile d'écrite un POST
Cliquer ici pour voir le tutoriel