dokdo/aligo

Aligo 的 Laravel 通知渠道

dev-master 2023-02-07 07:55 UTC

This package is auto-updated.

Last update: 2024-09-07 11:29:39 UTC


README

Total Downloads License

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