如何将laravel [webhook]通知与按需通知一起使用?

时间:2019-08-19 19:15:39

标签: laravel

我设计了一个系统,用户可以添加多个通知通道,而webhook就是其中之一。我可以将其他通知驱动程序与按需通知一起使用,但是webhook无法正常工作。

例如,当我创建这样的通知时:

Notification::route('slack', 'my slack webhook url')->notify(new MyNotification());

它有效,它向我的闲暇发送一条消息。

但是当我尝试使用webhook时:

Notification::route('webhook', 'my webhook url')->notify(new MyNotification());

它没有发送任何发帖请求,我无法弄清楚。

这是软件包(https://github.com/laravel-notification-channels/webhook)中的代码。我已经检查过,$url始终为空,但是在松弛时,$url不为空。

    /**
     * Send the given notification.
     *
     * @param mixed $notifiable
     * @param \Illuminate\Notifications\Notification $notification
     *
     * @throws \NotificationChannels\Webhook\Exceptions\CouldNotSendNotification
     */
    public function send($notifiable, Notification $notification)
    {
        if (! $url = $notifiable->routeNotificationFor('Webhook')) {
            return;
        }
        $webhookData = $notification->toWebhook($notifiable)->toArray();
        $response = $this->client->post($url, [
            'body' => json_encode(Arr::get($webhookData, 'data')),
            'verify' => false,
            'headers' => Arr::get($webhookData, 'headers'),
        ]);
        if ($response->getStatusCode() >= 300 || $response->getStatusCode() < 200) {
            throw CouldNotSendNotification::serviceRespondedWithAnError($response);
        }
    }

来自松弛通知通道(https://github.com/laravel/slack-notification-channel)的这段代码令人惊讶地将消息发送到我的松弛处,但是该代码与webhook软件包的代码相同。

/**
     * Send the given notification.
     *
     * @param  mixed  $notifiable
     * @param  \Illuminate\Notifications\Notification  $notification
     * @return \Psr\Http\Message\ResponseInterface|null
     */
    public function send($notifiable, Notification $notification)
    {
        if (!$url = $notifiable->routeNotificationFor('slack', $notification)) {
            return;
        }

        return $this->http->post($url, $this->buildJsonPayload(
            $notification->toSlack($notifiable)
        ));
    }

那怎么可能?我想念什么吗?为什么松散有效,但Webhook无效?

0 个答案:

没有答案