2017-03-28 10 views
0

메신저 this example을 사용하고 사용자 지정 매개 변수를 사용하여 특정 메시지 만 가져옵니다. 내 문제는 maxResults가 작동하지 않으며 특정 도메인에서 메시지를 제외하는 방법을 찾을 수 없다는 것입니다. 이것은 내 사용자 지정 기능입니다 :메시지 목록 필터링

public function listMessages($userId) { 
    $client= $this->getClient(); 
    $service = new Google_Service_Gmail($client); 
    $pageToken = NULL; 
    $messages = array(); 
    $opt_param = array(
     'maxResults' => 20, 
     'q'=>'!in:chats' 
     ); 
    do { 
     try { 
      if($pageToken) { 
       $opt_param['pageToken'] = $pageToken; 
      }  
      $messagesResponse = $service->users_messages->listUsersMessages($userId, $opt_param); 
      if ($messagesResponse->getMessages()) { 
       $messages = array_merge($messages, $messagesResponse->getMessages()); 
       $pageToken = $messagesResponse->getNextPageToken(); 
      } 
     } catch (Exception $e) { 
      print 'An error occurred: ' . $e->getMessage(); 
     } 
    } while ($pageToken); 

    foreach ($messages as $message) { 
     print 'Message with ID: ' . $message->getId() . '<br/>'; 
    } 
    return $messages; 
} 

메신저 아직도 MAXROWS이 페이징에 사용되는

+0

행 아웃 메시지를 받고 메시지와 메신저로 저장하려고 메신저 그냥 유일한 필터가 나를 위해 노력하고있다라고. 내 문제는 maxResult가 작동하지 않고 "@ example.com"과 같은 도메인에서 메시지를 제외하는 방법을 찾을 수 없다는 것입니다. – MidouCloud

+0

'[email protected]'시도 했습니까? 나는 여전히 최대 행이 그것과 관련이 있으며 왜 그것이 작동하지 않는지 이해하지 못한다. Maxrows는 요청이 리턴하는 행의 수에 불과합니다. – DaImTo

+0

모든 행을 리턴하므로 maxrows가 작동하지 않습니다. 내가 말한대로 맥스 로우가 작동하지 않는다는 메시지가 모두 나왔다. '[email protected]'은 아무 것도하지 않습니다. – MidouCloud

답변

0

(행 아웃 메시지를 제외하고,이 작업에만 필터입니다) 내 모든 메시지를 받고. 결과가 1000 개의 행을 반환하고 최대 행을 100으로 설정하면 모든 결과를 얻기 위해 nextpagetoken을 10 번 넘겨 야합니다.

maxrows를 20으로 설정하면 min maxrows가 100과 비슷하다고 생각됩니다. (이것이 대부분의 Google API에서 기본이라고 생각합니다.) 요청에 의해 생성 된 행 수가 100 개 미만인 경우가 아니라면 100 개 미만의 행을 얻지 못할 것입니다.

내가 필터를 넣어 해달라고하면 'q'=>'[email protected]'