caherrera/laravel-notifications-infobip-omni

基于Infobip API OMNI的自定义Laravel通知通道。基于princeton255/laravel-notifications-infobip

1.1.3 2021-03-03 21:34 UTC

This package is auto-updated.

Last update: 2024-08-29 05:37:21 UTC


README

Latest Stable Version License Total Downloads

此包可以轻松使用Laravel 5.5及以上版本通过Infobip服务发送Sms通知。

内容

安装

您可以通过composer安装此包

composer require caherrera/laravel-notifications-infobip

设置您的Infobip账户

将以下设置添加到 config/services.php

// config/services.php
...
    'infobip' => [
        'auth'        => env('INFOBIP_AUTH','basic'),
        'username'    => env('INFOBIP_USERNAME'),
        'password'    => env('INFOBIP_PASSWORD'),
        'baseUrl'     => env('INFOBIP_BASE_URL'),
        'apikey'      => env('INFOBIP_PUBLIC_KEY'),
        'scenarioKey' => env('INFOBIP_SCENARIO_KEY'),
    ],
...

要更改 Base URL 以供个人使用,请参阅此链接 (更多)

用法

现在您可以在通知内部的 via() 方法中使用此通道

use NotificationChannels\Infobip\InfobipChannel;
use NotificationChannels\Infobip\InfobipMessage;
use Illuminate\Notifications\Notification;

class AccountApproved extends Notification
{
    public function via($notifiable)
    {
        return [InfobipChannel::class];
    }

    public function toInfobip($notifiable)
    {
    	$message = new InfobipMessage();
		$message->setTemplateName("infobip_test_hsm");
		$message->setTemplateNamespace("whatsapp:hsm:it:infobip");
		$message->setTemplateData(["Jhon","Snow"]);
		$message->setLanguage("es");
        return $message;
    }
}

为了让通知知道您要发送给哪个电话,通道将查找可通知模型的 phone_number 属性。如果您想覆盖此行为,请将 routeNotificationForInfobip 方法添加到您的可通知模型中。

public function routeNotificationForInfobip()
{
    return '+1234567890';
}

可用消息方法

InfobipMessage

  • setTemplateName(''):接受字符串值。
  • setTemplateNamespace(''):接受字符串值。
  • setTemplateData(['','',...]):接受字符串数组。
  • setLanguage(''):接受字符串值。

示例

发送通知

A. 使用Laravel的通知外观

use App\Notifications\ExampleInfobipNotification;
use Illuminate\Support\Facades\Notification;

Notification::send($user, new ExampleInfobipNotification());

// where $user implements `Illuminate\Notifications\Notifiable` trait

B. 使用 notify() 方法从 Notifiable 特性

use App\Notifications\ExampleInfobipNotification;

$user->notify(new ExampleInfobipNotification($invoice));

示例通知类

<?php

namespace App\Notifications;

use Illuminate\Notifications\Notification;
use Caherrera\Laravel\Notifications\Channels\Infobip\Omni\InfobipChannel;
use Caherrera\Laravel\Notifications\Channels\Infobip\Omni\InfobipMessage;

class ExampleInfobipNotification extends Notification
{
    public function via($notifiable)
    {
        return [InfobipChannel::class];
    }

    public function toInfobip($notifiable)
    {
        $message = new InfobipMessage();
		$message->setTemplateName("infobip_test_hsm");
		$message->setTemplateNamespace("whatsapp:hsm:it:infobip");
		$message->setTemplateData(["Jhon","Snow"]);
		$message->setLanguage("es");
        return $message;
        
    }
}

示例可通知类

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;
}

有关更多详细信息,请参阅Laravel文档中的此链接

测试

$ ./vendor/bin/phpunit

安全

如果您发现任何安全相关的问题,请帮助我并在问题跟踪器上提交工单或直接修复,我会合并

致谢

许可证

MIT许可证(MIT)。