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