par
mctarek » 14 janv. 2011, 14:49
Voilà qui est clair et fonctionnel !
Je vais pouvoir rebondir sur le vif du sujet sur un script intéressant et présent sur le site
http://ssm2017.free.fr/index.php/Techni ... abots.html
Pour l'utiliser, il faut activer php_curl [extension=php_curl.dll] avec bug connu sur php 5.2.14,
connaître l'usage de sa fonction sur
http://fr.php.net/manual/fr/function.curl-exec.php
connaître simplexml_load_string()
et enfin avoir un bot en ligne pour converser (flux RSS). Ce qui est mon cas.
voici le code adapté à mon bot
<?php
// definition des variables
$uri = "http://www.pandorabots.com/pandora/talk-xml";
$botid = 'bb9d8db85e36d4b9'; // ce bot s'appelle ssm2017 et il me sert de test ( ne vous attendez pas à ce qu'il vous parle de shakespeare )
$input = 'salut';
$custid = '';
// construction de la chaine à poster
$post = "botid=$botid&input=$input&custid=$custid";
// ouverture d'un "buffer" ( mettre les donnees en cache )
ob_start();
// definition des options de curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri); // uri où aller
// curl_setopt($ch, CURLOPT_HEADER, 0); // ajout
curl_setopt($ch, CURLOPT_TIMEOUT, 9); // arret au bout de 9 secondes si aucune reponse
curl_setopt($ch, CURLOPT_POST, TRUE); // oui monsieur, on envoie des donnees en POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // les donnees à envoyer
curl_setopt($ch, CURLOPT_POSTFIELDSIZE, strlen($post)); // la quantite de donnees à envoyer ( optionnel )
// execution de curl
curl_exec($ch);
// recuperation du contenu du cache
$string = ob_get_contents();
// affichage du message d'erreur si il y en a un
if (curl_errno($ch)) {
echo "Error: " . curl_error($ch);
return; // on se casse, on a plus rien à faire ici, ca deconne :)
}
// arret de curl
curl_close($ch);
// vidage du cache
ob_end_clean();
// convertion du resultat en objet xml
$xml = simplexml_load_string($string);
// utilisation d'une requete "xpath" pour "pointer" l'element "that"
$result = $xml->xpath('/result/that');
// balayage des reponses
while(list( , $node) = each($result)) {
// affichage du/des resultat(s)
echo 'that = ',$node,"\n";
}
?>
Le script me donne le message d'erreur : Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 2: parser error : Extra content at the end of the document in F:\Program Files\EasyPHP5.2.10\www\bot.php on line 42
Le bot est fonctionnel sur pandorabots, et l'auteur dit obtenir un bon résultat avec mon bot. I am lost !
Voilà qui est clair et fonctionnel !
Je vais pouvoir rebondir sur le vif du sujet sur un script intéressant et présent sur le site [url]http://ssm2017.free.fr/index.php/Technique/Scripts/pandorabots.html[/url]
Pour l'utiliser, il faut activer php_curl [extension=php_curl.dll] avec bug connu sur php 5.2.14,
connaître l'usage de sa fonction sur http://fr.php.net/manual/fr/function.curl-exec.php
connaître simplexml_load_string()
et enfin avoir un bot en ligne pour converser (flux RSS). Ce qui est mon cas.
voici le code adapté à mon bot
[php]<?php
// definition des variables
$uri = "http://www.pandorabots.com/pandora/talk-xml";
$botid = 'bb9d8db85e36d4b9'; // ce bot s'appelle ssm2017 et il me sert de test ( ne vous attendez pas à ce qu'il vous parle de shakespeare )
$input = 'salut';
$custid = '';
// construction de la chaine à poster
$post = "botid=$botid&input=$input&custid=$custid";
// ouverture d'un "buffer" ( mettre les donnees en cache )
ob_start();
// definition des options de curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri); // uri où aller
// curl_setopt($ch, CURLOPT_HEADER, 0); // ajout
curl_setopt($ch, CURLOPT_TIMEOUT, 9); // arret au bout de 9 secondes si aucune reponse
curl_setopt($ch, CURLOPT_POST, TRUE); // oui monsieur, on envoie des donnees en POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // les donnees à envoyer
curl_setopt($ch, CURLOPT_POSTFIELDSIZE, strlen($post)); // la quantite de donnees à envoyer ( optionnel )
// execution de curl
curl_exec($ch);
// recuperation du contenu du cache
$string = ob_get_contents();
// affichage du message d'erreur si il y en a un
if (curl_errno($ch)) {
echo "Error: " . curl_error($ch);
return; // on se casse, on a plus rien à faire ici, ca deconne :)
}
// arret de curl
curl_close($ch);
// vidage du cache
ob_end_clean();
// convertion du resultat en objet xml
$xml = simplexml_load_string($string);
// utilisation d'une requete "xpath" pour "pointer" l'element "that"
$result = $xml->xpath('/result/that');
// balayage des reponses
while(list( , $node) = each($result)) {
// affichage du/des resultat(s)
echo 'that = ',$node,"\n";
}
?>[/php]
Le script me donne le message d'erreur : Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 2: parser error : Extra content at the end of the document in F:\Program Files\EasyPHP5.2.10\www\bot.php on line 42
Le bot est fonctionnel sur pandorabots, et l'auteur dit obtenir un bon résultat avec mon bot. I am lost !