jinseokoh/aligo

Aligo 的 Laravel 通知渠道

2.1.0 2021-01-20 05:23 UTC

This package is auto-updated.

Last update: 2024-09-20 13:09:07 UTC


README

Total Downloads License

该包是使用 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 地址动态更改或水平扩展的云服务器环境中,根本无法使用。作为替代方案
NCloudAWS 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)。有关更多信息,请参阅许可文件