2016-08-03 3 views
-1

J'utilise chatbot messager avec script ci-dessous de Mr Nadeem Manzoor's tutorialobjet JSON de chatbot messager en PHP

Quand je reçois objet JSON en ligne 15: $input = json_decode(file_get_contents('php://input'), true); Je veux sauver objet entier comme un texte dans le fichier txt . Comment est-ce possible? J'apprécierai toute aide. Il y a ensemble du script:

<?php 

/* validate verify token needed for setting up web hook */ 
if (isset($_GET['hub_verify_token'])) { 
    if ($_GET['hub_verify_token'] === 'codeandpepper') { 
     echo $_GET['hub_challenge']; 
     return; 
    } else { 
     echo 'Invalid Verify Token'; 
     return; 
    } 
} 

/* receive and send messages */ 
$input = json_decode(file_get_contents('php://input'), true); 
if (isset($input['entry'][0]['messaging'][0]['sender']['id'])) { 

    $sender = $input['entry'][0]['messaging'][0]['sender']['id']; //sender facebook id 
    $message = $input['entry'][0]['messaging'][0]['message']['text']; //text that user sent 

    $url = 'https://graph.facebook.com/v2.6/me/messages?access_token=EAAQyP47lxSQBAPQSXyHhQ7y0d0MTQgTn4xaFEDEu5yrc4qo4t0FWbHZAfT7TFQq3HYZCUGVcTPZAaN2ZBNrUShl4Hr5qQd8cqBu0mfB0Al7NZAWjIjQC9UqXQLU5E9IsZBaQDIXglMcEBqNUyiidGJWRPPfvCmtg4vy2UgUhU8SQZDZD'; 

    /*initialize curl*/ 
    $ch = curl_init($url); 
    /*prepare response*/ 
    $jsonData = '{ 
    "recipient":{ 
     "id":"' . $sender . '" 
     }, 
     "message":{ 
      "text":"You said, ' . $message . '" 
     } 
    }'; 
    /* curl setting to send a json post data */ 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
    if (!empty($message)) { 
     $result = curl_exec($ch); // user will get the message 
    } 
} 

?> 
+0

Clarifiez s'il vous plaît: Vous voulez enregistrer la chaîne JSON dans un fichier, ou le tableau résultant de 'json_decode()'? Les deux sont assez simples – RiggsFolly

+0

Je veux chaîne JSON, pas de tableau fait à partir de lui, mais si c'est simple, je voudrais voir les deux exemples :) –

Répondre

1

Si vous souhaitez enregistrer la chaîne JSON, et ce serait le plus simple et plus propre chose à faire, vous devrez briser cette ligne et puis juste file_put_contents() la chaîne à un nom du fichier

/* receive and send messages */ 
$input = json_decode(file_get_contents('php://input'), true); 

Dans

/* receive and send messages */ 
$json_str = file_get_contents('php://input'); 
file_put_contents('path/to/file.txt', $json_str); 
$input = json_decode($json_str, true); 

// and off you go as normal 
+0

merci, mais ça ne fonctionne pas, je pense que c'est parce que je veux enregistrer à un fichier qui est sur le serveur, j'ai 'Attention: file_put_contents ('chemin': échec d'ouvrir le flux: Autorisation refusée dans 'path' sur la ligne 17' –

+0

Le nom de fichier que j'ai utilisé' 'chemin/vers/fichier.txt'' était juste un exemple.Vous devez remplacer cela avec un chemin d'accès valide et nom de fichier ou votre serveur et vérifiez que votre compte d'utilisateur de serveurs a les droits corrects pour écrire dans ce répertoire – RiggsFolly

+0

chemin est correct, la chose était que je dois changer les autorisations de fichiers dans filezilla - ça fonctionne maintenant, merci –