kamran377 / yii2-sms-twilio
基于我的基础包 Yii2 SMS 开发的 Twilio SMS 插件,让发送短信变得和发送邮件一样简单!
Requires
- php: >=8.0.0
- kamran377/yii2-sms: ~1.0
- twilio/sdk: ^6.33
- yiisoft/yii2: ~2.0.11
README
基于我的基础包 Yii2 SMS 开发的 Twilio SMS 插件,让发送短信变得和发送邮件一样简单!
安装
通过 composer 安装此扩展是首选方式
运行
composer require --prefer-dist kamran377/yii2-sms-twilio
或
"kamran377/yii2-sms-twilio": "~1.0"
将以下内容添加到应用程序的 composer.json
文件的 require 部分中。
然后,将一个新的 sms
组件添加到您的 main-local.php
(高级)或 web.php
(基本)中,如下所示
'sms' => [
'class' => 'kamran377\sms\twilio\Sms',
// Advanced app use '@common/sms', basic use '@app/sms'
'viewPath' => '@common/sms', // Optional: defaults to '@app/sms'
// send all sms to a file by default. You have to set
// 'useFileTransport' to false and configure the messageConfig['from'],
// 'sid', and 'token' to send real messages
'useFileTransport' => true,
'messageConfig' => [
'from' => '+15552221234', // Your Twilio number (full or shortcode)
],
// Find your Account Sid and Auth Token at https://twilio.com/console
'sid' => 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'token' => 'your_auth_token',
// Tell Twilio where to POST information about your message.
// @see https://www.twilio.com/docs/sms/send-messages#monitor-the-status-of-your-message
//'statusCallback' => 'https://example.com/path/to/callback', // optional
],
注意:此包不提供
statusCallback
路由。您需要创建自己的路由来处理此操作。发送短信时并不需要 Twilio,它用于对每个短信状态的更深入跟踪。
用法
您可以通过两种方式发送短信。一种使用视图文件,就像邮件发送器一样,通过在 compose()
调用中传递它。唯一不同的是,您不需要指定 html/text 数组键。只需传递字符串,因为文本消息不使用 html。
使用视图文件
在控制器/模型中使用它如下
Yii::$app->sms->compose('test-message', ['name' => 'Wade'])
//->setFrom('12345') // if not set in config, or to override
->setTo('+15558881234')
->send();
您需要一个位于您的 viewPath
指向的位置的视图文件。默认情况下,它是 @app/sms
。您可以在上面的配置中看到我们已将其重写为 @common/sms
。这类似于 Yii2 Advanced 使用的电子邮件视图的位置,“common” 目录。
视图文件:common/sms/test-message.php
(高级)或 /sms/test-message.php
(基本)
Hello <?= $name ?> This is a test!
Thanks!
不使用视图文件
在快速发送大量文本消息时,您可能希望出于性能原因跳过视图文件,或者您可能认为它对您的使用来说是多余的。
$name = "Wade";
Yii::$app->sms->compose()
//->setFrom('12345') // optional if set in main config
->setTo('+15558881234')
->setMessage("Hey {$name} this is a test!")
->send();
setMessage()
是一个友好的函数名,或别名,对于 setTextBody()
。由于短信消息只处理文本而不处理 html,我认为这更干净。然而,如果您熟悉邮件发送器处理事物的方式,则 setTextBody()
也可以正常工作。两者都可以。
确定发送成功
返回一个布尔值,所以很简单
$result = Yii::$app->sms->compose()
->setTo('+15558881234')
->setMessage("Hey {$name} this is a test!")
->send();
if ( $result === true ) {
echo 'SMS was sent!';
} else {
'Error sending SMS!';
}
如何发送图片?
在您的 compose()
调用之后,使用 ->setMediaUrl($urlToImage)
我必须调用 setFrom()
吗?
只有当您在配置文件中的 messageConfig
数组中未指定 from
号码时,才需要使用 setFrom()
。
如果您想覆盖主配置中的 from
地址,则可以调用 setFrom()
。
如果您只从一个号码发送,请配置它,不要直接调用它,这样您就不必在以后在多个地方更改它。
提示:如果您有多个号码,请使用 Yii2 参数数组作为修改号码的简单位置。
我可以在哪里找到错误日志?
在发送过程中遇到异常时,它们将被记录在 @runtime/sms
下,并根据异常类型命名。
待办事项
- 更新 README
- 更新文档/注释
- 创建 Twilio 日志组件
- 添加对更多 Twilio 功能的支持(messagingServiceSid、channel 地址等)
捐赠
如果您觉得我的代码有用,请考虑捐赠。