Files
liche/common/third_party/Xcall/Xcall.php
T
2021-08-09 15:37:29 +08:00

201 lines
7.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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(){
$this -> ci = & get_instance();
}
/**
* 商务号绑定
* @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.'&timestamp='.$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.'&timestamp='.$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.'&timestamp='.$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, $middleNumber='',$scene=''){
$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=10;//关系绑定10分钟
//Md5(key+id+seqId+timestamp+fm+tm) 生成签名
$sign_source=$spKey.$spId.$seqId.$timestamp.$fm.$tm;
$sign=md5($sign_source);
//拼接HTTP请求参数
$curlparams='id='.$spId.'&timestamp='.$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']){
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.'&timestamp='.$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.'&timestamp='.$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;
}
}