本文为您介绍PHP调用短信消息API的操作流程。
简介
当您使用短信的API接口发送短信后,可以通过使用MNS的Queue模型来接收短信的回执消息,假如服务出现异常情况时(如网络问题),导致消息回执未成功获取,还可以通过短信发送状态查询API接口进行一定的补偿(目前支持30天内发送记录的查询)。
注意 使用短信服务新版SDK调用API接口,请查看新版SDK参考和API参考。
消息的订阅
- 云通信的所有业务消息都通过MNS消息服务向外发送。用户每订阅一个类别的消息(比如上行短信消息SmsUp),系统都会为用户分配一个独立的消息队列。
- 用户可以通过阿里云账号拿到一个临时的token用于获取队列中的消息。用户可以下载demo,编写简单的消息处理类即可完成消息处理的任务。
- 在页面上订阅消息,订阅完消息后,能拿到消息队列名称(queueName)。比如:Alicom-Queue-xxxxxx-SmsReport 。队列名字每个用户都不同。
路径:短信产品进入控制台→应用开发→接口调用→云通信消息接收→短信状态报告接收→向右滑动 (MNS消息队列消费模式。接收消息队列信息,请下载消息服务SDK进行程序编写,详见API文档)位置如下图所有示;
点击进入控制台。
消息类型
短信提供2种消息类型SmsReport(短信回执报告消息) 和 SmsUp(上行短信消息)。
- 通过订阅SmsReport短信状态报告,可以获知每条短信的发送情况,了解短信是否达到终端用户的状态与相关信息。
- 通过订阅SmsUp上行短信消息,可以获知终端用户回复短信的内容。
短信回执消息SmsReport消息体格式
名称 | 类型 | 描述 | 示例 | 是否必须 |
---|---|---|---|---|
phone_number | String | 短信接收号码。 | 13000000000 | 可选 |
success | Boolean | 发送是否成功。 | true | 必须 |
biz_id | String | 发送回执ID。 | 1234^345 | 必须 |
out_id | String | 调用发送短信接口时传的outId。 | 123456 | 可选 |
send_time | String | 转发给运营商的时间。 | 2017-06-01 10:00:00 | 必须 |
report_time | String | 收到运营商回执的时间。 | 2017-06-01 10:00:05 | 可选 |
err_code | String | 错误码。 | UNKNOW | 可选 |
err_msg | String | 错误信息。 | 未知异常 | 可选 |
sms_size | String | 140字节算一条短信,短信长度超过140字节时会拆分成多条短信发送。 | 1,2,3 | 可选 |
上行短信消息SmsUp
名称 | 类型 | 描述 | 示例 | 是否必须 |
---|---|---|---|---|
phone_number | String | 短信接收号码。 | 13000000000 | 可选 |
content | String | 短信内容。 | true | 必须 |
sign_name | String | 短信签名。 | 【阿里云】 | 必须 |
send_time | String | 时间。 | 2017-06-01 10:00:00 | 必须 |
dest_code | String | 扩展码。 | 123456 | 必须 |
sequence_id | String | 消息序列ID。 | 123456 | 必须 |
技术对接步骤
下载消息SDK
请下载PHP SDK,并将完整的PHP SDK引用到您的工程中,调用示例存放于api_demo、msg_demo目录中,请您参考或修改示例正确调用api,api及依赖项放置在api_sdk、msg_sdk目录中
SDK&DEMO[下载地址]
编写样例程序
// 代码节选,详见aliyun-dysms-php-sdk/msg_demo/MsgDemo.php
...
echo "消息接口查阅短信状态报告返回结果:\n";
MsgDemo::receiveMsg(
// 消息类型,SmsReport: 短信状态报告
"SmsReport",
// 在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName
"Alicom-Queue-xxxxxxxx-SmsReport",
/**
* 回调
* @param stdClass $message 消息数据
* @return bool 返回true,则工具类自动删除已拉取的消息。返回false,消息不删除可以下次获取
*/
function ($message) {
print_r($message);
return false;
}
);
echo "消息接口查阅短信服务上行返回结果:\n";
MsgDemo::receiveMsg(
// 消息类型,SmsUp: 短信服务上行
"SmsUp",
// 在云通信页面开通相应业务消息后,就能在页面上获得对应的queueName
"Alicom-Queue-xxxxxxxx-SmsUp",
/**
* 回调
* @param stdClass $message 消息数据
* @return bool 返回true,则工具类自动删除已拉取的消息。返回false,消息不删除可以下次获取
*/
function ($message) {
print_r($message);
return false;
}
);
在文档使用中是否遇到以下问题
更多建议
匿名提交