使用 Amazon SNS 发送 SMS 并获取投递状态

使用 amazon sns 发送 sms 并获取投递状态

本文档介绍了如何使用 Amazon SNS 服务通过 PHP SDK 发送 SMS 消息,并详细阐述了如何通过 CloudWatch API 获取 SMS 消息的投递状态,以便开发者能够监控消息发送结果并及时处理异常。

Amazon Simple Notification Service (SNS) 是一种快速、灵活、完全托管的推送消息服务。您可以使用 SNS 发送消息到移动设备、电子邮件地址、其他 AWS 服务等。本教程将重点介绍如何使用 PHP SDK 发送 SMS 消息,并介绍如何获取消息的投递状态。

发送 SMS 消息

首先,确保您已经安装了 AWS PHP SDK。您可以使用 Composer 进行安装:

composer require aws/aws-sdk-php

接下来,使用以下代码发送 SMS 消息:

 'eu-west-1', // 替换为您的 AWS 区域    'version' => 'latest',    'credentials' => [        'key'    => 'YOUR_AWS_ACCESS_KEY_ID', // 替换为您的 AWS 访问密钥 ID        'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY', // 替换为您的 AWS 秘密访问密钥    ]]);try {    $result = $sdk->publish([        'Message' => 'This is a test message.',        'PhoneNumber' => '+1234567890', // 替换为目标手机号码,包含国家码        'MessageAttributes' => [            'AWS.SNS.SMS.SenderID' => [                'DataType' => 'String',                'StringValue' => 'MySenderID' // 替换为您希望显示的发送者 ID (可选)            ]        ]    ]);    print_r($result);} catch (AwsExceptionAwsException $e) {    // 输出错误信息    echo 'Error: ' . $e->getMessage();}?>

代码解释:

require ‘vendor/autoload.php’;: 引入 Composer 自动加载器,加载 AWS PHP SDK。new AwsSnsSnsClient([…]): 创建 SNS 客户端实例,需要配置 AWS 区域、版本和凭证。$sdk->publish([…]): 调用 publish 方法发送 SMS 消息。Message: 消息内容。PhoneNumber: 目标手机号码,必须包含国家码。MessageAttributes: 消息属性,可以设置发送者 ID 等。try…catch: 捕获可能发生的 AWS 异常,并输出错误信息。

注意事项:

请确保您已配置正确的 AWS 区域和凭证。目标手机号码必须包含国家码。发送者 ID 是可选的,但某些国家/地区可能要求必须设置。您需要在 AWS 管理控制台中为您的 AWS 账户启用 SMS 发送功能。

获取投递状态

Amazon SNS 本身不直接提供回调 URL 用于接收投递状态。目前,获取 SMS 消息投递状态的主要方法是使用 Amazon CloudWatch Logs。SNS 会将 SMS 消息的投递日志发送到 CloudWatch Logs,您可以通过 CloudWatch API 查询这些日志。

步骤:

配置 SNS 将 SMS 消息日志发送到 CloudWatch Logs。 您需要在 AWS 管理控制台中配置 SNS,使其将 SMS 消息的日志发送到指定的 CloudWatch Logs 日志组。

使用 CloudWatch API 查询日志。 您可以使用 AWS PHP SDK 中的 CloudWatch Logs 客户端查询日志。

以下是一个使用 CloudWatch Logs API 获取日志事件的示例代码:

 'eu-west-1', // 替换为您的 AWS 区域    'version' => 'latest',    'credentials' => [        'key'    => 'YOUR_AWS_ACCESS_KEY_ID', // 替换为您的 AWS 访问密钥 ID        'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY', // 替换为您的 AWS 秘密访问密钥    ]]);$logGroupName = '/aws/sns/sms'; // 替换为您的 CloudWatch Logs 日志组名称$logStreamName = 'YourLogStreamName'; // 可选,如果知道具体的日志流名称,可以指定try {    $result = $client->getLogEvents([        'logGroupName' => $logGroupName,        //'logStreamName' => $logStreamName, // 可选        'startTime' => strtotime('-1 hour') * 1000, // 查询过去一小时内的日志        'endTime' => time() * 1000,        'limit' => 100, // 限制返回的日志事件数量        'startFromHead' => true, // 从日志流的开头开始读取    ]);    foreach ($result['events'] as $event) {        echo $event['message'] . "n";        // 在这里解析日志消息,提取投递状态信息    }} catch (AwsExceptionAwsException $e) {    echo 'Error: ' . $e->getMessage();}?>

代码解释:

new AwsCloudWatchLogsCloudWatchLogsClient([…]): 创建 CloudWatch Logs 客户端实例,需要配置 AWS 区域、版本和凭证。$client->getLogEvents([…]): 调用 getLogEvents 方法查询日志事件。logGroupName: CloudWatch Logs 日志组名称。logStreamName: 可选,如果知道具体的日志流名称,可以指定。startTime: 查询的起始时间,Unix 时间戳(毫秒)。endTime: 查询的结束时间,Unix 时间戳(毫秒)。limit: 限制返回的日志事件数量。startFromHead: 从日志流的开头开始读取。foreach ($result[‘events’] as $event): 遍历返回的日志事件,并解析日志消息,提取投递状态信息。

注意事项:

请确保您已配置正确的 AWS 区域和凭证。您需要根据实际情况修改 logGroupName 和 logStreamName。日志消息的格式可能因 SNS 配置而异,您需要根据实际情况解析日志消息。可以使用更复杂的过滤条件,例如使用 filterPattern 参数,来更精确地查询日志。

总结:

虽然 Amazon SNS 不直接提供回调 URL 用于接收投递状态,但您可以使用 CloudWatch Logs API 查询 SMS 消息的投递日志,从而获取投递状态信息。 这种方法需要您配置 SNS 将日志发送到 CloudWatch Logs,并编写代码来查询和解析日志。 通过这种方式,您可以有效地监控 SMS 消息的发送结果并及时处理异常。

以上就是使用 Amazon SNS 发送 SMS 并获取投递状态的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1325219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PHP命令怎么执行多线程操作_PHP多进程与pcntl扩展使用
上一篇 2025年12月12日 11:48:40
在外部PHP页面中集成WordPress页脚:方法与注意事项
下一篇 2025年12月12日 11:48:45

相关推荐

  • Springboot项目引入xxl-job

    要将xxl-job集成到spring boot项目中,可以按照以下步骤进行操作: 首先,从Gitee拉取xxl-job的源码,并将其配置为Docker镜像部署到服务器上。 # 执行Maven打包mvn clean install构建Docker镜像,镜像名称中不允许使用下划线docker build…

    2026年9月23日
    000
  • php数据如何防止CSRF跨站请求伪造_php数据表单令牌安全机制

    防止CSRF的核心是验证请求来源合法性,常用方法为表单令牌机制。1. 生成并存储CSRF令牌:用户访问表单页面时,PHP使用session_start()开启会话,通过bin2hex(random_bytes(32))生成安全令牌,存入$_SESSION[‘csrf_token&#821…

    2026年9月23日
    000
  • QQ阅读电子书官网_QQ阅读官方下载地址

    QQ阅读电子书官网是yuedu.reader.qq.com,该网站提供小说、杂志、漫画等多种数字内容,支持多设备同步与个性化阅读设置。 QQ阅读电子书官网地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来QQ阅读电子书官网,感兴趣的网友一起随小编来瞧瞧吧! https://yuedu.3…

    2026年9月23日
    000
  • 配置php递归函数处理递归转换_通过php递归函数转换数据格式

    递归函数通过自我调用处理树形结构,需有终止条件和问题缩小机制;示例中将扁平数组按parent_id构建为嵌套树,反之亦可展平为带层级的列表,适用于菜单、分类等无限级数据操作。 在PHP开发中,经常需要处理树形结构数据,比如分类、菜单、评论嵌套等。这类数据通常具有父子关系,且层级不确定,这时就需要使用…

    2026年9月23日
    100
  • UC浏览器官方网页版登录入口 UC浏览器最新官网链接

    UC浏览器官方网页版登录入口在官网https://www.ucweb.com/,点击顶部“网页版”选项并登录账号即可使用。 UC浏览器官方网页版登录入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来UC浏览器最新官网链接,想了解UC浏览器功能特点的网友一起随小编来瞧瞧吧! https:/…

    2026年9月23日
    700
  • Linux中如何查看服务日志?journalctl与syslog使用指南

    Linux中如何查看服务日志?journalctl与syslog使用指南Linux中如何查看服务日志?journalctl与syslog使用指南Linux中如何查看服务日志?journalctl与syslog使用指南Linux中如何查看服务日志?journalctl与syslog使用指南

    排查linux服务问题时,首选journalctl或syslog类系统查看日志。journalctl适用于systemd系统,可查看内核消息、服务启动输出等,支持按时间、单元、优先级过滤;syslog适用于传统系统,需服务主动发送日志,支持集中管理。掌握两者使用能有效定位问题。 在Linux系统中排…

    2026年9月23日 用户投稿
    100
  • 优化 Laravel Nova 动作响应消息的持久性与交互性

    本文探讨了 Laravel Nova 动作响应消息(toast 提示)持续时间过短的问题,尤其对于耗时较长的操作,默认提示难以满足用户反馈需求。我们提出并详细介绍了如何利用 Laravel Nova 4 的通知功能,实现持久化且可交互的用户通知,从而有效解决传统 toast 消息的局限性,提升用户体…

    2026年9月23日
    400
  • VSCode 如何自定义编辑器的选中内容颜色 VSCode 编辑器选中内容颜色的自定义教程​

    自定义vscode选中颜色需在settings.json中修改workbench.colorcustomizations,关键属性包括editor.selectionbackground(鼠标拖选色)、editor.wordhighlightbackground(单词高亮色)、editor.word…

    2026年9月23日
    100
  • win11开机PIN码登录选项消失了怎么办_win11PIN码登录选项丢失修复方法

    首先尝试切换登录方式重置PIN,若无效则通过命令提示符启用管理员账户,再检查本地组策略设置并清除NGC文件夹以重建PIN凭据,最终恢复PIN登录功能。 如果您尝试在Windows 11开机时使用PIN码登录,却发现登录选项中缺少PIN码入口,这通常是由系统临时故障、策略设置或账户同步问题导致的。此问…

    2026年9月23日
    000
  • mysql安装完如何优化 mysql基础性能调优配置建议

    mysql安装完如何优化 mysql基础性能调优配置建议mysql安装完如何优化 mysql基础性能调优配置建议mysql安装完如何优化 mysql基础性能调优配置建议mysql安装完如何优化 mysql基础性能调优配置建议

    安装完 mysql 后需进行基础配置调优以提升性能,主要包括以下五点:1. 设置 innodb_buffer_pool_size 为物理内存的50%~80%,如16g内存可设为12g;2. 调整 max_connections 至合理并发数如500,并设置 wait_timeout 和 intera…

    2026年9月23日 用户投稿
    400
  • PHP数组中内嵌JSON字符串值的解析与访问教程

    本教程详细介绍了如何在PHP中高效地解析和访问包含JSON格式字符串的数组元素。通过使用json_decode()函数,可以将这些JSON字符串转换为可操作的PHP数组或对象,从而轻松提取所需的shortname和fullname等字段值,并提供了遍历和直接访问的示例代码及注意事项。 在php开发中…

    2026年9月23日
    100
  • 火狐浏览器官方最新版 Firefox电脑版安装入口

    火狐浏览器官方最新版Firefox电脑版安装入口在https://www.mozilla.org/zh-CN/firefox/new/,该页面提供具备强大隐私保护、高效渲染和跨设备同步功能的最新版本下载。 火狐浏览器官方最新版 Firefox电脑版安装入口在哪里?这是不少网友都关注的,接下来由PHP…

    2026年9月23日
    200
  • 如何使用Optuna优化AI大模型训练?自动化调参的详细教程

    如何使用Optuna优化AI大模型训练?自动化调参的详细教程如何使用Optuna优化AI大模型训练?自动化调参的详细教程如何使用Optuna优化AI大模型训练?自动化调参的详细教程如何使用Optuna优化AI大模型训练?自动化调参的详细教程

    Optuna通过智能搜索与剪枝机制,显著提升AI大模型超参数优化效率。它以目标函数封装训练流程,利用TPE等算法智能采样,结合ASHA等剪枝策略,在分布式环境下高效搜索最优配置,同时提供可复现性与可视化分析,降低调参成本。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 Dee…

    2026年9月23日 用户投稿
    100
  • windows8无法弹出usb设备怎么办_windows8安全移除U盘失败解决方法

    先重启Windows资源管理器,再依次排查占用进程、使用文件资源管理器弹出、确保Plug and Play服务运行、禁用USB选择性暂停、修复注册表通知项,可解决U盘无法安全移除问题。 如果您尝试从Windows 8电脑上安全移除U盘或其他USB设备,但系统提示设备正在使用中或没有任何反应,则可能是…

    2026年9月23日
    200
  • Vue.js 项目中实现练习进度保存的策略与实践

    本文将探讨在vue.js项目中实现用户练习进度保存的最佳实践。针对需要跨会话保留用户进度的场景,我们将重点介绍如何利用浏览器localstorage进行数据持久化,包括数据的序列化与反序列化、在关键生命周期钩子中加载与保存数据,以及相关的注意事项,确保用户能够从上次中断的地方继续练习。 在开发基于V…

    2026年9月23日
    100
  • 苹果官网真品认证通道 iPhone序列号查验正品入口

    苹果官网真品认证通道为https://checkcoverage.apple.com/cn/zh/,用户可通过输入iPhone序列号查验设备激活状态、保修期限及技术支持覆盖情况,确保正品并降低二手交易风险。 苹果官网真品认证通道 iPhone序列号查验正品入口在哪里?这是不少网友都关注的,接下来由P…

    2026年9月23日
    200
  • PHP面向对象高级特性_PHP高级OOP设计模式

    PHP高级OOP特性如命名空间、Traits、魔术方法等结合设计模式可提升代码质量。1. 命名空间避免类冲突,Traits实现横向复用,后期静态绑定支持运行时解析,魔术方法增强对象控制,抽象类与接口定义契约,Final防止继承修改。2. 单例确保唯一实例,工厂封装创建逻辑,依赖注入降低耦合,观察者实…

    2026年9月23日
    100
  • mysql如何输入特殊字符 mysql写sql语句的转义方法

    mysql如何输入特殊字符 mysql写sql语句的转义方法mysql如何输入特殊字符 mysql写sql语句的转义方法mysql如何输入特殊字符 mysql写sql语句的转义方法mysql如何输入特殊字符 mysql写sql语句的转义方法

    在mysql中处理特殊字符的核心方法是使用预处理语句,1.手动转义可通过反斜杠实现,如单引号转为’、双引号转为”等,但易出错且不安全;2.更推荐使用预处理语句(prepared statements)或参数绑定,它能自动处理特殊字符并防止sql注入;3.预处理语句的优势包括安全性高,彻底杜绝sql注…

    2026年9月23日 用户投稿
    400
  • AO3镜像站替代访问链接_AO3镜像站官方镜像站点

    AO3镜像站替代访问链接为https://nightalk.xyz,用户可通过主站或镜像站点登录账户,支持中文界面切换与多端同步阅读。 AO3镜像站替代访问链接在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来AO3镜像站官方镜像站点,感兴趣的网友一起随小编来瞧瞧吧! https://arc…

    2026年9月23日
    100
  • PHP高效读取大型GZ文件:揭示Gzip的顺序访问限制与实践方法

    本教程深入探讨了php中处理大型gz压缩文件的核心挑战:其固有的顺序访问特性。我们将解释为何无法对gz文件进行随机跳转读取,以及这意味着您必须从头开始按序解压数据。文章将提供一种实用的分块读取策略,并附带php示例代码,帮助开发者高效、安全地处理超大gz文件,同时讨论潜在的跨块数据处理问题及内存管理…

    2026年9月23日
    200

发表回复

登录后才能评论
关注微信