207 lines
8.2 KiB
PHP
207 lines
8.2 KiB
PHP
<?php
|
||
/**
|
||
* Created by Vim.
|
||
* User: lcc
|
||
* Date: 2021/4/14
|
||
* Time: 15:11
|
||
*/
|
||
|
||
class Xcall{
|
||
|
||
private $id = '1206';
|
||
private $key = 'WX6HDVZX3AYSZDR1739332ZM';
|
||
private $api_url = 'http://api.teleii.com/';
|
||
private $ci;
|
||
private $log_file = 'xcall.log';
|
||
|
||
public function __construct($params=[]){
|
||
$this -> ci = & get_instance();
|
||
|
||
$params['app_id'] && $this->id = $params['app_id'];
|
||
$params['app_key'] && $this->key = $params['app_key'];
|
||
}
|
||
/**
|
||
* 商务号绑定
|
||
* @param $mobile 手机号
|
||
* @param $seq_id 唯一请求单号
|
||
* @param $middleNumber 虚拟号码
|
||
* @param $bindTime 绑定时间
|
||
*/
|
||
public function SWbind($mobile,$seq_id,$middleNumber,$bindTime=10){
|
||
$url=$this->api_url.'bindMobile.do';
|
||
$spId=$this->id; //teleii平台分配的商户id
|
||
$spKey=$this->key; //teleii平台分配的商户key
|
||
$timestamp=time().'000'; //毫秒级的时间戳
|
||
$seqId=$seq_id; //唯一订单
|
||
$virtualMobile=$middleNumber;
|
||
//Md5(key+id+seqId+timestamp+fm+tm); 生成签名
|
||
$sign_source=$spKey.$spId.$seqId.$timestamp.$mobile.$virtualMobile.$bindTime;
|
||
$sign=md5($sign_source);
|
||
|
||
//拼接HTTP请求参数
|
||
$curlparams='id='.$spId.'×tamp='.$timestamp.'&seqId='.$seqId.'&bindMobile='.$mobile.'&bindTime='.$bindTime.'&virtualMobile='.$virtualMobile.'&sign='.$sign;
|
||
//发起HTTP请求
|
||
$result=$this->postUrlForCalling($url, $curlparams);
|
||
$data = json_decode($result,true);
|
||
if(!$data['result']){
|
||
return ['code'=>1,'msg'=>'绑定成功','data'=> $data];
|
||
}{
|
||
debug_log('function:'.__FUNCTION__,$this->log_file);
|
||
debug_log('post_data:'.$curlparams,$this->log_file);
|
||
debug_log('result:'.$result,$this->log_file);
|
||
return ['code'=>0,'msg'=>$data['error'],'t_code' => $data['result']];
|
||
}
|
||
|
||
}
|
||
//解除绑定
|
||
public function SWunbind($bindmobile,$virtualMobile){
|
||
$url=$this->api_url.'unbindMobile.do';
|
||
$spId=$this->id; //teleii平台分配的商户id
|
||
$spKey=$this->key; //teleii平台分配的商户key
|
||
$timestamp=time().'000'; //毫秒级的时间戳
|
||
|
||
//Md5(key+id+timestamp+virtualMobile); 生成签名
|
||
$sign_source=$spKey.$spId.$timestamp.$virtualMobile;
|
||
$sign=md5($sign_source);
|
||
|
||
//拼接HTTP请求参数
|
||
$curlparams='id='.$spId.'×tamp='.$timestamp.'&bindMobile='.$bindmobile.'&virtualMobile='.$virtualMobile.'&sign='.$sign;
|
||
//发起HTTP请求
|
||
$result=$this->postUrlForCalling($url, $curlparams);
|
||
$data = json_decode($result,true);
|
||
if(!$data['result']){
|
||
return ['code'=>1,'msg'=>'解绑成功','data'=> $data];
|
||
}{
|
||
debug_log('function:'.__FUNCTION__,$this->log_file);
|
||
debug_log('post_data:'.$curlparams,$this->log_file);
|
||
debug_log('result:'.$result,$this->log_file);
|
||
return ['code'=>0,'msg'=>$data['error']];
|
||
}
|
||
|
||
}
|
||
//商户模式查找绑定关系
|
||
public function Searchbind($middleNumber){
|
||
$url=$this->api_url.'searchBindMobile.do';
|
||
$spId=$this->id; //teleii平台分配的商户id
|
||
$spKey=$this->key; //teleii平台分配的商户key
|
||
$timestamp=time().'000'; //毫秒级的时间戳
|
||
$virtualMobile=$middleNumber;
|
||
$bindTime=10;//关系绑定10分钟
|
||
|
||
//Md5(key+id+timestamp+virtualMobile); 生成签名
|
||
$sign_source=$spKey.$spId.$timestamp.$virtualMobile;
|
||
$sign=md5($sign_source);
|
||
|
||
//拼接HTTP请求参数
|
||
$curlparams='id='.$spId.'×tamp='.$timestamp.'&virtualMobile='.$virtualMobile.'&sign='.$sign;
|
||
//发起HTTP请求
|
||
$result=$this->postUrlForCalling($url, $curlparams);
|
||
$data = json_decode($result,true);
|
||
if(!$data['result']){
|
||
return ['code'=>1,'msg'=>'绑定成功','data'=> $data];
|
||
}{
|
||
debug_log('function:'.__FUNCTION__,$this->log_file);
|
||
debug_log('post_data:'.$curlparams,$this->log_file);
|
||
debug_log('result:'.$result,$this->log_file);
|
||
return ['code'=>0,'msg'=>$data['error']];
|
||
}
|
||
|
||
}
|
||
//绑定关系
|
||
public function ABXbind($mobileA, $mobileB,$seq_id,$bindTime=10,$middleNumber=''){
|
||
$url=$this->api_url.'autoCallTransferForSp.do';
|
||
$spId=$this->id; //teleii平台分配的商户id
|
||
$spKey=$this->key; //teleii平台分配的商户key
|
||
$timestamp=time().'000'; //毫秒级的时间戳
|
||
$seqId=$seq_id; //唯一订单
|
||
$fm=$mobileA; //主叫号码
|
||
$tm=$mobileB; //被叫号码
|
||
$virtualMobile=$middleNumber; //虚拟号码.创建新关系时,虚拟号码为空,系统自行分配虚拟号码。
|
||
$bindTime=$bindTime;//关系绑定时间(单位分钟)
|
||
|
||
//Md5(key+id+seqId+timestamp+fm+tm); 生成签名
|
||
$sign_source=$spKey.$spId.$seqId.$timestamp.$fm.$tm;
|
||
$sign=md5($sign_source);
|
||
|
||
//拼接HTTP请求参数
|
||
$curlparams='id='.$spId.'×tamp='.$timestamp.'&seqId='.$seqId.'&fm='.$fm.'&tm='.$tm.'&bindTime='.$bindTime.'&virtualMobile='.$virtualMobile.'&sign='.$sign;
|
||
//发起HTTP请求
|
||
$result=$this->postUrlForCalling($url, $curlparams);
|
||
$data = json_decode($result,true);
|
||
if(!$data['result']){
|
||
debug_log('function:'.__FUNCTION__,$this->log_file);
|
||
debug_log('post_data:'.$curlparams,$this->log_file);
|
||
debug_log('绑定成功result:'.$result,$this->log_file);
|
||
return ['code'=>1,'msg'=>'绑定成功','data'=> $data];
|
||
}{
|
||
debug_log('function:'.__FUNCTION__,$this->log_file);
|
||
debug_log('post_data:'.$curlparams,$this->log_file);
|
||
debug_log('绑定失败result:'.$result,$this->log_file);
|
||
return ['code'=>0,'msg'=>$data['error']];
|
||
}
|
||
}
|
||
|
||
//解绑
|
||
public function AXBUnbind($mobileA,$mobileB,$middleNumber){
|
||
$url=$this->api_url.'unbindCallTransferForSp.do';
|
||
$spId=$this->id; //teleii平台分配的商户id
|
||
$spKey=$this->key; //teleii平台分配的商户key
|
||
$timestamp=time().'000'; //毫秒级的时间戳
|
||
$fm=$mobileA;//主叫号码
|
||
$tm=$mobileB;//被叫主码
|
||
$vm=$middleNumber; //虚拟号码
|
||
|
||
//Md5(key+id+timestamp+fm+tm+vm) 生成签名
|
||
$sign_source=$spKey.$spId.$timestamp.$fm.$tm.$vm;
|
||
$sign=md5($sign_source);
|
||
|
||
//拼接HTTP请求参数
|
||
$curlparams='id='.$spId.'×tamp='.$timestamp.'&vm='.$vm.'&fm='.$fm.'&tm='.$tm.'&sign='.$sign;
|
||
|
||
//发起HTTP请求
|
||
$result=$this->postUrlForCalling($url, $curlparams);
|
||
$data = json_decode($result,true);
|
||
if(!$data['result']){
|
||
return ['code'=>1,'msg'=>'解绑成功'];
|
||
}{
|
||
debug_log('function:'.__FUNCTION__,$this->log_file);
|
||
debug_log('post_data:'.$curlparams,$this->log_file);
|
||
debug_log('result:'.$result,$this->log_file);
|
||
return ['code'=>0,'msg'=>$data['error']];
|
||
}
|
||
}
|
||
//获取录音文件
|
||
public function getFile($url,$mid,$tag){
|
||
$spId=$this->id; //teleii平台分配的商户id
|
||
$spKey=$this->key; //teleii平台分配的商户key
|
||
$timestamp=time().'000'; //毫秒级的时间戳
|
||
|
||
//Md5(key+id+timestamp+fm+tm+vm) 生成签名
|
||
$sign_source=$spKey.$spId.$timestamp.$mid;
|
||
$sign=md5($sign_source);
|
||
|
||
//拼接HTTP请求参数
|
||
$curlparams='id='.$spId.'×tamp='.$timestamp.'&mid='.$mid.'&tag='.$tag.'&sign='.$sign;
|
||
|
||
//发起HTTP请求
|
||
$result=$this->postUrlForCalling($url, $curlparams);
|
||
$data = json_decode($result,true);
|
||
if($data['result']||!$result){
|
||
return ['code'=>0,'msg'=>$data['error']];
|
||
}{
|
||
return ['code'=>1,'msg'=>'获取成功','data' => $result];
|
||
}
|
||
}
|
||
private function postUrlForCalling($url, $reqParams){
|
||
$ch=curl_init();
|
||
curl_setopt($ch,CURLOPT_URL,$url);
|
||
curl_setopt($ch,CURLOPT_HEADER,0);
|
||
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
|
||
curl_setopt($ch,CURLOPT_POST,1);
|
||
curl_setopt($ch,CURLOPT_POSTFIELDS,$reqParams);
|
||
$data = curl_exec($ch);
|
||
curl_close($ch);
|
||
return $data;
|
||
}
|
||
}
|