walkboy / yii2-sms-twilio
这是一个基于我的基础包 Yii2 SMS 的 Twilio SMS 插件,使得发送短信消息像发送电子邮件一样简单!
Requires
- php: >=5.4.0
- twilio/sdk: ^5.11
- walkboy/yii2-sms: ~1.0
- yiisoft/yii2: ~2.0.11
This package is auto-updated.
Last update: 2022-11-03 06:38:54 UTC
README
这是一个基于基础包Yii2 SMS的 Twilio SMS 插件,使得发送短信消息像发送电子邮件一样简单!
此包最初由 @WadeShuler 创建,但作者已将其从 Github 上移除并放弃了包维护。
安装
安装此扩展的首选方式是通过 composer
运行
composer require --prefer-dist walkboy/yii2-sms-twilio
或添加
"walkboy/yii2-sms-twilio": "~1.0"
到你的应用程序的 composer.json
文件的 require 部分。
然后,在你的 main-local.php
(高级) 或 web.php
(基本) 中添加一个新的 sms
组件,如下所示
'sms' => [
'class' => 'walkboy\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
的路由。您需要创建自己的路由来处理此操作。发送短信消息不是必需的,用于更深入地跟踪每条消息的状态。
用法
您可以通过两种方式发送短信消息。一种方式是使用视图文件,就像邮件器一样,通过在 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 高级用于电子邮件视图的位置相似,“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()
。
如果您只从1个号码发送,只需配置它,不要直接调用它,这样您以后就不必在多个地方修改它。
提示:如果您有多个号码,请使用Yii2的params数组,这样您可以在一个地方轻松修改这些号码,以便以后修改。
我在哪里可以找到错误日志?
在发送过程中遇到异常时,它们将被记录在@runtime/sms
下,并以异常类型命名。