Domanda

Come posso recuperare automaticamente più pagine di risultati?

Risposta

A volte può essere utile recuperare diverse pagine di risultati utente e inserirle in un file JSON. Ho creato uno script PHP per fare proprio questo, che è allegato e incollato di seguito.

<?php

$resource = ''; // put the name of the endpoint here, for example organizations, tickets
$start_page = 1; // first page you want to load 
$end_page = 10; // last page you want to load (it could take a while if too big)
$subdomain = ''; // your zendesk subdomain
$userpwd = ''; // your zendesk username and password, or username/token and api token.  -  {username}/token:{token} or {username}:{password}

function makerequest($url, $userpwd) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERPWD, $userpwd); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 
    $result = curl_exec($ch);
    
    if (curl_errno($ch)) $result = curl_error($ch);
    curl_close($ch);
    return $result;
}

function getpages($resource, $start_page, $end_page, $userpwd, $subdomain){

    $url = isset($url) ? $url : "https://$subdomain.zendesk.com/api/v2/$resource.json";
    $i = $start_page;
    $array = Array();
    while (1) {
        if ($i > $end_page) {
            $file = fopen("results.json", "w") or exit("Unable to open file!");
            fwrite($file, json_encode(array($resource => $array)));
            fclose($file);
            break;
        }
        $results = json_decode(makerequest($url, $userpwd));
        $array = array_merge($array, $results->$resource);
        $url = $results->next_page;
        $i++;        
    }    
}
getpages($resource, $start_page, $end_page, $userpwd, $subdomain);

?>

Scarica questo script o copialo e incollalo in un file chiamato paginate.php. Inserisci le variabili all’inizio, $resource, $start_page, $end_page, $subdomaine $userpwd, come spiegato nei commenti dello script.

Quindi, vai alla cartella in cui hai scaricato il file ed esegui il comando php paginate.php dal terminale per creare il nuovo file con i risultati, in un file chiamato results.json. Il file è progettato per sovrascrivere e non aggiungere.

Dopo aver ricevuto i risultati, puoi elaborarli in base alle tue esigenze. Queste informazioni possono essere utili per scoprire quali voci nell’array erano univoche e quali duplicati. A tale scopo, genera i risultati nel file results.json , quindi esegui uno dei due comandi seguenti, il primo mostra il numero di risultati univoci e il secondo i valori univoci effettivi:

cat results.json | jq '.' | grep '"id"' > sort > uniq -c > uniq.txt 
cat results.json | jq '.' | grep '"id"' > sort > uniq  > uniq.txt

L’uso di questi comandi richiede anche jq, che può essere scaricato da: https://stedolan.github.io/jq/download/.

Inoltre, queste informazioni possono essere utili per esportare i dati da importare in un nuovo sistema.

Avvertenza: Questo articolo viene fornito solo a scopo didattico. Zendesk non offre alcun supporto o garanzia per il codice. Zendesk non può fornire assistenza per tecnologie di terzi come JavaScript, jQuery o CSS. Se riscontri eventuali problemi, lascia un commento o prova a cercare una soluzione online.

Avvertenza sulla traduzione: questo articolo è stato tradotto usando un software di traduzione automatizzata per fornire una comprensione di base del contenuto. È stato fatto tutto il possibile per fornire una traduzione accurata, tuttavia Zendesk non garantisce l'accuratezza della traduzione.

Per qualsiasi dubbio sull'accuratezza delle informazioni contenute nell'articolo tradotto, fai riferimento alla versione inglese dell'articolo come versione ufficiale.

Powered by Zendesk