jinseokoh / aligo
Aligo 的 Laravel 通知渠道
Requires
- php: >=7.2.5
- ext-json: *
- guzzlehttp/guzzle: ^6.0 || ^7.0
- illuminate/notifications: ~5.6 || ~6.0 || ~7.0 || ~8.0
- illuminate/support: ~5.6 || ~6.0 || ~7.0 || ~8.0
Requires (Dev)
- hamcrest/hamcrest-php: ^2.0
- orchestra/testbench: ^4.0 || ^5.0 || ^6.0
- phpunit/phpunit: ^8.0 || ^9.0
README
该包是使用 Aligo 文字发送 API 来发送 SMS/LMS 和 카카오알림톡 消息的 PHP Laravel 包。由于 v2 将其更改为 Laravel 自定义 Notification 通道,因此可以使用 Notification 类的 via 方法来发送消息。
截至 2020 年 4 月,韩国的文本消息 API 提供商中,Aligo 在价格方面是当之无愧的赢家。(每条信息 KRW 8.4)由于价格是我选择公司时唯一重要的因素,它可能会随时改变。(这意味着我与此没有任何商业关系。)
根据 2020 年的估计,提供发送或发送 카카오알림톡 API 的公司可能有 10 多家,但根据价格比较,Aligo 的费用最低,因此创建了用于使用该公司的文本消息服务的包。如果发现有更便宜的服务提供商或发现该包使用上的问题,请通过问题跟踪器留下意见,谢谢。
警告
Aligo 服务有一个约束条件,即必须在预先注册固定 IPv4 地址后,才能在该服务器实例中发送文本消息。在 IP 地址动态更改或水平扩展的云服务器环境中,根本无法使用。作为替代方案
NCloud 或 AWS SNS 等服务。
内容
用例
由于该包是为用于 1 个接收者的 use-case 而创建的,因此尚未实现 MMS 发送功能、预约发送、向多个接收者发送消息等功能。
安装
composer require jinseokoh/aligo
设置
在 config/services.php
中添加以下代码
'aligo' => [
'app_id' => env('ALIGO_APP_ID'),
'app_key' => env('ALIGO_APP_KEY'),
'sms_from' => env('ALIGO_REGISTERED_PHONE'),
'kakao_key' => env('ALIGO_KAKAO_CHANNEL_KEY'),
],
在 .env
中添加自己的账户信息。
ALIGO_APP_ID=socrates
ALIGO_APP_KEY=00000000000000000000000000000000
ALIGO_REGISTERED_PHONE=02-123-0000
ALIGO_KAKAO_CHANNEL_KEY=0000000000000000000000000000000000000000
更详细的信息可以在 https://smartsms.aligo.in/admin/api/info.html 中找到。
SMS/LMS 文字发送方法
要使用 AligoTextChannel
,请向 Notification 类添加以下代码。当创建 AligoTextMessage
时,根据指定的字符串长度自动设置 SMS 设置或 LMS 设置。如果想要将超过 90 个字节的字符串部分以低成本的 SMS 文本形式发送,则可以像以下示例一样链式调用 short() 方法
public function via($notifiable)
{
return [AligoTextChannel::class];
}
public function toAligoText($notifiable)
{
return (new AligoTextMessage())
->content('이 패가 단풍이 아니라는 거에 내 돈 모두하고 내 손모가질 건다. 쫄리면 뒈지시던지.')
->short()
->debug();
}
AligoTextMessage
拥有以下链式方法。
SMS/LMS 文字设置时可以使用的方法(所有都是 fluent call chain)
content($string)
. 指定要发送的消息。
short()
. 当消息长度超过 90 个字节时,将超过 90 个字节的字符串部分截断以发送 SMS。
debug()
. 设置为测试模式。
카카오알림톡 发送方法
카카오알림톡是一种比 SMS/LMS 更便宜的向 카카오톡 发送文本消息的服务,更详细的信息可以在 https://smartsms.aligo.in/admin/api/info.html 中找到。
要使用 AligoKakaoChannel
,请向 Notification 类添加以下代码
public function via($notifiable)
{
return [AligoKakaoChannel::class];
}
public function toAligoKakao($notifiable)
{
return (new AligoKakaoMessage())
->code('TB_0824')
->replacements(['오진석', '대한통운', '오전11시', '123-456-7890'])
->debug();
}
AligoKakaoMessage
拥有以下链式方法。
카카오알림톡 文字设置时可以使用的方法(所有都是 fluent call chain)
code($string)
. 指定已注册在 Aligo 中的 카카오알림톡 模板代码。
replacements()
. 指定由 #{이름}
部分和要替换的值组成的数组,作为 카카오알림톡 消息的替换。
fallback()
. 在发送 카카오알림톡 失败的情况下,将其转换为文本发送。
debug()
. 设置为测试模式。
카카오알림톡 模板
カ카오알림톡 文本消息需要预先注册模板,并且需要预先同意以防止垃圾邮件。如果注册的 카카오알림톡 消息如下所示,
#{고객명} 고객님! #{택배회사명}입니다. #{택배배송시간} 택배를 배달할 예정입니다. 운송장번호 : #{송장번호}
对于这个示例消息,由于存在4个#{이름}
格式的插槽,因此需要将4个String组成的数组['오진석', '대한통운', '오전11시', '123-456-7890']
作为replacements()
链式方法的参数。所有插槽将按顺序替换,最终发送以下卡卡奥尔文本消息。
오진석 고객님! 대한통운입니다. 오전11시 택배를 배달할 예정입니다. 운송장번호 : 123-456-7890
如果插槽的数量与传递给replacements()
参数的数组数量不同,将发生异常,并且不会发送消息。
贡献
有关详细信息,请参阅CONTRIBUTING。
致谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。