Onesignal push API не отправляет уведомления в Drupal 8 - PullRequest
0 голосов
/ 31 октября 2018

Я установил хук сущностей в Drupal 8, чтобы использовать API и отправлять push-уведомления, если создается новый узел в Drupal. У меня есть хук, настроенный в файле OneSignalConfigForm.php модуля интеграции OneSignal для Drupal 8, но когда я создаю новый узел, уведомление не приходит, как ожидалось. Вот код:

namespace Drupal\onesignal_api\Controller; 

use Drupal\Core\Modules\Node\NodeAPI;

class OneSignalApiController extends NodeAPI {   function function hook_onesignal_api_insert(Drupal\Core\Node\NodeAPI $node){
  if($node->is_new) {
    function sendMessage() {
      $content      = array(
          "en" => 'New Node Created'
      );
      $hashes_array = array();
      array_push($hashes_array, array(
          "id" => "like-button",
          "text" => "Like",
          "icon" => "http://i.imgur.com/N8SN8ZS.png",
          "url" => "http://push-test/"
      ));
      array_push($hashes_array, array(
          "id" => "like-button-2",
          "text" => "Like2",
          "icon" => "http://i.imgur.com/N8SN8ZS.png",
          "url" => "http://push-test/"
      ));
      $fields = array(
          'app_id' => "8573c047-12f2-496c-a202-5942951cdda8",
          'include_player_ids' => array("935d651a-a3f7-49eb-9e1b-23d8ca828764","4f536f45-f14f-45d5-aff0-56292a388cec","6f3c36d8-c3c9-4f99-9fde-c61590eea605"),
          'data' => array(
              "foo" => "bar"
          ),
          'contents' => $content,
          'web_buttons' => $hashes_array
      );

      $fields = json_encode($fields);
      print("\nJSON sent:\n");
      print($fields);

      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
      curl_setopt($ch, CURLOPT_HTTPHEADER, array(
          'Content-Type: application/json; charset=utf-8',
          'Authorization: Basic N2E4ODA5YjItNjViNS00YmVkLThjMWItYTljODhhNjI0YjFj'
      ));
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
      curl_setopt($ch, CURLOPT_HEADER, FALSE);
      curl_setopt($ch, CURLOPT_POST, TRUE);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

      $response = curl_exec($ch);
      curl_close($ch);

      return $response;
  }

  $response = sendMessage();
  $return["allresponses"] = $response;
  $return = json_encode($return);

  $data = json_decode($response, true);
  print_r($data);
  $id = $data['id'];
  print_r($id);

  print("\n\nJSON received:\n");
  print($return);
  print("\n");
 }
}

Что-то еще мне не хватает?

...