Задать вопрос

Как не отправлять Notification в телеграм, если у пользователя не установлен chat_id?

Для отправки уведомлений в телеграм использую: laravel-notification-channels/telegram.

Передаю коллекцию пользователей, которым нужно отправить уведомление:
public function notify(array $message)
    {
      try {
        Notification::send($this->getUsers(), new PriceEvent($message));
      } catch (\Exception $e) {
        return $e->getMessage();
      }
    }

Уведомления добавляются в базу (показываются на сайте) и отправляются в телеграм:
/**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toTelegram($notifiable)
    {
        $message = "";
        // Отправляем уведомление только тем пользователям,которые включили уведомления в Telegram

        if ($notifiable->notify_settings->telegram_enabled) {
          return TelegramMessage::create()->to($notifiable->telegram_id)->content($message);
        }

    }

В коде выше делаю проверку, включены ли у пользователя уведомления в Telegram или нет, но к сожалению, такой способ выводит ошибку, при попытке отправить уведомления пользователю, у которого есть chat_id, и пользователю, у которого его нет:
"Telegram notification chat ID was not provided. Please refer usage docs."

Нашел похожую проблему на гитхабе (и еще), но особо не понятно как же она была решена. Каким образом можно правильно определить, можно отправлять этому человеку сообщение ДАННЫМ МЕТОДОМ (через телеграм) или нет?
  • Вопрос задан
  • 603 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0example
@0example Автор вопроса
Возможно кому-нибудь, когда-нибудь пригодится. Решил проблему так:

В созданном Notification, в методе, в котором описывается способы доставки письма, прописал следующее:

/**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return $notifiable->notify_settings->telegram_enabled ? ['database',TelegramChannel::class] : ['database'];
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы