kamran377/yii2-sms

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

安装: 23

依赖: 1

建议者: 0

安全: 0

星标: 0

观察者: 2

分支: 0

开放问题: 0

类型:yii2-extension

v1.0.0 2022-08-08 09:59 UTC

This package is auto-updated.

Last update: 2024-09-08 14:36:14 UTC


README

由于它现在已经停止维护,所以是https://github.com/wadeshuler/yii2-sms的副本

这是为您的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
    ]
]

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

useFileTransport设置为true时,它将在fileTransportPath中转储文本消息,默认为@runtime/sms。我对这些进行了轻微的修改,以便它们更容易阅读。

使用messageConfig数组来设置默认消息配置,例如from,因为消息类将通过“获取器”和“设置器”自动使用它们进行实例化,归功于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
  • 更新文档/注释
  • 添加自己的日志类