oncology-support / amazon-sms-helper-bundle
Symfony Bundle,简化使用Amazon SNS发送短信
Requires
- php: >=8.2
- aws/aws-sdk-php: ^3.316
- symfony/config: ^6.0 || ^7.0
- symfony/dependency-injection: ^6.0 || ^7.0
- symfony/flex: ^2.3
- symfony/http-kernel: ^6.0 || ^7.0
- symfony/yaml: ^6.0 || ^7.0
Requires (Dev)
- nyholm/symfony-bundle-test: ^3.0
- symfony/framework-bundle: ^6.0 || ^7.0
This package is auto-updated.
Last update: 2024-09-15 18:04:24 UTC
README
AmazonSMSHelperBundle
文档
许可证
AmazonSMSHelperBundle 在MIT许可证下发布。有关详细信息,请参阅捆绑的LICENSE文件。
安装
使用Symfony Flex的应用程序
打开命令行,进入您的项目目录并执行以下命令
composer require oncology-support/amazon-sms-helper-bundle
不使用Symfony Flex的应用程序
步骤1:下载Bundle
打开命令行,进入您的项目目录并执行以下命令以下载此捆绑包的最新稳定版本
composer require oncology-support/amazon-sms-helper-bundle
步骤2:启用Bundle
然后,通过将其添加到项目中config/bundles.php
文件中注册的捆绑包列表中,来启用捆绑包
// config/bundles.php return [ // ... OncologySupport\AmazonSMSHelper\OncologySupportAmazonSMSHelperBundle::class => ['all' => true], ];
步骤3:配置
要使用此捆绑包,您需要一个启用了SNS服务的AWS账户。
启用SNS需要您请求一个发起号码。然后,您将进入从沙盒中移除该号码的过程,以便将短信发送到任何手机。
SNS启用后,您需要配置IAM以获取AWS账户的access_key_id
和secret_access_key
。以下是如何操作的示例:从IAM控制台创建了一个具有编程访问权限的新用户。然后,我为用户添加了一个新的策略,其json策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "OncologySupport0", "Effect": "Allow", "Action": "sns:Publish", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "xxx.xxx.xxx.xxx", "yyy.yyy.yyy.yyy" ] } } } ] }
此策略允许您创建的SNS用户发送短信。您需要将xxx.xxx.xxx.xxx
和yyy.yyy.yyy.yyy
替换为发送短信消息的服务器IP地址。如果您想允许用户从任何IP地址发送短信,则可以省略“条件”块,但出于安全原因不建议这样做。您还可以在“操作”部分进行更宽松的处理,如果想让用户执行发送短信以外的操作。以下是一个更宽松的示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sns:*", "Resource": "*" } ] }
无论如何,您都需要获取您创建的用户access_key_id
和secret_access_key
,并将default_region
设置为创建SNS主题的区域(例如,us-east-1)。您可以将这些值存储在.env
文件中,如下所示
# AWS credentials AMAZON_SNS_ACCESS_ID=your_aws_access_key_id AMAZON_SNS_SECRET=your_aws_secret_access_key AMAZON_SNS_DEFAULT_REGION=your_aws_default_region
更好的是,您可以将这些值存储在.env.local
文件中,该文件不会被提交到您的存储库。
步骤4:使用它!
当您准备好发送消息时,可以使用AmazonSMSHelper
服务如下所示
<?php use Aws\Result use OncologySupport\AmazonSMSHelper\Service\AmazonSMSHelper; class ExampleSmsService { public function __construct(private readonly $smsHelper) { } public function sendSMS(string $message, string $phoneNumber): Result { // cellPhoneNumber must be in the format +1XXXXXXXXXX (for US numbers) $cellPhoneNumber = '+1' . preg_replace("/[^0-9]+/", "", $phoneNumber); return $this->smsHelper($message, $cellPhoneNumber); } }
享受!