walkboy / yii2-sms
这是为Yii2应用程序提供短信支持的基库。您可以从这个基础包创建自己的短信提供商插件。请勿直接使用。
Requires
- php: >=5.4.0
- yiisoft/yii2: ~2.0.11
This package is auto-updated.
Last update: 2022-11-03 06:35:33 UTC
README
这是为Yii2应用程序提供短信支持的基库。您可以从这个基础包创建自己的短信提供商插件。请勿直接使用。
注意:您不能单独使用此库/包。它是一个父/根包,旨在从中扩展!请参阅 Yii2 SMS Twilio 了解如何创建扩展此包的自定义插件。
这就像Yii2中的基础邮件命名空间一样。您不直接使用它,而是使用扩展内置 yii\mail
类的Swiftmailer包。
目标是发送短信文本消息,类似于在Yii2中发送电子邮件,并且可以轻松扩展以支持无限数量的短信提供商。
此包最初由 @WadeShuler 创建,但作者将其从Github删除并放弃了包维护。
关键要点
配置在您的主配置文件(高级: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
,因为消息类将通过 "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,只要它能够正常工作并且扩展这个基础包,我会将其添加到列表中。