Commit ab3d1d88 authored by hujun's avatar hujun

edit

parent 822e5666
<?php <?php
namespace app\api\extend; namespace app\api\extend;
/** /**
* Created by PhpStorm. * Created by PhpStorm.
* User: zw * User: zw
* Date: 2017/12/4 * Date: 2017/12/4
* Time: 9:35 * Time: 9:35
* 基类 * 基类
*/ */
use think\Controller; use think\Controller;
use think\Request; use think\Request;
use think\Response; use think\Response;
class Basic extends Controller{ class Basic extends Controller{
/** /**
* 访问请求对象 * 访问请求对象
* @var Request * @var Request
*/ */
public $request; public $request;
/** /**
* 当前访问身份 * 当前访问身份
* @var string * @var string
*/ */
public $token; public $token;
/** /**
* 基础接口SDK * 基础接口SDK
* @param Request|null $request * @param Request|null $request
*/ */
public function __construct(Request $request = null) public function __construct(Request $request = null)
{ {
// CORS 跨域 Options 检测响应 // CORS 跨域 Options 检测响应
$this->corsOptionsHandler(); $this->corsOptionsHandler();
// 输入对象 // 输入对象
$this->request = is_null($request) ? Request::instance() : $request; $this->request = is_null($request) ? Request::instance() : $request;
} }
/** /**
* 输出返回数据 * 输出返回数据
* @param string $msg 提示消息内容 * @param string $msg 提示消息内容
* @param string $code 业务状态码 * @param string $code 业务状态码
* @param mixed $data 要返回的数据 * @param mixed $data 要返回的数据
* @param string $type 返回类型 JSON XML * @param string $type 返回类型 JSON XML
* @return Response * @return Response
*/ */
public function response($msg, $code = 'SUCCESS', $data = [], $type = 'json') public function response($msg, $code = 'SUCCESS', $data = [], $type = 'json')
{ {
$result = ['msg' => $msg, 'code' => $code, 'data' => $data, 'type' => strtolower($type)]; $result = ['msg' => $msg, 'code' => $code, 'data' => $data, 'type' => strtolower($type)];
return Response::create($result, $type); return Response::create($result, $type);
} }
/** /**
* 一维数据数组生成数据树 * 一维数据数组生成数据树
* @param array $list 数据列表 * @param array $list 数据列表
* @param string $id 父ID Key * @param string $id 父ID Key
* @param string $pid ID Key * @param string $pid ID Key
* @param string $son 定义子数据Key * @param string $son 定义子数据Key
* @return array * @return array
*/ */
public static function arr2tree($list, $id = 'id', $pid = 'pid', $son = 'sub') public static function arr2tree($list, $id = 'id', $pid = 'pid', $son = 'sub')
{ {
list($tree, $map) = [[], []]; list($tree, $map) = [[], []];
foreach ($list as $item) { foreach ($list as $item) {
$map[$item[$id]] = $item; $map[$item[$id]] = $item;
} }
foreach ($list as $item) { foreach ($list as $item) {
if (isset($item[$pid]) && isset($map[$item[$pid]])) { if (isset($item[$pid]) && isset($map[$item[$pid]])) {
$map[$item[$pid]][$son][] = &$map[$item[$id]]; $map[$item[$pid]][$son][] = &$map[$item[$id]];
} else { } else {
$tree[] = &$map[$item[$id]]; $tree[] = &$map[$item[$id]];
} }
} }
unset($map); unset($map);
return $tree; return $tree;
} }
/** /**
* 一维数据数组生成数据树 * 一维数据数组生成数据树
* @param array $list 数据列表 * @param array $list 数据列表
* @param string $id ID Key * @param string $id ID Key
* @param string $pid 父ID Key * @param string $pid 父ID Key
* @param string $path * @param string $path
* @param string $ppath * @param string $ppath
* @return array * @return array
*/ */
public static function arr2table(array $list, $id = 'id', $pid = 'pid', $path = 'path', $ppath = '') public static function arr2table(array $list, $id = 'id', $pid = 'pid', $path = 'path', $ppath = '')
{ {
$tree = []; $tree = [];
foreach (self::arr2tree($list, $id, $pid) as $attr) { foreach (self::arr2tree($list, $id, $pid) as $attr) {
$attr[$path] = "{$ppath}-{$attr[$id]}"; $attr[$path] = "{$ppath}-{$attr[$id]}";
$attr['sub'] = isset($attr['sub']) ? $attr['sub'] : []; $attr['sub'] = isset($attr['sub']) ? $attr['sub'] : [];
$attr['spl'] = str_repeat("&nbsp;&nbsp;&nbsp;├&nbsp;&nbsp;", substr_count($ppath, '-')); $attr['spl'] = str_repeat("&nbsp;&nbsp;&nbsp;├&nbsp;&nbsp;", substr_count($ppath, '-'));
$sub = $attr['sub']; $sub = $attr['sub'];
unset($attr['sub']); unset($attr['sub']);
$tree[] = $attr; $tree[] = $attr;
if (!empty($sub)) { if (!empty($sub)) {
$tree = array_merge($tree, (array)self::arr2table($sub, $id, $pid, $path, $attr[$path])); $tree = array_merge($tree, (array)self::arr2table($sub, $id, $pid, $path, $attr[$path]));
} }
} }
return $tree; return $tree;
} }
/** /**
* 获取数据树子ID * 获取数据树子ID
* @param array $list 数据列表 * @param array $list 数据列表
* @param int $id 起始ID * @param int $id 起始ID
* @param string $key 子Key * @param string $key 子Key
* @param string $pkey 父Key * @param string $pkey 父Key
* @return array * @return array
*/ */
public static function getArrSubIds($list, $id = 0, $key = 'id', $pkey = 'pid') public static function getArrSubIds($list, $id = 0, $key = 'id', $pkey = 'pid')
{ {
$ids = [intval($id)]; $ids = [intval($id)];
foreach ($list as $vo) { foreach ($list as $vo) {
if (intval($vo[$pkey]) > 0 && intval($vo[$pkey]) === intval($id)) { if (intval($vo[$pkey]) > 0 && intval($vo[$pkey]) === intval($id)) {
$ids = array_merge($ids, self::getArrSubIds($list, intval($vo[$key]), $key, $pkey)); $ids = array_merge($ids, self::getArrSubIds($list, intval($vo[$key]), $key, $pkey));
} }
} }
return $ids; return $ids;
} }
/** /**
* Cors Options 授权处理 * Cors Options 授权处理
*/ */
public static function corsOptionsHandler() public static function corsOptionsHandler()
{ {
if (request()->isOptions()) { if (request()->isOptions()) {
header('Access-Control-Allow-Origin:*'); header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Headers:Accept,Referer,Host,Keep-Alive,User-Agent,X-Requested-With,Cache-Control,Content-Type,Cookie,token'); header('Access-Control-Allow-Headers:Accept,Referer,Host,Keep-Alive,User-Agent,X-Requested-With,Cache-Control,Content-Type,Cookie,token');
header('Access-Control-Allow-Credentials:true'); header('Access-Control-Allow-Credentials:true');
header('Access-Control-Allow-Methods:GET,POST,OPTIONS'); header('Access-Control-Allow-Methods:GET,POST,OPTIONS');
header('Access-Control-Max-Age:1728000'); header('Access-Control-Max-Age:1728000');
header('Content-Type:text/plain charset=UTF-8'); header('Content-Type:text/plain charset=UTF-8');
header('Content-Length: 0', true); header('Content-Length: 0', true);
header('status: 204'); header('status: 204');
header('HTTP/1.0 204 No Content'); header('HTTP/1.0 204 No Content');
exit; exit;
} }
} }
/** /**
* Cors Request Header信息 * Cors Request Header信息
* @return array * @return array
*/ */
public static function corsRequestHander() public static function corsRequestHander()
{ {
return [ return [
'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Credentials' => true, 'Access-Control-Allow-Credentials' => true,
'Access-Control-Allow-Methods' => 'GET,POST,OPTIONS', 'Access-Control-Allow-Methods' => 'GET,POST,OPTIONS',
'Access-Defined-X-Support' => 'service@cuci.cc', 'Access-Defined-X-Support' => 'service@cuci.cc',
'Access-Defined-X-Servers' => 'Guangzhou Cuci Technology Co. Ltd', 'Access-Defined-X-Servers' => 'Guangzhou Cuci Technology Co. Ltd',
]; ];
} }
} }
<?php <?php
namespace app\api\untils; namespace app\api\untils;
/* /*
* Copyright (c) 2014 The CCP project authors. All Rights Reserved. * Copyright (c) 2014 The CCP project authors. All Rights Reserved.
* *
* Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license * Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license
* that can be found in the LICENSE file in the root of the web site. * that can be found in the LICENSE file in the root of the web site.
* *
* http://www.yuntongxun.com * http://www.yuntongxun.com
* *
* An additional intellectual property rights grant can be found * An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may * in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree. * be found in the AUTHORS file in the root of the source tree.
*/ */
class Rest { class Rest {
private $AccountSid; private $AccountSid;
private $AccountToken; private $AccountToken;
private $AppId; private $AppId;
private $SubAccountSid; private $SubAccountSid;
private $SubAccountToken; private $SubAccountToken;
private $ServerIP; private $ServerIP;
private $ServerPort; private $ServerPort;
private $SoftVersion; private $SoftVersion;
private $Batch; //时间sh private $Batch; //时间sh
private $BodyType = "xml";//包体格式,可填值:json 、xml private $BodyType = "xml";//包体格式,可填值:json 、xml
private $enabeLog = true; //日志开关。可填值:true、 private $enabeLog = true; //日志开关。可填值:true、
private $Filename="../log.txt"; //日志文件 private $Filename="../log.txt"; //日志文件
private $Handle; private $Handle;
function __construct($ServerIP,$ServerPort,$SoftVersion) function __construct($ServerIP,$ServerPort,$SoftVersion)
{ {
$this->Batch = date("YmdHis"); $this->Batch = date("YmdHis");
$this->ServerIP = $ServerIP; $this->ServerIP = $ServerIP;
$this->ServerPort = $ServerPort; $this->ServerPort = $ServerPort;
$this->SoftVersion = $SoftVersion; $this->SoftVersion = $SoftVersion;
$this->Handle = fopen($this->Filename, 'a'); $this->Handle = fopen($this->Filename, 'a');
} }
/** /**
* 设置主帐号 * 设置主帐号
* *
* @param AccountSid 主帐号 * @param AccountSid 主帐号
* @param AccountToken 主帐号Token * @param AccountToken 主帐号Token
*/ */
function setAccount($AccountSid,$AccountToken){ function setAccount($AccountSid,$AccountToken){
$this->AccountSid = $AccountSid; $this->AccountSid = $AccountSid;
$this->AccountToken = $AccountToken; $this->AccountToken = $AccountToken;
} }
/** /**
* 设置子帐号 * 设置子帐号
* *
* @param SubAccountSid 子帐号 * @param SubAccountSid 子帐号
* @param SubAccountToken 子帐号Token * @param SubAccountToken 子帐号Token
*/ */
function setSubAccount($SubAccountSid,$SubAccountToken){ function setSubAccount($SubAccountSid,$SubAccountToken){
$this->SubAccountSid = $SubAccountSid; $this->SubAccountSid = $SubAccountSid;
$this->SubAccountToken = $SubAccountToken; $this->SubAccountToken = $SubAccountToken;
} }
/** /**
* 设置应用ID * 设置应用ID
* *
* @param AppId 应用ID * @param AppId 应用ID
*/ */
function setAppId($AppId){ function setAppId($AppId){
$this->AppId = $AppId; $this->AppId = $AppId;
} }
/** /**
* 打印日志 * 打印日志
* *
* @param log 日志内容 * @param log 日志内容
*/ */
function showlog($log){ function showlog($log){
if($this->enabeLog){ if($this->enabeLog){
fwrite($this->Handle,$log."\n"); fwrite($this->Handle,$log."\n");
} }
} }
/** /**
* 发起HTTPS请求 * 发起HTTPS请求
*/ */
function curl_post($url,$data,$header,$post=1) function curl_post($url,$data,$header,$post=1)
{ {
//初始化curl //初始化curl
$ch = curl_init(); $ch = curl_init();
//参数设置 //参数设置
$res= curl_setopt ($ch, CURLOPT_URL,$url); $res= curl_setopt ($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_HEADER, 0); curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, $post); curl_setopt($ch, CURLOPT_POST, $post);
if($post) if($post)
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header); curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
$result = curl_exec ($ch); $result = curl_exec ($ch);
//连接失败 //连接失败
if($result == FALSE){ if($result == FALSE){
if($this->BodyType=='json'){ if($this->BodyType=='json'){
$result = "{\"statusCode\":\"172001\",\"statusMsg\":\"网络错误\"}"; $result = "{\"statusCode\":\"172001\",\"statusMsg\":\"网络错误\"}";
} else { } else {
$result = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Response><statusCode>172001</statusCode><statusMsg>网络错误</statusMsg></Response>"; $result = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><Response><statusCode>172001</statusCode><statusMsg>网络错误</statusMsg></Response>";
} }
} }
curl_close($ch); curl_close($ch);
return $result; return $result;
} }
/** /**
* 创建子帐号 * 创建子帐号
* @param friendlyName 子帐号名称 * @param friendlyName 子帐号名称
*/ */
function createSubAccount($friendlyName) function createSubAccount($friendlyName)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$body= "{'appId':'$this->AppId','friendlyName':'$friendlyName'}"; $body= "{'appId':'$this->AppId','friendlyName':'$friendlyName'}";
}else{ }else{
$body="<SubAccount> $body="<SubAccount>
<appId>$this->AppId</appId> <appId>$this->AppId</appId>
<friendlyName>$friendlyName</friendlyName> <friendlyName>$friendlyName</friendlyName>
</SubAccount>"; </SubAccount>";
} }
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SubAccounts?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SubAccounts?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐号Id + 英文冒号 + 时间戳 // 生成授权:主帐号Id + 英文冒号 + 时间戳
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发请求 // 发请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 获取子帐号 * 获取子帐号
* @param startNo 开始的序号,默认从0开始 * @param startNo 开始的序号,默认从0开始
* @param offset 一次查询的最大条数,最小是1条,最大是100条 * @param offset 一次查询的最大条数,最小是1条,最大是100条
*/ */
function getSubAccounts($startNo,$offset) function getSubAccounts($startNo,$offset)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
$body=" $body="
<SubAccount> <SubAccount>
<appId>$this->AppId</appId> <appId>$this->AppId</appId>
<startNo>$startNo</startNo> <startNo>$startNo</startNo>
<offset>$offset</offset> <offset>$offset</offset>
</SubAccount>"; </SubAccount>";
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$body= "{'appId':'$this->AppId','startNo':'$startNo','offset':'$offset'}"; $body= "{'appId':'$this->AppId','startNo':'$startNo','offset':'$offset'}";
}else{ }else{
$body=" $body="
<SubAccount> <SubAccount>
<appId>$this->AppId</appId> <appId>$this->AppId</appId>
<startNo>$startNo</startNo> <startNo>$startNo</startNo>
<offset>$offset</offset> <offset>$offset</offset>
</SubAccount>"; </SubAccount>";
} }
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/GetSubAccounts?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/GetSubAccounts?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 子帐号信息查询 * 子帐号信息查询
* @param friendlyName 子帐号名称 * @param friendlyName 子帐号名称
*/ */
function querySubAccount($friendlyName) function querySubAccount($friendlyName)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$body= "{'appId':'$this->AppId','friendlyName':'$friendlyName'}"; $body= "{'appId':'$this->AppId','friendlyName':'$friendlyName'}";
}else{ }else{
$body=" $body="
<SubAccount> <SubAccount>
<appId>$this->AppId</appId> <appId>$this->AppId</appId>
<friendlyName>$friendlyName</friendlyName> <friendlyName>$friendlyName</friendlyName>
</SubAccount>"; </SubAccount>";
} }
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/QuerySubAccountByName?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/QuerySubAccountByName?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 发送模板短信 * 发送模板短信
* @param to 短信接收彿手机号码集合,用英文逗号分开 * @param to 短信接收彿手机号码集合,用英文逗号分开
* @param datas 内容数据 * @param datas 内容数据
* @param $tempId 模板Id * @param $tempId 模板Id
*/ */
function sendTemplateSMS($to,$datas,$tempId) function sendTemplateSMS($to,$datas,$tempId)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$data=""; $data="";
for($i=0;$i<count($datas);$i++){ for($i=0;$i<count($datas);$i++){
$data = $data. "'".$datas[$i]."',"; $data = $data. "'".$datas[$i]."',";
} }
$body= "{'to':'$to','templateId':'$tempId','appId':'$this->AppId','datas':[".$data."]}"; $body= "{'to':'$to','templateId':'$tempId','appId':'$this->AppId','datas':[".$data."]}";
}else{ }else{
$data=""; $data="";
for($i=0;$i<count($datas);$i++){ for($i=0;$i<count($datas);$i++){
$data = $data. "<data>".$datas[$i]."</data>"; $data = $data. "<data>".$datas[$i]."</data>";
} }
$body="<TemplateSMS> $body="<TemplateSMS>
<to>$to</to> <to>$to</to>
<appId>$this->AppId</appId> <appId>$this->AppId</appId>
<templateId>$tempId</templateId> <templateId>$tempId</templateId>
<datas>".$data."</datas> <datas>".$data."</datas>
</TemplateSMS>"; </TemplateSMS>";
} }
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SMS/TemplateSMS?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SMS/TemplateSMS?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
//重新装填数据 //重新装填数据
if($datas->statusCode==0){ if($datas->statusCode==0){
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$datas->TemplateSMS =$datas->templateSMS; $datas->TemplateSMS =$datas->templateSMS;
unset($datas->templateSMS); unset($datas->templateSMS);
} }
} }
return $datas; return $datas;
} }
/** /**
* 外呼通知 * 外呼通知
* @param to 被叫号码 * @param to 被叫号码
* @param mediaName 语音文件名称,格式 wav。与mediaTxt不能同时为空。当不为空时mediaTxt属性失效。 * @param mediaName 语音文件名称,格式 wav。与mediaTxt不能同时为空。当不为空时mediaTxt属性失效。
* @param mediaTxt 文本内容 * @param mediaTxt 文本内容
* @param displayNum 显示的主叫号码 * @param displayNum 显示的主叫号码
* @param playTimes 循环播放次数,1-3次,默认播放1次。 * @param playTimes 循环播放次数,1-3次,默认播放1次。
* @param respUrl 外呼通知状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知。 * @param respUrl 外呼通知状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知。
* @param userData 用户私有数据 * @param userData 用户私有数据
* @param maxCallTime 最大通话时长 * @param maxCallTime 最大通话时长
* @param speed 发音速度 * @param speed 发音速度
* @param volume 音量 * @param volume 音量
* @param pitch 音调 * @param pitch 音调
* @param bgsound 背景音编号 * @param bgsound 背景音编号
*/ */
function landingCall($to,$mediaName,$mediaTxt,$displayNum,$playTimes,$respUrl,$userData,$maxCallTime,$speed,$volume,$pitch,$bgsound) function landingCall($to,$mediaName,$mediaTxt,$displayNum,$playTimes,$respUrl,$userData,$maxCallTime,$speed,$volume,$pitch,$bgsound)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$body= "{'playTimes':'$playTimes','mediaTxt':'$mediaTxt','mediaName':'$mediaName','to':'$to','appId':'$this->AppId','displayNum':'$displayNum','respUrl':'$respUrl', $body= "{'playTimes':'$playTimes','mediaTxt':'$mediaTxt','mediaName':'$mediaName','to':'$to','appId':'$this->AppId','displayNum':'$displayNum','respUrl':'$respUrl',
'userData':'$userData','maxCallTime':'$maxCallTime','speed':'$speed','volume':'$volume','pitch':'$pitch','bgsound':'$bgsound'}"; 'userData':'$userData','maxCallTime':'$maxCallTime','speed':'$speed','volume':'$volume','pitch':'$pitch','bgsound':'$bgsound'}";
}else{ }else{
$body="<LandingCall> $body="<LandingCall>
<to>$to</to> <to>$to</to>
<mediaName>$mediaName</mediaName> <mediaName>$mediaName</mediaName>
<mediaTxt>$mediaTxt</mediaTxt> <mediaTxt>$mediaTxt</mediaTxt>
<appId>$this->AppId</appId> <appId>$this->AppId</appId>
<displayNum>$displayNum</displayNum> <displayNum>$displayNum</displayNum>
<playTimes>$playTimes</playTimes> <playTimes>$playTimes</playTimes>
<respUrl>$respUrl</respUrl> <respUrl>$respUrl</respUrl>
<userData>$userData</userData> <userData>$userData</userData>
<maxCallTime>$maxCallTime</maxCallTime> <maxCallTime>$maxCallTime</maxCallTime>
<speed>$speed</speed> <speed>$speed</speed>
<volume>$volume</volume> <volume>$volume</volume>
<pitch>$pitch</pitch> <pitch>$pitch</pitch>
<bgsound>$bgsound</bgsound> <bgsound>$bgsound</bgsound>
</LandingCall>"; </LandingCall>";
} }
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/Calls/LandingCalls?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/Calls/LandingCalls?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 语音验证码 * 语音验证码
* @param verifyCode 验证码内容,为数字和英文字母,不区分大小写,长度4-8位 * @param verifyCode 验证码内容,为数字和英文字母,不区分大小写,长度4-8位
* @param playTimes 播放次数,1-3次 * @param playTimes 播放次数,1-3次
* @param to 接收号码 * @param to 接收号码
* @param displayNum 显示的主叫号码 * @param displayNum 显示的主叫号码
* @param respUrl 语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知 * @param respUrl 语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知
* @param lang 语言类型 * @param lang 语言类型
* @param userData 第三方私有数据 * @param userData 第三方私有数据
*/ */
function voiceVerify($verifyCode,$playTimes,$to,$displayNum,$respUrl,$lang,$userData) function voiceVerify($verifyCode,$playTimes,$to,$displayNum,$respUrl,$lang,$userData)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$body= "{'appId':'$this->AppId','verifyCode':'$verifyCode','playTimes':'$playTimes','to':'$to','respUrl':'$respUrl','displayNum':'$displayNum', $body= "{'appId':'$this->AppId','verifyCode':'$verifyCode','playTimes':'$playTimes','to':'$to','respUrl':'$respUrl','displayNum':'$displayNum',
'lang':'$lang','userData':'$userData'}"; 'lang':'$lang','userData':'$userData'}";
}else{ }else{
$body="<VoiceVerify> $body="<VoiceVerify>
<appId>$this->AppId</appId> <appId>$this->AppId</appId>
<verifyCode>$verifyCode</verifyCode> <verifyCode>$verifyCode</verifyCode>
<playTimes>$playTimes</playTimes> <playTimes>$playTimes</playTimes>
<to>$to</to> <to>$to</to>
<respUrl>$respUrl</respUrl> <respUrl>$respUrl</respUrl>
<displayNum>$displayNum</displayNum> <displayNum>$displayNum</displayNum>
<lang>$lang</lang> <lang>$lang</lang>
<userData>$userData</userData> <userData>$userData</userData>
</VoiceVerify>"; </VoiceVerify>";
} }
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/Calls/VoiceVerify?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/Calls/VoiceVerify?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* IVR外呼 * IVR外呼
* @param number 待呼叫号码,为Dial节点的属性 * @param number 待呼叫号码,为Dial节点的属性
* @param userdata 用户数据,在<startservice>通知中返回,只允许填写数字字符,为Dial节点的属性 * @param userdata 用户数据,在<startservice>通知中返回,只允许填写数字字符,为Dial节点的属性
* @param record 是否录音,可填项为true和false,默认值为false不录音,为Dial节点的属性 * @param record 是否录音,可填项为true和false,默认值为false不录音,为Dial节点的属性
*/ */
function ivrDial($number,$userdata,$record) function ivrDial($number,$userdata,$record)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
$body=" <Request> $body=" <Request>
<Appid>$this->AppId</Appid> <Appid>$this->AppId</Appid>
<Dial number='$number' userdata='$userdata' record='$record'></Dial> <Dial number='$number' userdata='$userdata' record='$record'></Dial>
</Request>"; </Request>";
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/ivr/dial?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/ivr/dial?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/xml","Content-Type:application/xml;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/xml","Content-Type:application/xml;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 话单下载 * 话单下载
* @param date day 代表前一天的数据(从00:00 – 23:59) * @param date day 代表前一天的数据(从00:00 – 23:59)
* @param keywords 客户的查询条件,由客户自行定义并提供给云通讯平台。默认不填忽略此参数 * @param keywords 客户的查询条件,由客户自行定义并提供给云通讯平台。默认不填忽略此参数
*/ */
function billRecords($date,$keywords) function billRecords($date,$keywords)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$body= "{'appId':'$this->AppId','date':'$date','keywords':'$keywords'}"; $body= "{'appId':'$this->AppId','date':'$date','keywords':'$keywords'}";
}else{ }else{
$body="<BillRecords> $body="<BillRecords>
<appId>$this->AppId</appId> <appId>$this->AppId</appId>
<date>$date</date> <date>$date</date>
<keywords>$keywords</keywords> <keywords>$keywords</keywords>
</BillRecords>"; </BillRecords>";
} }
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/BillRecords?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/BillRecords?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 主帐号信息查询 * 主帐号信息查询
*/ */
function queryAccountInfo() function queryAccountInfo()
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/AccountInfo?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/AccountInfo?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,"",$header,0); $result = $this->curl_post($url,"",$header,0);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 短信模板查询 * 短信模板查询
* @param date templateId 模板ID * @param date templateId 模板ID
*/ */
function QuerySMSTemplate($templateId) function QuerySMSTemplate($templateId)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$body= "{'appId':'$this->AppId','templateId':'$templateId'}"; $body= "{'appId':'$this->AppId','templateId':'$templateId'}";
}else{ }else{
$body="<Request> $body="<Request>
<appId>$this->AppId</appId> <appId>$this->AppId</appId>
<templateId>$templateId</templateId> <templateId>$templateId</templateId>
</Request>"; </Request>";
} }
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SMS/QuerySMSTemplate?sig=$sig"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/SMS/QuerySMSTemplate?sig=$sig";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 呼叫状态查询 * 呼叫状态查询
* @param callid 呼叫Id * @param callid 呼叫Id
* @param action 查询结果通知的回调url地址 * @param action 查询结果通知的回调url地址
*/ */
function QueryCallState($callid,$action) function QueryCallState($callid,$action)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
if($this->BodyType=="json"){ if($this->BodyType=="json"){
$body= "{'Appid':'$this->AppId','QueryCallState':{'callid':'$callid','action':'$action'}}"; $body= "{'Appid':'$this->AppId','QueryCallState':{'callid':'$callid','action':'$action'}}";
}else{ }else{
$body="<Request> $body="<Request>
<Appid>$this->AppId</Appid> <Appid>$this->AppId</Appid>
<QueryCallState callid ='$callid' action='$action'/> <QueryCallState callid ='$callid' action='$action'/>
</Request>"; </Request>";
} }
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/ivr/call?sig=$sig&callid=$callid"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/ivr/call?sig=$sig&callid=$callid";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 呼叫结果查询 * 呼叫结果查询
* @param callSid 呼叫Id * @param callSid 呼叫Id
*/ */
function CallResult($callSid) function CallResult($callSid)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/CallResult?sig=$sig&callsid=$callSid"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/CallResult?sig=$sig&callsid=$callSid";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/$this->BodyType;charset=utf-8","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,"",$header,0); $result = $this->curl_post($url,"",$header,0);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 语音文件上传 * 语音文件上传
* @param filename 文件名 * @param filename 文件名
* @param body 二进制串 * @param body 二进制串
*/ */
function MediaFileUpload($filename,$body) function MediaFileUpload($filename,$body)
{ {
//主帐号鉴权信息验证,对必选参数进行判空。 //主帐号鉴权信息验证,对必选参数进行判空。
$auth=$this->accAuth(); $auth=$this->accAuth();
if($auth!=""){ if($auth!=""){
return $auth; return $auth;
} }
// 拼接请求包体 // 拼接请求包体
$this->showlog("request body = ".$body); $this->showlog("request body = ".$body);
// 大写的sig参数 // 大写的sig参数
$sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch)); $sig = strtoupper(md5($this->AccountSid . $this->AccountToken . $this->Batch));
// 生成请求URL // 生成请求URL
$url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/Calls/MediaFileUpload?sig=$sig&appid=$this->AppId&filename=$filename"; $url="https://$this->ServerIP:$this->ServerPort/$this->SoftVersion/Accounts/$this->AccountSid/Calls/MediaFileUpload?sig=$sig&appid=$this->AppId&filename=$filename";
$this->showlog("request url = ".$url); $this->showlog("request url = ".$url);
// 生成授权:主帐户Id + 英文冒号 + 时间戳。 // 生成授权:主帐户Id + 英文冒号 + 时间戳。
$authen = base64_encode($this->AccountSid . ":" . $this->Batch); $authen = base64_encode($this->AccountSid . ":" . $this->Batch);
// 生成包头 // 生成包头
$header = array("Accept:application/$this->BodyType","Content-Type:application/octet-stream","Authorization:$authen"); $header = array("Accept:application/$this->BodyType","Content-Type:application/octet-stream","Authorization:$authen");
// 发送请求 // 发送请求
$result = $this->curl_post($url,$body,$header); $result = $this->curl_post($url,$body,$header);
$this->showlog("response body = ".$result); $this->showlog("response body = ".$result);
if($this->BodyType=="json"){//JSON格式 if($this->BodyType=="json"){//JSON格式
$datas=json_decode($result); $datas=json_decode($result);
}else{ //xml格式 }else{ //xml格式
$datas = simplexml_load_string(trim($result," \t\n\r")); $datas = simplexml_load_string(trim($result," \t\n\r"));
} }
// if($datas == FALSE){ // if($datas == FALSE){
// $datas = new stdClass(); // $datas = new stdClass();
// $datas->statusCode = '172003'; // $datas->statusCode = '172003';
// $datas->statusMsg = '返回包体错误'; // $datas->statusMsg = '返回包体错误';
// } // }
return $datas; return $datas;
} }
/** /**
* 子帐号鉴权 * 子帐号鉴权
*/ */
function subAuth() function subAuth()
{ {
if($this->ServerIP==""){ if($this->ServerIP==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172004'; $data->statusCode = '172004';
$data->statusMsg = 'serverIP为空'; $data->statusMsg = 'serverIP为空';
return $data; return $data;
} }
if($this->ServerPort<=0){ if($this->ServerPort<=0){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172005'; $data->statusCode = '172005';
$data->statusMsg = '端口错误(小于等于0)'; $data->statusMsg = '端口错误(小于等于0)';
return $data; return $data;
} }
if($this->SoftVersion==""){ if($this->SoftVersion==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172013'; $data->statusCode = '172013';
$data->statusMsg = '版本号为空'; $data->statusMsg = '版本号为空';
return $data; return $data;
} }
if($this->SubAccountSid==""){ if($this->SubAccountSid==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172008'; $data->statusCode = '172008';
$data->statusMsg = '子帐号为空'; $data->statusMsg = '子帐号为空';
return $data; return $data;
} }
if($this->SubAccountToken==""){ if($this->SubAccountToken==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172009'; $data->statusCode = '172009';
$data->statusMsg = '子帐号令牌为空'; $data->statusMsg = '子帐号令牌为空';
return $data; return $data;
} }
if($this->AppId==""){ if($this->AppId==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172012'; $data->statusCode = '172012';
$data->statusMsg = '应用ID为空'; $data->statusMsg = '应用ID为空';
return $data; return $data;
} }
} }
/** /**
* 主帐号鉴权 * 主帐号鉴权
*/ */
function accAuth() function accAuth()
{ {
if($this->ServerIP==""){ if($this->ServerIP==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172004'; $data->statusCode = '172004';
$data->statusMsg = 'serverIP为空'; $data->statusMsg = 'serverIP为空';
return $data; return $data;
} }
if($this->ServerPort<=0){ if($this->ServerPort<=0){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172005'; $data->statusCode = '172005';
$data->statusMsg = '端口错误(小于等于0)'; $data->statusMsg = '端口错误(小于等于0)';
return $data; return $data;
} }
if($this->SoftVersion==""){ if($this->SoftVersion==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172013'; $data->statusCode = '172013';
$data->statusMsg = '版本号为空'; $data->statusMsg = '版本号为空';
return $data; return $data;
} }
if($this->AccountSid==""){ if($this->AccountSid==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172006'; $data->statusCode = '172006';
$data->statusMsg = '主帐号为空'; $data->statusMsg = '主帐号为空';
return $data; return $data;
} }
if($this->AccountToken==""){ if($this->AccountToken==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172007'; $data->statusCode = '172007';
$data->statusMsg = '主帐号令牌为空'; $data->statusMsg = '主帐号令牌为空';
return $data; return $data;
} }
if($this->AppId==""){ if($this->AppId==""){
$data = new stdClass(); $data = new stdClass();
$data->statusCode = '172012'; $data->statusCode = '172012';
$data->statusMsg = '应用ID为空'; $data->statusMsg = '应用ID为空';
return $data; return $data;
} }
} }
} }
?> ?>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment