/**
  * @param array $registrationIds
  * @param $collapseKey
  * @param array $data
  * @param int $ttl
  * @return array
  */
 public function sendMessage(array $registrationIds, $collapseKey, array $data = [], $ttl = 604800)
 {
     $result = ['success' => 0, 'failure' => 0];
     $this->registrationIds = $registrationIds;
     $this->setScope(ScopesEnum::GOOGLE_CLOUD_MESSAGING);
     $request = new Model\Request($registrationIds, $collapseKey, $data, $ttl);
     $request->setDryRun($this->isDebug);
     $options = ['headers' => ['Content-Type' => 'application/json', 'Authorization' => 'key=' . $this->authorizationKey], 'body' => json_encode($request->toArray())];
     try {
         $response = $this->post(ScopesEnum::GOOGLE_CLOUD_MESSAGING, $options);
         $result = $this->handleResponse($response, $request);
     } catch (ClientException $e) {
         $response = $e->getResponse();
         $request = $e->getRequest();
         $context = [];
         $context['request']['body'] = $request->getBody();
         $context['response'] = $response->json();
         $this->callback(EventsEnum::ON_CLIENT_EXCEPTION, [$e, $context]);
     }
     return $result;
 }
 /**
  * @param Request $request
  * @return array
  */
 private function prepareBaseContext(Request $request)
 {
     $context = [];
     $data = $request->getData();
     $context['data'] = var_export($data, true);
     foreach (['hostUid', 'login'] as $field) {
         if (isset($data[$field])) {
             $context[$field] = $data[$field];
         }
     }
     return $context;
 }