boyo/mobica

使用Mobica Bulgaria的Laravel通知

v2.2 2022-01-12 12:13 UTC

This package is auto-updated.

Last update: 2024-09-12 18:19:55 UTC


README

此包为Mobica.bg服务添加了一个通知通道。您可以使用它发送短信和Viber for Business消息。

安装

通过Composer安装。

配置

将以下内容添加到您的服务配置文件中。

'mobica' => [
	'user' => env('MOBICA_USER',''),
	'pass' => env('MOBICA_PASS',''),
	'prefix' => '',
	'log' => env('MOBICA_LOG',true),
	'log_channel' => env('MOBICA_LOG_CHANNEL','stack'),
	'send' => env('MOBICA_SEND',false),
	'bulglish' => true,
	'allow_multiple' => false,
],
  • log 如果消息应该写入日志文件
  • log_channel 将消息记录到哪个日志通道
  • send 如果消息应该被发送(生产/开发环境)
  • bulglish 如果西里尔文文本应该转换为拉丁字母以用于短信消息(西里尔文消息限制为67个字符)
  • allow_multiple 如果允许超过160个字符的短信消息(按多个消息计费)

发送测试

要发送测试消息,请使用以下 artisan 命令

php artisan mobica:test phone --message='内容' --channel=sms --promo

  • channel可以有以下值:sms|viber|viber-sms
  • promo将发送带有图片和按钮的促销测试消息

直接使用

您可以实例化一个Boyo\Mobica\MobicaMessage对象并立即发送。

use Boyo\Mobica\MobicaMessage;
use Boyo\Mobica\MobicaSender;

class MyClass
{
	public function myFunction()
	{
		$message = (new MobicaMessage())->to('359888888888')->channel('viber-sms')->sms('SMS text')->viber('Viber text');
		
		$client = new MobicaSender();
		$client->send($message);	
	}
}

与通知一起使用

  1. 创建一个扩展Boyo\Mobica\MobicaMessage的消息文件。它可以在构造函数中接收所需的所有数据,并且应该实现一个build()方法来定义消息的文本内容 - 一个好习惯是渲染一个视图文件,这样您的消息内容就在您的视图中。您应该只为将要使用的交付渠道定义方法。
use Boyo\Mobica\MobicaMessage;

class MyMessage extends MobicaMessage 
{
	public function __construct($data)
    {
        $this->id = $data->id; // your unique message id, add other parameters if needed
    }
    
	public function build() {
		// set your sms text 
		$this->sms('SMS text');
	
		// set your viber text
		$this->viber('Viber text');
		
		return $this;
	}	
}
  1. 在您的Notification类中,现在可以在via()方法返回的$via数组中包含Mobica通道。
use Boyo\Mobica\MobicaChannel;

via($notifiable) 
{
	
	// ...
	
	$via[] = MobicaChannel::class;
	
	return $via 
	
}

在相同的Notification类中,您还应该定义一个方法toSms()

public function toSms($notifiable)
{
	return (new MyMessage($unique_id))->to($notifiable->phone)->channel('viber-sms');
}

通道方法是在您定义要使用的交付通道的地方。

  • sms 通过短信发送(这是默认值,如果您省略通道方法)
  • viber 通过Viber发送
  • viber-sms 尝试通过Viber发送,如果失败则通过短信发送