wadeshuler/yii2-sms

此软件包已废弃,不再维护。未建议替代软件包。

这是为您的 Yii2 应用程序提供短信支持的基库。您可以从这个基础包创建自己的短信服务提供商插件。不能直接使用。

安装: 11,167

依赖关系: 3

建议者: 0

安全: 0

星标: 4

关注者: 2

分支: 1

类型:yii2-extension

v1.0.1 2022-04-02 23:26 UTC

This package is auto-updated.

Last update: 2022-04-02 23:28:38 UTC


README

这是为您的 Yii2 应用程序提供短信支持的基库。您可以从这个基础包创建自己的短信服务提供商插件。不能直接使用。

注意: 您不能单独使用此库/软件包。它是一个父/根软件包,旨在从它扩展!请参见 Yii2 SMS Twilio 了解如何创建扩展此软件包的自定义插件。

这就像 Yii2 中的基础邮件命名空间一样。您不会直接使用它,而是使用扩展内置 yii\mail 类的 Swiftmailer 软件包。

目标是发送短信文本消息,就像在 Yii2 中发送电子邮件一样,并且可以轻松扩展以支持无限数量的短信服务提供商。

关键要点

配置位于您的主配置文件中(高级:common/config/main-local.php)作为 sms 组件

'components' => [
    'sms' => [
        'class' => 'namespace\to\ExtendedSms',  // Class that extends BaseSms
        'viewPath' => '@common/sms',            // Optional: defaults to '@app/sms'

        // send all sms to a file by default.
        'useFileTransport' => true,             // false for real sending

        'messageConfig' => [
            'from' => '+15552221234',           // From number to send from
        ],

        'apiKey' => 'xxxxxxxxxxxxxxx',          // Example where to put keys
    ]
]

注意: 上面的配置只是一个示例,实际上不会发送短信消息。您需要创建自己的扩展 BaseSmsSms 类,以及扩展 BaseMessage 的自己的类。您的扩展类将处理使用您选择的短信服务提供商的逻辑。我的 Yii2 SMS Twilio 扩展是创建此类插件的绝佳示例。

useFileTransport 设置为 true 时,它将在 fileTransportPath 中转储文本消息,默认为 @runtime/sms。我已经做了一些修改,使其更具可读性。

使用 messageConfig 数组设置默认消息配置,例如 from,因为消息类将通过 "getters" 和 "setters" 自动使用它们实例化,多亏了 Yii::createObject()

您可以直接在 sms 配置数组中设置 API 密钥参数,而不是在 messageConfig 内部,因为它们与传输(短信服务提供商)有关,而不是与特定消息有关。注意: apiKey 在此软件包中未定义,仅作为一个示例放置位置。

viewPath 默认为 @app/sms,与 Yii2 邮件发送器相同,并且可以在配置中重写。这是用于使用在 compose() 函数中指定的视图文件,类似于 Yii2 邮件发送器。

注意: 只存在 "text" 视图。由于这些是文本消息,因此不适用 HTML 视图。因此,您只需传递字符串作为视图,而不是包含 text 参数的数组!我将其删除,以便简化使用,因为这样做更有意义。

视图文件示例

Yii::$app->sms->compose('test-message', ['name' => 'Wade'])

其中 test-message 是位于 viewPath 目标中的视图文件。

视图文件: common/sms/test-message.php

Hello <?= $name ?> This is a test!

Thanks!

如果您打算使用视图,而不是仅使用 setMessage() 直接设置消息,则需要创建 sms 目录以及视图文件。

不使用视图文件的示例

Yii::$app->sms->compose()
    //->setFrom('12345')  // if not set in config, or to override
    ->setTo('+15558881234')
    ->setMessage("Hey {$name} this is a test!\n\nThanks!")
    ->send();

如果您在主配置中的messageConfig数组中设置了from号码,则不需要调用setFrom(),除非您想覆盖已配置的号码。

那么我该如何使用它呢?

我建议您查看我的Yii2 SMS Twilio包。您会在composer.json中看到它需要这个包。Sms类继承自这个BaseSms类,而Message类继承自这个BaseMessage类。

使用此库的包

想要将自己的包添加到列表中吗?创建一个issue,只要它工作并且扩展了这个基础包,我会将其添加上去。

待办事项

  • 更新README
  • 更新文档/注释
  • 添加自己的日志类

捐赠

如果您觉得我的代码有用,请考虑捐赠。

PayPal Donate