dokdo / aligo
Aligo 的 Laravel 通知渠道
Requires
- php: >=7.2.5
- ext-json: *
- guzzlehttp/guzzle: ^6.0 || ^7.0 || ^8.0
- illuminate/notifications: ~5.6 || ~6.0 || ~7.0 || ~8.0 || ~9.0
- illuminate/support: ~5.6 || ~6.0 || ~7.0 || ~8.0 || ~9.0
Requires (Dev)
- hamcrest/hamcrest-php: ^2.0
- orchestra/testbench: ^4.0 || ^5.0 || ^6.0
- phpunit/phpunit: ^8.0 || ^9.0
This package is auto-updated.
Last update: 2024-09-07 11:29:39 UTC
README
此包是使用 Aligo 文字发送 API 发送 SMS/LMS 和 카카오팔레트(KakaoTalk)消息的 PHP Laravel 包。由于 v2 将其更改为 Laravel 自定义 Notification 交付渠道,因此可以通过 Notification 类的 via 方法实现文字发送。
截至 2020 年 4 月,韩国的文字消息 API 提供商中,就价格而言,Aligo 是当之无愧的赢家(每条消息 KRW 8.4)。由于价格是我选择公司时唯一考虑的因素,因此它可能会随时改变(这意味着我与此公司没有任何商业关系)。
据估计,到 2020 年底,提供发送文字或 카카오팔레트消息的 API 的企业有 10 多家,但根据价格比较,Aligo(Aligo)的成本最低。因此,为了使用该公司的文字发送服务,我制作了此包。如果发现更便宜的服务提供商或此包使用中存在问题,请通过问题跟踪器留下您的意见,我将不胜感激。
警告
Aligo 服务有约束条件:必须在预先注册了固定 IPv4 地址后,才能从该服务器实例发送文字。在 IP 地址动态更改或水平扩展的云服务器环境中,根本无法使用。作为替代方案,请考虑 NCloud 或 AWS SNS 等服务。
NCloud 或 AWS SNS 等。
内容
用例
由于此包是为向一个接收者发送 SMS/LMS 和 카카오팔레트(KakaoTalk)消息的用例而制作的,因此目前尚未实现 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 文字,则可以像以下示例那样进行 chaining。
public function via($notifiable)
{
return [AligoTextChannel::class];
}
public function toAligoText($notifiable)
{
return (new AligoTextMessage())
->content('이 패가 단풍이 아니라는 거에 내 돈 모두하고 내 손모가질 건다. 쫄리면 뒈지시던지.')
->short()
->debug();
}
AligoTextMessage
拥有以下可 chaining 的方法。
SMS/LMS 发送文字时可以使用的方法(全部为 fluent call chain)
content($string)
. 指定要发送的消息。
short()
. 如果消息长度超过 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
拥有以下可 chaining 的方法。
发送 카카오팔레트文字时可以使用的方法(全部为 fluent call chain)
code($string)
. 指定已注册在 Aligo 中的 카카오팔레트模板代码。
replacements()
. 指定由 #{이름}
和要替换的值组成的数组,用于替换 카카오팔레트消息中的 #{이름}
部分。
fallback()
. 如果 카카오팔레트发送失败,则将其转换为文字发送。
debug()
. 将其设置为测试模式。
카카오팔레트模板
카카오팔레트消息需要预先注册为模板形式,并且需要预先批准以防止垃圾邮件。如果已注册的 카카오팔레트消息如下所示:
#{고객명} 고객님! #{택배회사명}입니다. #{택배배송시간} 택배를 배달할 예정입니다. 운송장번호 : #{송장번호}
在此示例中,由于有 4 个槽,因此需要将 replacements()
的参数值作为 4 个 String 组成的数组,例如 ['오진석', '대한통운', '오전11시', '123-456-7890']
。所有槽都将按顺序替换,最终将发送以下 카카오팔레特消息。
오진석 고객님! 대한통운입니다. 오전11시 택배를 배달할 예정입니다. 운송장번호 : 123-456-7890
如果槽的数量与 replacements()
参数值数组不同,则将引发异常,并且消息将不会发送。
贡献
请参阅CONTRIBUTING以获取详细信息。
致谢
许可
MIT许可(MIT)。请参阅许可文件获取更多信息。