找了好多这种类型的平台,想找到一个支持语音通知的平台(其他平台要么使用语音通知费用高,要么就有充值最小限制),无意间发现了这个平台,平台很不错,支持的功能已经满足我的需求,短信发送的速度很快,并且充值也没有限制。平台支持四种功能:短信验证码,短信通知,语音验证码,语音通知。
而我主要是使用的短信通知和语音通知,但是该平台的API不太完善,官网也没有提供PHP相关的例子可供参考,我要了几好次也一直没有给,没有办法,自己研究吧,不过最后还是被我给研究出来了。
前期准备:
1、先到https://www.139130.com/注册帐号并认证。
2、创建应用 (并设置相关功能和请求白名单IP)
3、到短信和语音模板中创建模板并审核通过
4、在应用管理中上线该应用
5、接口开接。
在对接之前,要先获取到 Account Sid、Auth Token、APP ID、短信模板ID(或语音模板ID),这些信息都可以在它的管理中心获取到。
1、把函数加入到TP的公共函数中(把xxx的地方换成你自己的):
function jiXin($type , $tel , $content){
$rootUrl = "https://api.139130.com:8889/api/v1.0.0";
$accountSid = "xxxxxxxxxxxxx";
$authToken ="xxxxxxxxxxxxxxxx";
$timestamp= date('YmdHis',time());
$sig =sha1($accountSid.$authToken.$timestamp);
$appId ="xxxxxxxxxxxxxxxxxxx";
if($type == 1){
$template_id = "xxx";//短信模板
$url = $rootUrl . "/sms-notice/send?sig=".$sig;
}else{
$template_id = "xxx";//语音模板
$url = $rootUrl ."/voice-notice/send?sig=".$sig;
}
$authorization = ba
$headers = array("Authorization:{$authorization}", "sig:{$sig}" , "Accept:application/json;charset=utf-8","Content-Type:application/json;charset=utf-8");
$data=array('params'=>$content,'templateId'=>$template_id,'appId'=>$appId,'to'=>$tel);
$result = http_request($url, $headers ,json_encode($data));
return json_decode($result,true) ;
}
//HTTP请求(支持HTTP/HTTPS,支持GET/POST)
function http_request($url, $header , $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
短信和语音的模板在创建的时候有如下格式:
你好,{1},您的地址是:{2}
$params 这个数组就是替换模板中的{1} {2} 的,所以,你模板中用了几个替换符,在数组中传入几个。
$params = array('替换内容','替换内容2');
调用方法:$ret = jiXin( $type , $row['tel'], $params); //type 1为短信,2为语音
关于返回值$ret 是返回的数组,它接口原来返回的是JSON格式,返回的值如下:
返回成功时:
{
"code": "0",
"msg": "success",
"uuid": "ad524a1b-5ffd-4b57-a296-504194922b41",
"created": "20160825153024"
}
返回失败时:
{
"code": "1000",
"msg": "参数错误",
"suggest": "请参考接口协议XXX",
"created": "20160825153024"
}
我已经在返回值中把JSON处理成数组了,那你如果获取返回值时,可以直接用 $ret['code']....
有PHP经验的同学,可自行修改函数部分和调用部分的代码完成自己的需求,也可以到官网上面API中查看其他接口的方法。
