/**
  * @return SearchMessagesPayload
  */
 protected function createPayload()
 {
     $payload = new SearchMessagesPayload();
     $payload->setQuery($this->input->getArgument('query'));
     $payload->setSort($this->input->getOption('sort'));
     $payload->setSortDir($this->input->getOption('sort-dir'));
     $payload->setPage($this->input->getOption('page'));
     $payload->setCount($this->input->getOption('count'));
     $payload->setHighlight($this->input->getOption('highlight'));
     return $payload;
 }
 /**
  * @return bool True if the request was handled successfully, false otherwise
  */
 public function search($query, $sort = 'timestamp', $sortDir = 'desc', $perPage = 1000)
 {
     $payload = new SearchMessagesPayload();
     $payload->setQuery($query);
     $payload->setPage($perPage);
     $payload->setSort($sort);
     $payload->setSortDir($sortDir);
     $response = $this->apiClient->send($payload);
     if ($response->isOk()) {
         return array_filter(array_map(function (MessageResultItem $message) {
             try {
                 return $this->messageBuilder->getMessage($message);
             } catch (\Exception $e) {
                 return null;
             }
         }, $response->getResult()->getMatches()), function ($message) {
             return null !== $message;
         });
     } else {
         throw new SlackApiException($response->getError());
     }
 }