wadeshuler / yii2-sms-twilio
基于我的基础包 Yii2 SMS 的 Twilio SMS 插件,使发送短信消息变得像发送电子邮件一样简单!
Requires
- php: >=5.4.0
- twilio/sdk: ^5.11
- wadeshuler/yii2-sms: ~1.0
- yiisoft/yii2: ~2.0.11
This package is auto-updated.
Last update: 2022-04-02 23:22:32 UTC
README
基于我的基础包 Yii2 SMS 的 Twilio SMS 插件,使发送短信消息变得像发送电子邮件一样简单!
安装
通过 composer 安装此扩展是首选方式
运行以下命令
composer require --prefer-dist wadeshuler/yii2-sms-twilio
或
"wadeshuler/yii2-sms-twilio": "~1.0"
将以下内容添加到您应用程序的 composer.json
文件的 require 部分。
然后在您的 main-local.php
(高级) 或 web.php
(基本) 中添加一个新的 sms
组件,如下所示
'sms' => [
'class' => 'wadeshuler\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 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()
。
如果您只从1个号码发送,只需进行配置,不要直接调用它,这样您以后就不需要在多个地方更改它。
提示:如果您有多个号码,请使用Yii2的参数数组,以便在以后轻松修改这些号码。
在哪里可以找到错误日志?
在发送过程中遇到异常时,它们将被记录在@runtime/sms
下,并以异常类型命名。
待办事项
- 更新README
- 更新文档/注释
- 创建Twilio日志组件
- 添加对更多Twilio功能的支持(messagingServiceSid、通道地址等)
捐赠
如果您觉得我的代码有用,请考虑捐赠。