* 支持容联云通讯所有PHPSDK可用内容
*/
class SMS_Lite {
//主帐号
private $accountSid = '';
//主帐号Token
private $accountToken = '';
//应用Id
private $appId = '';
//REST版本号
private $softVersion = '2013-12-26';
//请求端口
private $serverPort = '8883';
//请求地址,格式如下,不需要写https://
private $serverIP = 'sandboxapp.cloopen.com';
//SDK实例
private $SMS_SDK_REST;
//DEBUG
private $debug;
/**
* SMS_Lite 构造方法初始化配置
*
* @param $cofAddress string 配置文件地址
* @param $debug bool 是否开启调试模式
*/
public function __construct($cofAddress, $debug = false) {
$this->debug = $debug;
//获得配置项
$config = DI()->config->get($cofAddress);
//配置项是否存在
if (!$config) {
throw new PhalApi_Exception_BadRequest(T('Config There is no'));
}
//主帐号是否配置
if ($this->getIndex($config, 'accountSid')) {
$this->accountSid = $config['accountSid'];
} else {
throw new PhalApi_Exception_BadRequest(T('accountSid There is no'));
}
//主帐号Token是否配置
if ($this->getIndex($config, 'accountToken')) {
$this->accountToken = $config['accountToken'];
} else {
throw new PhalApi_Exception_BadRequest(T('accountSid There is no'));
}
//应用Id是否配置
if ($this->getIndex($config, 'appId')) {
$this->appId = $config['appId'];
} else {
throw new PhalApi_Exception_BadRequest(T('accountSid There is no'));
}
//请求端口
if ($this->getIndex($config, 'serverPort')) {
$this->serverPort = $config['serverPort'];
}
//请求地址
if ($this->getIndex($config, 'serverIP')) {
$this->serverIP = $config['serverIP'];
}
//初始化SDK
$this->SMS_SDK_REST = new SMS_SDK_REST($this->serverIP, $this->serverPort, $this->softVersion);
//设置主帐号
$this->SMS_SDK_REST->setAccount($this->accountSid, $this->accountToken);
//设置应用ID
$this->SMS_SDK_REST->setAppId($this->appId);
}
/**
* 语音验证码
*
* @param verifyCode 验证码内容,为数字和英文字母,不区分大小写,长度4-8位
* @param playTimes 播放次数,1-3次
* @param to 接收号码
* @param displayNum 显示的主叫号码
* @param respUrl 语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知
* @param lang 语言类型。取值en(英文)、zh(中文),默认值zh。
* @param userData 第三方私有数据
*/
function voiceVerify($verifyCode, $playTimes, $to, $displayNum, $respUrl, $lang, $userData) {
//调用语音验证码接口
$result = $this->SMS_SDK_REST->voiceVerify($verifyCode, $playTimes, $to, $displayNum, $respUrl, $lang, $userData);
if ($result == NULL) {
throw new PhalApi_Exception_BadRequest(T("Error SMS_SDK_REST"));
}
//如果是Debug模式则打印返回信息
if ($this->debug) {
$this->showarr($result);
}
return $result;
}
/**
* 发送模板短信
*
* @param to 手机号码集合,用英文逗号分开
* @param datas 内容数据 格式为数组 例如:array('Marry','Alon'),如不需替换请填 null
* @param $tempId 模板Id
*/
function sendTemplateSMS($to, $datas, $tempId) {
// 发送模板短信
$result = $this->SMS_SDK_REST->sendTemplateSMS($to, $datas, $tempId);
if ($result == NULL) {
throw new PhalApi_Exception_BadRequest(T("Error SMS_SDK_REST"));
}
//如果是Debug模式则打印返回信息
if ($this->debug) {
$this->showarr($result);
}
return $result;
}
/**
* 短信模板查询
*
* @param templateId 模板ID
*/
function QuerySMSTemplate($templateId) {
// 调用短信模板查询接口
$result = $this->SMS_SDK_REST->QuerySMSTemplate($templateId);
if ($result == NULL) {
throw new PhalApi_Exception_BadRequest(T("Error SMS_SDK_REST"));
}
if ($this->debug) {
$this->showarr($result);
}
return $result;
}
/**
* 呼叫状态查询
*
* @param callid 呼叫Id
* @param action 查询结果通知的回调url地址
*/
function QueryCallState($callid, $action) {
// 调用呼叫状态查询接口
$result = $this->SMS_SDK_REST->QueryCallState($callid, $action);
if ($result == NULL) {
throw new PhalApi_Exception_BadRequest(T("Error SMS_SDK_REST"));
}
if ($this->debug) {
$this->showarr($result);
}
return $result;
}
/**
* 主帐号信息查询
*/
function queryAccountInfo() {
// 调用主帐号信息查询接口
$result = $this->SMS_SDK_REST->queryAccountInfo();
if ($result == NULL) {
throw new PhalApi_Exception_BadRequest(T("Error SMS_SDK_REST"));
}
if ($this->debug) {
$this->showarr($result);
}
return $result;
}
/**
* 语音文件上传
*
* @param filename 文件名
* @param path 文件所在路径
*/
function MediaFileUpload($filename, $path) {
$filePath = $path;
$fh = fopen($filePath, "rb");
$body = fread($fh, filesize($filePath));
fclose($fh);
// 调用语音文件上传接口
$result = $this->SMS_SDK_REST->MediaFileUpload($filename, $body);
if ($result == NULL) {
throw new PhalApi_Exception_BadRequest(T("Error SMS_SDK_REST"));
}
if ($this->debug) {
$this->showarr($result);
}
return $result;
}
/**
* 外呼通知
*
* @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) {
//调用外呼通知接口
echo "Try to make a landingcall,called is $to
";
$result = $this->SMS_SDK_REST->landingCall($to, $mediaName, $mediaTxt, $displayNum, $playTimes, $respUrl, $userData, $maxCallTime, $speed, $volume, $pitch, $bgsound);
if ($result == NULL) {
throw new PhalApi_Exception_BadRequest(T("Error SMS_SDK_REST"));
}
if ($this->debug) {
$this->showarr($result);
}
return $result;
}
/**
* IVR外呼
*
* @param number 待呼叫号码,为Dial节点的属性
* @param userdata 用户数据,在通知中返回,只允许填写数字字符,为Dial节点的属性
* @param record 是否录音,可填项为true和false,默认值为false不录音,为Dial节点的属性
*/
function ivrDial($number, $userdata, $record) {
// 调用IVR外呼接口
$result = $this->SMS_SDK_REST->ivrDial($number, $userdata, $record);
if ($result == NULL) {
throw new PhalApi_Exception_BadRequest(T("Error SMS_SDK_REST"));
}
if ($this->debug) {
$this->showarr($result);
}
return $result;
}
/**
* 话单下载
*
* @param date day 代表前一天的数据(从00:00 – 23:59)
* @param keywords 客户的查询条件,由客户自行定义并提供给云通讯平台。默认不填忽略此参数
*/
function billRecords($date, $keywords) {
// 调用话单下载接口
$result = $this->SMS_SDK_REST->billRecords($date, $keywords);
if ($result == NULL) {
throw new PhalApi_Exception_BadRequest(T("Error SMS_SDK_REST"));
}
if ($this->debug) {
$this->showarr($result);
}
return $result;
}
/**
* 数组对象取值相关 - 避免出错
*/
public function getIndex($arr, $key, $default = '') {
return isset($arr[$key]) ? $arr[$key] : $default;
}
/**
* 直接显示内容数组
*/
public function showarr($a) {
echo('');
print_r($a);
echo('
');
}
}