PHPackages                             blood72/laravel-jandi - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. blood72/laravel-jandi

AbandonedArchivedLibrary

blood72/laravel-jandi
=====================

Jandi notification for Laravel

v1.0.4(5y ago)450MITPHPPHP ^7.2

Since Jun 15Pushed 5y agoCompare

[ Source](https://github.com/blood72/laravel-jandi)[ Packagist](https://packagist.org/packages/blood72/laravel-jandi)[ RSS](/packages/blood72-laravel-jandi/feed)WikiDiscussions master Synced yesterday

READMEChangelog (5)Dependencies (5)Versions (6)Used By (0)

JANDI notification channel for Laravel 5, 6, 7
==============================================

[](#jandi-notification-channel-for-laravel-5-6-7)

[JANDI](https://www.jandi.com) is business collaboration messenger tool made by Toss Lab, Inc.
This package is non-official and only provides a notification channel for JANDI incoming webhook connection.

Index
-----

[](#index)

- [Requirement](#requirement)
- [Installation](#installation)
- [Configuration](#configuration)
- [Usage](#usage)
- [Reference](#reference)
- [License](#license)

Requirement
-----------

[](#requirement)

- PHP &gt;= 7.2
- Laravel 5.8+, 6.\* or 7.\*

Installation
------------

[](#installation)

Install using the composer.

```
composer require blood72/laravel-jandi
```

**Additional work required if Auto-Discovery is disabled.**

add the service provider to the `providers` array in `config/app.php`.

```
'providers' => [
    // ...
    Blood72\Jandi\JandiServiceProvider::class,
],
```

also add this to the `aliases` array to use JANDI notifier.

```
'aliases' => [
    // ...
    'Jandi' => \Blood72\Jandi\JandiFacade::class,
],
```

if you don't want to use JANDI notifier, follow the instructions below.

1. add disable auto-discovery code in `composer.json````
    {
        "extra": {
            "laravel": {
                "dont-discover": [
                    "blood72/laravel-jandi"
                ]
            }
        }
    }
    ```
2. add this code in register() method in your service provider. ```
    use Blood72\Jandi\Notifications\Channels\JandiWebhookChannel;
    use GuzzleHttp\Client as HttpClient;
    use Illuminate\Notifications\ChannelManager;
    use Illuminate\Support\Facades\Notification;

    // ...

    Notification::resolved(function (ChannelManager $service) {
        $service->extend('jandi', function ($app) {
            return new JandiWebhookChannel(new HttpClient);
        });
    });
    ```

Configuration
-------------

[](#configuration)

By default, this package supports only one webhook url.

```
JANDI_WEBHOOK_URL=https://wh.jandi.com/connect-api/webhook/{team_id}/{payload_token}
```

you can publish a configuration file.

```
php artisan vendor:publish --provider="Blood72\Jandi\JandiServiceProvider"
```

and you can customize like this. in this case, a request will be sent to each URL.

```
'jandi_webhook_url' => [
    env('JANDI_WEBHOOK_URL_1'),
    env('JANDI_WEBHOOK_URL_2'),
    // ... and so all
],
```

Usage
-----

[](#usage)

- #### Message

    [](#message)

    - to(): set a email for the Jandi team message (optional).

        ```
        $message = (new JandiMessage)->to('test@example.org');
        ```
    - content(): set the content of the Jandi message.

        ```
        $message = (new JandiMessage)->content('hello test');
        ```

        create new object with content; \_\_construct(), create()

        ```
        $message = new JandiMessage('hello test');
        $message = JandiMessage::create('hello test');
        ```
    - color(): set the color of the attachment section.

        ```
        $message->color('#000000');
        $message->color('#30fe2a');
        ```

        it supports bootstrap 4 color scheme.

        ```
        $message->primary();
        $message->secondary();
        $message->success();
        $message->danger();
        $message->warning();
        $message->info();
        $message->light();
        $message->dark();
        ```
    - attachment(): define an attachment for the message. you can add multiple.

        ```
        $message->attachment(function ($attachment) {
            $attachment->title('attachment-title');
            $attachment->description('attachment-description');
            $attachment->image('attachment-image-url');
        });

        $message->attachment(function ($attachment) {
            $attachment->title('attachment-title');
            $attachment->description('attachment-description');
            $attachment->image('attachment-image-url');
        })->attachment(function ($attachment) {
            $attachment->title('attachment-another-title');
            $attachment->description('attachment-another-description');
            $attachment->image('attachment-another-image-url');
        });
        ```
- #### Notification

    [](#notification)

    - notification override
        you can use an abstract class defined. it requires definition of toJandi() method. ```
        use Blood72\Jandi\Notifications\JandiNotification;

        class JandiExampleNotification extends JandiNotification
        {
            public function toJandi($notifiable/* = null*/): JandiMessage
            {
                return (new JandiMessage)->to('test@example.org')->content('hello test');
            }
        }
        ```
    - send notification
        - by anonymous notifiable ```
            use Illuminate\Notifications\AnonymousNotifiable;
            use Illuminate\Support\Facades\Notification;

            Notification::send(new AnonymousNotifiable, new JandiExampleNotification
            ```
        - by notifiable model
            to use this, `routeNotificationForJandi()` must be defined. ```
            use Illuminate\Database\Eloquent\Model;
            use Illuminate\Notifications\Notifiable;

            class ExampleNotifiableModel extends Model
            {
                use Notifiable;

                public function routeNotificationForJandi()
                {
                    return 'hello routeNotificationForJandi() test';
                }
            }
            ```

            ```
            $notifiable = new ExampleNotifiableModel;

            $notification->send($notifiable, new JandiExampleNotification);
            ```
- #### Facade

    [](#facade)

    It supports the JandiNotifier class as a 'Jandi' facade.

    - send(): you can send message simply.

        - it is sent based on the default route settings. ```
            use Blood72\Jandi\Notifications\Messages\JandiMessage;

            $message = JandiMessage::create('hello test');
            // or $message = new JandiMessage('hello test');

            Jandi::send($message);
            ```
        - of course, it can be done in a simple string form. ```
            Jandi::send('hello test');
            ```
        - you can set other notification class if you don't want to use default one. ```
            Jandi::send('hello test', YourOtherNotification::class);
            ```
    - to(): you can specify the recipient URL(s).

        - by string ```
            Jandi::to('jandi-webhook-url')->send('hello test');
            ```
        - by multiple params ```
            Jandi::to('jandi-webhook-url-1', 'jandi-webhook-url-2')->send('hello test');
            ```
        - by array ```
            Jandi::to([
                'jandi-webhook-url-1',
                'email-1' => 'jandi-webhook-url-2',
                'email-2' => [
                    'jandi-webhook-url-3',
                    'jandi-webhook-url-4',
                ],
            ]);
            ```

            you can set email when sending 1:1 chat for team chat webhook URL (paid team only). email does not validate in jandi, and to send together, it must be string.
        - by object
            to use this, `routeNotificationForJandi()` or `jandi_webhook_url` must be defined. it can be defined `jandi_webhook_url` as `getJandiWebhookUrlAttribute()`. ```
            use App\User;

            public function routeNotificationForJandi()
            {
                return 'url';
            }

            // in example, $user is User model instance.

            Jandi::to($user)->send('hello test');
            ```

            if you want to set email, `jandi_email` (or `getJandiEmailAttribute()`) is required.

Reference
---------

[](#reference)

- JANDI [incoming webhook guide](https://support.jandi.com/hc/en-us/articles/210867283-Receiving-incoming-Webhooks-in-JANDI)and [for team one](https://support.jandi.com/hc/en-us/articles/360025062132-Team-Incoming-Webhook)
- Laravel official [Slack notification channel](https://github.com/laravel/slack-notification-channel)
- Guilherme Pressutto's [laravel-slack](https://github.com/gpressutto5/laravel-slack)

... and based on a code written by [@kwonmory](https://github.com/kwonmory)

License
-------

[](#license)

This package is open-sourced software licensed under the MIT license.

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 83.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~150 days

Total

5

Last Release

1925d ago

PHP version history (2 changes)v1.0.0PHP ^7.1.3

v1.0.1PHP ^7.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/4738fa3c44cd4b74c27f3a52906739a1bb8278e49c45ddc24e6ef3f6a2a0b2a3?d=identicon)[b72kor@gmail.com](/maintainers/b72kor@gmail.com)

---

Top Contributors

[![blood72](https://avatars.githubusercontent.com/u/24821306?v=4)](https://github.com/blood72 "blood72 (10 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

---

Tags

laravelJandi

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/blood72-laravel-jandi/health.svg)

```
[![Health](https://phpackages.com/badges/blood72-laravel-jandi/health.svg)](https://phpackages.com/packages/blood72-laravel-jandi)
```

###  Alternatives

[laravel/slack-notification-channel

Slack Notification Channel for laravel.

89069.7M111](/packages/laravel-slack-notification-channel)[spatie/laravel-health

Monitor the health of a Laravel application

85810.0M83](/packages/spatie-laravel-health)[laravel-notification-channels/telegram

Telegram Notifications Channel for Laravel

1.1k3.4M35](/packages/laravel-notification-channels-telegram)[s-ichikawa/laravel-sendgrid-driver

This library adds a 'sendgrid' mail driver to Laravel.

4139.3M1](/packages/s-ichikawa-laravel-sendgrid-driver)[laravel-notification-channels/discord

Laravel notification driver for Discord.

2371.3M11](/packages/laravel-notification-channels-discord)[tzsk/sms

A robust and unified SMS gateway integration package for Laravel, supporting multiple providers.

320244.3k6](/packages/tzsk-sms)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
