si / si-api-php
SI-PHP 应用
This package is not auto-updated.
Last update: 2024-09-25 10:48:10 UTC
README
先决条件
- 您已安装 PHP 解释器(最低版本为 5.6)。
安装
要在您的项目中使用 SI API PHP 客户端,您必须将以下文件添加到项目文件中
src/main/php/api/Sms.php
或者推荐使用 composer 安装库。
$ composer require si/si-api-php
运行示例
需要做的第一件事是包含 Sms.php
并初始化消息客户端。在开始任何示例之前,您必须通过实例化 Sms REST 客户端类对象来填充特定数据(API 密钥、发送者 ID、基本 URL)。
require_once '<PATH-TO-FOLDER>/Sms.php';
$smsObj = new Sms(<Api_key>, <sender_id>, <base_url>);
基本消息示例
包含 Sms.php
并初始化消息客户端后,您需要遵循以下函数
第一步是准备消息
$msg = <your_message_comes_here>;
然后下一步是准备您的联系人列表
$receivers = <receiver_number1,receiver_number2>;
接收短信的手机号码。可以是带或不带 91 的。也可以用逗号分隔的格式提供多个号码。
现在您可以发送消息了
$response = $smsObj->sendSms($receivers, $msg);
带有可选参数的基本消息示例
我们可以为不同的功能提供可选参数,以下进行说明
-
调度短信:我们必须提供调度短信的日期和时间
$response = $smsObj->sendSms($receivers , $msg , [ 'time' => '2017-05-19 11:17:55 AM', ]);
-
Unicode 消息:指定要发送的消息为 unicode 格式。也可以用于自动检测 unicode 短信。
$response = $smsObj->sendSms($receivers , $msg , [ 'unicode' => '1', ]);
-
闪光消息:指定要发送的消息为闪光格式
$response = $smsObj->sendSms($receivers , $msg , [ 'flash' => '1', ]);
-
接收投递报告 URL:接收投递报告的编码 URL。在 DLR URL 中指定自定义项是强制性的。
$drl_url = 'http://exapmle.com?sent={sent}&delivered={delivered}&msgid={msgid}&sid={sid}&status={status}&reference={reference}&custom1={custom1}&custom2={custom2}'; $response = $smsObj->sendSms($receivers , $msg , [ 'dlr_url' => $dlr_url, ]);
带有高级参数(可选)的基本消息示例
-
格式:输出格式应按此变量指定,例如 XML/JSON/JSONP。默认响应将为 JSON
$response = $smsObj->sendSms($receivers , $msg , [ 'format' => 'json', ]);
-
Custom1 & Custom2:自定义参考字段。
$response = $smsObj->sendSms($receivers , $msg , [ 'custom1' => 'xxxxxxx', 'custom2' => 'xxxxxxx' ]);
-
端口:发送短信的端口号。有效的整数端口号应大于 2000
$response = $smsObj->sendSms($receivers , $msg , [ 'port' => '8223', ]);
使用 JSON 数据进行消息传递
可以通过通过 POST 方法将值发送到前面的 URL 来使用 JSON 数据发送短信,并通过 urlencoded json 数据进行 POST。
示例 JSON 数据
$jsonData = {"sms":
[
{
"to": "9xxxxxxxx",
"custom": 9xxxxxxxx,
"message": "Message from json api node 1"
},
{
"to": "91xxxxxxxx",
"custom": 34,
"message": "Message from json api node 2"
}
]
}
$response = $smsObj->sendSmsUsingJsonApi($jsonData,['formate'=>'json']);
JSON 可选参数
-
向多个号码发送相同消息
$jsonData = { "message": "test json", "sms":[ { "to": "95XXXXXXXX", "msgid": "1", "message": "test sms", "custom1": "11", "custom2": "22", "sender": "AAAAAA" }, { "to": "99XXXXXXXX", "msgid": "2", "custom1": "1", "custom2": "2" }], "unicode": 1, "flash": 1, "dlrurl": "http://www.example.com/dlr.php" }
-
向多个号码发送不同消息
$jsonData = { "message": "test json", "sms":[ { "to": "95XXXXXXXX", "msgid": "1", "message": "test sms", "custom1": "11", "custom2": "22", "sender": "AAAAAA" }, { "to": "99XXXXXXXX", "msgid": "2", "message": "json test sms", "custom1": "1", "custom2": "2" }], "unicode": 1, "flash": 1, "dlrurl": "http://www.example.com/dlr.php" }
使用 XML 数据进行消息传递
可以通过将值通过 POST 发送到前面的函数来使用 XML 值发送短信。
$xml = <?xml version="1.0" encoding="UTF-8"?>
<xmlapi>
<sender>AAAAAA</sender>
<message>xml test</message>
<unicode>1</unicode>
<flash>1</flash>
<campaign>xml test</campaign>
<dlrurl>
<![CDATA[http://domain.com/receive?sent={sent}&delivered={delivered}&msgid={msgid}&sid={sid}&status={status}&reference={reference}
&custom1={custom1}&custom2={custom2}&credits={credits}]]>
</dlrurl>
<sms>
<to>95xxxxxxxx</to>
<custom>22</custom>
<custom1>99</custom1>
</sms>
<sms>
<to>99xxxxxxxx</to>
<custom>229</custom>
<custom1>995</custom1>
</sms>
</xmlapi>
$response = $smsObj->sendSmsUsingXmlApi($xml,['formate'=>'json']);
-
向多个号码发送相同消息
$xml = <?xml version="1.0" encoding="UTF-8"?> <api> <campaign>campaign</campaign> <dlrurl> <![CDATA[http://domain.com/receive?msgid={msgid}&sid={sid}&status={status}&custom1={custom1}]]> </dlrurl> <time>2014-12-26 04:00pm</time> <unicode>0</unicode> <flash>0</flash> <sender>senderid</sender> <message><![CDATA[smstext]]></message> <sms> <to>9190********</to> </sms> <sms> <to>9191********</to> </sms> </api>
-
向多个号码发送不同消息
$xml = <api> <campaign>campaign</campaign> <time>2014-12-26 04:00pm</time> <unicode>0</unicode> <flash>0</flash> <sms> <to>9190********</to> <sender>senderid</sender> <message>smstext</message> <custom>2</custom> <dlrurl> <![CDATA[http://domain.com/receive?msgid={msgid}&sid={sid}&status={status}&custom1={custom1}]]> </dlrurl> </sms> <sms> <to>9191********</to> <sender>senderid</sender> <message><![CDATA[smstext]]></message> <custom>2</custom> <dlrurl> <![CDATA[http://domain.com/receive?msgid={msgid}&sid={sid}&status={status}&custom1={custom1}]]> </dlrurl> </sms> </api>
获取消息状态
要检查任何发送的短信活动的状态,您必须只有相应的消息(不是组 ID)的消息 ID。您只能检查当天发送的消息的状态。如果使用 POST 方法拉取消息状态,则一次可以拉取最多 500 条消息的状态。以下是一个检查 SMS 状态的函数,其格式如下
$statusResponse = $smsObj->smsStatusPull("fe5a70a3-1d65-40de-93b3-e50ebdc69272:1",['formate'=>'json']);
可选参数
-
格式:输出格式应按此变量指定,XML/JSON/JSONP。默认响应将为 JSON。
-
Numberinfo:查询服务提供商和位置数据的标志,即 0 或 1。
-
页:获取特定页面的状态详细信息,其中页面为 1 或更大。
向 Optin 组发送 SMS
要向 Optin 组发送短信,必须在您的帐户中创建一个 optin 组及其相关的关键词。还需要将那些 optin 关键词的号码添加到组中,即 optin 组。
必填参数
- BASE_URL:您的 SMS 服务 URL
- 方法:预定义方法,例如 optin
- 发送者:分配给您的账户的发送者ID
- id/名称:id-optin组ID/名称-Optin关键字,以逗号分隔的ID或optin组关键字
- 消息:要发送的消息。消息文本为URL编码(正常为1000字符,unicode为500字符)
可选参数
-
时间:安排短信的日期和时间,格式为:YYYY-MM-DD HH:MM:SS 或 YYYY-MM-DD HH:MM AM/PM
-
unicode:指定要发送的消息为unicode格式。也可以用于自动检测unicode短信,例如 1/0/auto
-
闪光灯:指定要发送的消息为闪光灯格式,例如 1 或 0
-
格式:输出格式应为此变量指定的格式,XML/PHP/JSON/JSONP。默认响应为JSON
-
回调:JSONP响应格式的回调函数,例如 字符串
$response = $smsObj->smsToOptinGroup($msg, $optinId, ['time' => '2017-06-11 11:17:55 AM', 'unicode' => '1', 'flash' => '1', 'formate'=>'json']);
向一个组发送消息
在您的账户中,必须存在一个组以及该组下的号码,才能向一个组发送任何消息。发送简单消息到组的API格式如下。
$response = $smsObj->sendMessageToGroup($msg, $name , $group_id);
可选参数
- 格式:输出格式应为此变量指定的格式,XML/PHP/JSON/JSONP。默认响应为JSON
- id:以逗号分隔的组ID
必填参数
- BASE_URL:您的 SMS 服务 URL
- 方法:预定义方法,例如 groups
- 发送者:分配给您的账户的发送者ID,发送者ID(6个字母)
- 名称:组名称
- 消息:要发送的消息,消息文本为URL编码(正常为1000字符,unicode为500字符)
将联系人添加到组
首先,您需要在您的账户中创建一个组,然后才能向现有的有效组添加联系人。添加联系人到组的函数格式如下。
$response = $smsObj->addContactsToGroup( $name , $receiverNumber ,['fullname'=>'abc','formate'=>'json']);
必填参数
- BASE_URL:您的短信服务URL
- 方法:预定义方法
groups.register
- 号码:联系人的手机号码(带或不带91) 99XXXXXXXX 或 9199XXXXXXXX
- 名称:组名称(不区分大小写)
可选参数
- 全名:要添加的联系人的姓名,即联系人的姓名
- 电子邮件:要添加的联系人的电子邮件,即联系人的电子邮件
- 格式:输出格式应为此变量指定的格式,XML/PHP/JSON/JSONP。默认响应为JSON
- 操作:指定操作的标志,可以是
add/delete
。添加操作是默认操作
编辑安排
应用程序必须有一个安排好的短信活动以进一步修改它,并且必须保存要重新安排的短信活动的组ID。为了编辑安排好的时段,在其执行前应有至少5分钟的间隔。编辑安排短信时段的参数格式如下
$response = $smsObj->editSchedule( $new_time , $group_id ,['formate'=>'json']);
必填参数
- URL:您的短信服务URL
- 方法:预定义方法
sms.schedule
- groupid:需要编辑安排的组ID
- 任务:指定安排的时间应修改为time参数中提到的,即
modify
- 时间:需要重新安排的时段的时间。格式为:YYYY-MM-DD HH:MM:SS 或 YYYY-MM-DD HH:MM AM/PM
可选参数
- 格式:输出格式应为此变量指定的格式,XML/PHP/JSON/JSONP。默认响应为JSON。
预期的API错误代码
A431 Invalid Group ID
A434 Campaign within next 5 minutes cannot be modified/cancelled.
删除安排
应用程序必须有一个安排好的短信活动以进一步修改它,并且必须保存要删除的短信活动的组ID。为了删除安排好的时段,在其执行前应有至少5分钟的间隔。已安排的短信活动的删除参数格式如下
$response = $smsObj->deleteScheduledSms($group_id ,['formate'=>'json']);
必填参数
- BASE_URL:您的短信服务URL。
- 方法:预定义方法
sms.schedule
。 - groupid:要删除的组ID
信用可用性检查
此功能还可以用于检查您账户中的信用,格式如下
$response = $smsObj->creditAvailabilityCheck(['formate'=>'json']);
必填参数
- URL:您的短信服务URL
- 方法:预定义方法
account.credits
可选参数
- 格式:输出格式应为此变量指定的格式,XML/PHP/JSON/JSONP。默认响应为JSON。
SI查找
要查找任何号码的信息,必须将国家代码和号码一起输入。用于查找特定号码的函数格式如下:
$response = $smsobj->SILookup($mobile_number, ['format' => 'json']);
必填参数
- BASE_URL:您的 SMS 服务 URL
- 方法:预定义方法
lookup
- 目标:要发送短信的国家代码前的手机号码。也可以以逗号分隔的格式提供多个号码。手机号码(GET- 10个号码,POST- 100个号码)
创建Txtly
Txtly基本上是一个缩短的URL,可以用于短信,这样短信就不会超过字符限制。创建Txtly链接的函数如下
$response = $smsObj->createtxtly("https://facebook.com/xyz/lmn/abc",['format' => 'json']);
必填参数
- URL:您的短信服务URL
- 方法:预定义方法txtly.create
- url:需要缩短和跟踪的URL(长URL,url_encoded)
可选参数
- 格式:输出格式应与以下变量指定的一致,XML/PHP/JSON/JSONP。默认响应将为JSON
- 令牌:[http://msg.mn/heel](http://msg.mn/heel)(heel是令牌。对于每个txtly是唯一的。可以自定义代表您品牌/公司的单词。如果未提供,将生成一个随机的唯一令牌)
- 标题:您的txtly的显著标题。如果未提供,您的txtly将不包含任何标题
- 高级:高级分析提供跟踪谁(收件人手机号码)访问了页面的选项。1- 启用高级分析/0(默认)- 禁用高级分析
- 跟踪:位置跟踪提供了URL访问者的城市和州详细信息。1- 启用位置跟踪/0(默认)- 禁用位置跟踪
- 附加:需要压缩到短链接的媒体文件。在CURL请求中提供媒体文件
- 回调:包含参数以提取客户设备/IP详情的回调URL。[http://TestDomain.com/TestFile.php?os=%7Bplatform%7D&mobile=%7Bmobile%7D](http://TestDomain.com/TestFile.php?os=%7Bplatform%7D&mobile=%7Bmobile%7D)(对于原始响应数据格式。如果您想要以JSON格式获取响应,请在回调URL之前使用(json)标签。例如:(json)[http://TestDomain.com/TestFile.php?os=%7Bplatform%7D&mobile=%7Bmobile%7D](http://TestDomain.com/TestFile.php?os=%7Bplatform%7D&mobile=%7Bmobile%7D))
URL中要使用的回调参数
- client_ip:访问URL的IP地址,如
156.151.23.65
- host:URL的域名名称,例如- Example.com
- query_string:URL的查询字符串,例如
http://example.com/over/there?name=ferret
- user_agent:用于URL的用户代理,即 Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10
- browser:访问URL的浏览器,例如
msie
- browser_version:访问URL时使用的浏览器的版本,例如
11.0
- browser_lang:访问URL时操作系统的语言,例如
English
- browser_engine:访问URL的浏览器引擎,例如
Trident
- resolution:访问URL时的分辨率,例如
1024*768
- platform:访问URL时设备的操作系统,例如
Android OS
- platform_version:访问URL时设备的操作系统的版本,例如
5.0
- device_type:访问URL时设备的类型,例如
phone
- device_brand:访问URL时设备的品牌,例如
Motorola
- device_version:访问URL时设备的版本号,例如
XT1068
- device_model:访问URL时设备的型号名称,例如
HTC Dream
- touch_enabled:从访问URL的设备是否支持触摸,例如yes
- latitude:从访问URL的地方的纬度坐标,例如
12.9667° N
- 经度:访问URL的经度坐标
77.5667° E
- 国家:访问URL的国家
印度
- 地区:访问URL的州
卡纳塔克邦
- 城市:访问URL的城市
班加罗尔
- 创建时间:请求时间(Unix时间戳)
1426243175
- 手机:短URL接收者手机号码
99XXXXXXXX
- 操作系统代码:访问URL的操作系统代码,例如
(AN)
表示 Android
预期错误代码
- E500 请提供重定向的URL
- E5011 Txtly 已存在。请尝试另一个。
- E502 请上传文件
- E503 文件格式无效。请上传有效文件。
- E504 文件大小超出。最大50000 Kb。
- E505 文件上传失败。请重试。
删除Txtly
必须有一个txtly ID才能从数据库中删除。以下是一个删除Txtly链接的函数
$response = $smsObj->deletetxtly("205XXX",['format' => 'json']);
必填参数
- URL:您的短信服务URL
- 方法:预定义方法
txtly
- 任务:在txtly上执行的任务
delete
- id:txtly的ID
123XXXX
- 应用:应用引用
1
可选参数
- 格式:输出格式应为此变量指定的格式,XML/PHP/JSON/JSONP。默认响应为JSON。
Txtly 报告提取
函数用于提取您账户中所有txtly缩短链接的日志
$response = $smsObj->txtlyReportExtract(['format' => 'json']);
必填参数
- URL:您的短信服务URL
- 方法:预定义方法
txtly
- 应用:Txtly 应用日志
1
可选参数
- 格式:输出格式应为此变量指定的格式,XML/PHP/JSON/JSONP。默认响应为JSON
提取单个Txtly的日志
以下是一个从我们的账户中提取单个txtly日志的函数
$response = $smsObj->pullLogForIndividualtxtl("223XXX",['format' => 'json']);
必填参数
- URL:您的短信服务URL
- 方法:预定义方法
txtly.logs
- 应用:Txtly 应用日志
1
- id:要获取日志的txtly ID
123XXXXX
许可
此库受Apache 许可证 2.0版许可。