2015-04-17 12 views
8

Sto usando il codice qui sotto per trovare recensioni di Google per proprietà. Quello che sto cercando di fare è, sto recuperando la recensione per la proprietà, quindi la confronterò con la vecchia recensione di quella proprietà (che è nel DB). Se è maggiore della proprietà del sistema, invia un'email.Recensioni in API Google

Questo file viene eseguito ogni ora (come un file cron) e abilito la fatturazione nell'API di Google, quindi il limite massimo è 1,50,000.

Ma per qualche motivo API non restituisce il conteggio esatto delle recensioni. Ad esempio:
Eseguo questo file per la proprietà con 4 recensioni, ma l'API restituisce 0 per 2 o 3 volte, quindi dopo qualche tempo restituisce 4 recensioni.

Non so il motivo. Ho anche notato che possiamo vedere le recensioni sulla pagina di ricerca di google e su Google+. Puoi scrivere recensioni in più luoghi, come in Google+ e in Google Map.

E per controllare le recensioni, sto usando l'url di google plus. Quindi è possibile che la recensione esista, ma in un'altra area (come nella pagina di ricerca di Google ma non in Google+)?

/* call api to get review count of Google */ 
$url = "https://maps.googleapis.com/maps/api/place/details/json?"; 
$params = array(
    "placeid" => $google_place_id, 
    "key" => $google_api_key 
); 
$url .= http_build_query($params); 
$resjson = file_get_contents($url); 
$msg = $resjson; 
Yii::log($msg,'info', 'application'); 
$resjson = json_decode($resjson,true); 

$review_count = $resjson['result']['user_ratings_total']=='' ? 0 : $resjson['result']['user_ratings_total']; 
/* If review is greater than 0 then check old review and if it's not same then send email */ 
if($review_count>0) 
{ 
    if(sizeof($ressql)>0) 
    { 
     /* if google plus review is greater then system's google+ review then send email */ 
     if($review_count>trim($ressql[0]['google_plus_review'])) 
     { 
      $this->send_googleplusmail($prop_id); 
      $msg = "Google+ Review for property id (Mail Sent):".$prop_id." , New Review:$review_count, Old Review: ".$ressql[0]['google_plus_review']; 
      Yii::log($msg,'info', 'application'); 
     } 
    } 
} 

$sql=" INSERT INTO tbl_review_alert (propertyid, google_plus_review) VALUES "; 
$sql.="('{$prop_id}','{$review_count}')"; 
$sql.=" ON DUPLICATE KEY UPDATE propertyid= {$prop_id},google_plus_review= {$review_count}"; 
$this->insert_review($sql); 

mia domanda è:
(1) E 'possibile che la revisione esiste, ma in un'altra zona (come nella pagina di ricerca di Google, ma non in Google+)? Se sì, allora in questo caso posso ottenere l'URL dove viene pubblicata la recensione?
(2) Tutte le recensioni sono sincronizzate su Google?
(3) O sto facendo qualcosa di sbagliato nel mio codice?

+1

potresti aggiornare il tuo codice con l'ID del luogo che ha numero incoerente di recensioni, in modo che possiamo ricreare? – Alexey

+0

@Alexey, l'ID del luogo google è dinamico, il problema sopra riportato sta accadendo per più proprietà. exa: 'https: // plus.google.com/101511264527346460079/about' e' https://www.google.co.in/webhp?ie=utf-8&oe=utf-8&gws_rd=cr&ei=clA-VeieGIORuQSj54DwCw#q = Il + Kensington + 665 + Washington + St + Boston% 2C + MA + 02111' puoi vedere che su google + non c'è recensione.ma nella ricerca su google, puoi vedere che ci sono 43 recensioni Google per questa proprietà. – DS9

+0

Solo una nota a margine, l'API di Google Places può mostrare solo fino a 5 recensioni come da documento (https://developers.google.com/places/webservice/details), recensioni [] un array JSON fino a cinque recensioni. – ilpaijin

risposta

5

Penso di aver individuato il problema.

Il motivo per cui non è possibile visualizzare le recensioni esistenti su quel luogo è che sembra che ci siano 2 account Google + per lo stesso; L'unica differenza (almeno il primo che ho notato) è nel codice di avviamento postale, MA 02116 vs MA 02111.

Date un'occhiata a:

https://plus.google.com/101511264527346460079/about

e

https://plus.google.com/105917345931375838754/about

Come si può vedere, nel secondo ci sono le stesse recensioni che vedete in il search page

E inserendo l'indirizzo "The Kensington, 665 Washington St, Boston, MA 02116, Stati Uniti" nello the finder, ottengo un placeid diverso dall'altro.

Ora utilizzando questo ultimo in

$params = array(
    "placeid" => $google_place_id, // the new placeid here 
    "key" => $google_api_key 
); 

posso quindi ottenere le 5 recensioni nella risposta JSON Luogo API.

+0

grazie mille. solo curioso, come puoi scoprire che ci sono due account Google +? – DS9

+0

Prego. Comunque niente di speciale, ho appena giocato e l'ho notato. – ilpaijin