138 lines
5.2 KiB
PHP
138 lines
5.2 KiB
PHP
<?php
|
|
require_once(COMMPATH . "/third_party/Ycall/sdk/PrivacyUnbindBoody.php");
|
|
require_once(COMMPATH . "/third_party/Ycall/sdk/PrivacyAxbBindBody.php");
|
|
require_once(COMMPATH . "/third_party/Ycall/sdk/PrivacyAxTransferBody.php");
|
|
require_once(COMMPATH . "/third_party/Ycall/sdk/WinnerVoiceSender.php");
|
|
require_once(COMMPATH . "/third_party/Ycall/sdk/PrivacyAxBindBody.php");
|
|
require_once(COMMPATH . "/third_party/Ycall/sdk/VoiceHostUrl.php");
|
|
|
|
class Ycall
|
|
{
|
|
|
|
private $account = "985437";
|
|
private $token = "5c5ee9cfcb2948a1aadefc445cf96b13";
|
|
private $mobileList = 'mobile_list';
|
|
private $callbackUrl = '';
|
|
private $phones = '';
|
|
private $ci;
|
|
|
|
public function __construct($params = [])
|
|
{
|
|
$this->ci = &get_instance();
|
|
|
|
$params['app_id'] && $this->account = $params['app_id'];
|
|
$params['app_key'] && $this->token = $params['app_key'];
|
|
$this->callbackUrl = http_host_com('api').'plan/yxcall';
|
|
}
|
|
|
|
public function ABXPoll($mobileA, $mobileB, $customerData, $callbackUrl, $maxBindingTime = 0, $callRec = 1, $rand = False)
|
|
{ //轮询
|
|
$ci = &get_instance();
|
|
$ci->config->load('ycall', TRUE);
|
|
if ($this->phones) {
|
|
$mobile_list = $this->phones;
|
|
} else {
|
|
$mobile_list = $ci->config->item($this->mobileList, 'ycall');
|
|
}
|
|
if ($rand) { //随机
|
|
shuffle($mobile_list);
|
|
}
|
|
foreach ($mobile_list as $item) {
|
|
$middleNumber = $item;
|
|
$result = $this->ABXbind($mobileA, $mobileB, $middleNumber, $customerData, $callbackUrl, $maxBindingTime, $callRec);
|
|
if ($result['result'] == '000000') {
|
|
break;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
public function ABXbind($mobileA, $mobileB, $customerData, $maxBindingTime = 0, $middleNumber = '', $callbackUrl = '', $callRec = 1, $areaCode = '')
|
|
{
|
|
!$callbackUrl && $callbackUrl = $this->callbackUrl;
|
|
$axbBody = new PrivacyAxbBindBody();
|
|
|
|
/**设置为平台分配的隐私号码*/
|
|
$middleNumber && $axbBody->middleNumber = $middleNumber;
|
|
/**设置为需要绑定的号码A*/
|
|
$axbBody->bindNumberA = $mobileA;
|
|
/**设置为需要绑定的号码B*/
|
|
$axbBody->bindNumberB = $mobileB;
|
|
/**用户自定义字段, 呼叫结束后,推送回用户*/
|
|
$axbBody->customerData = $customerData;
|
|
/**是否需要录音,需要录音设置为1,不需要录音设置为0*/
|
|
$axbBody->callRec = $callRec;
|
|
/**设置绑定时间,单位秒,当设置为0时,则永久绑定*/
|
|
$axbBody->maxBindingTime = $maxBindingTime;
|
|
/**设置话单的推送地址*/
|
|
$axbBody->callbackUrl = $callbackUrl;
|
|
/**设置区号*/
|
|
$axbBody->areaCode = $areaCode;
|
|
|
|
/**设置为平台分配的account*/
|
|
$account = $this->account;
|
|
/**设置为平台分配的token*/
|
|
$token = $this->token;
|
|
$sender = new WinnerVoiceSender($account, $token, true);
|
|
$result = $sender->sendRequest('/voice/1.0.0/middleNumberAXB', json_encode($axbBody));
|
|
|
|
$voice_result = json_decode($result, true);
|
|
|
|
return $voice_result;
|
|
}
|
|
|
|
/** AX,AXB 模式小号解绑 */
|
|
function AXBUnbind($middleNumber, $mobileA, $mobileB = '', $callbackUrl = '')
|
|
{
|
|
$unbindBody = new PrivacyUnbindBoody();
|
|
$unbindBody->middleNumber = $middleNumber;
|
|
$unbindBody->bindNumberA = $mobileA;
|
|
$mobileB && $unbindBody->bindNumberB = $mobileB; //AXB 模式时必填
|
|
|
|
/**设置为平台分配的account*/
|
|
$account = $this->account;
|
|
/**设置为平台分配的token*/
|
|
$token = $this->token;
|
|
|
|
$sender = new WinnerVoiceSender($account, $token, true);
|
|
$result = $sender->sendRequest('/voice/1.0.0/middleNumberUnbind', json_encode($unbindBody));
|
|
|
|
$voice_result = json_decode($result, true);
|
|
|
|
return $voice_result;
|
|
}
|
|
|
|
/**
|
|
* AXN绑定
|
|
* @param $middleNumber
|
|
* @param $mobileA
|
|
* @param $mobileB
|
|
* @param $maxBindingTime
|
|
* @param $callbackUrl
|
|
* @param $callRec
|
|
* @return mixed
|
|
*/
|
|
public function AXbind($middleNumber, $mobileA, $mobileB = '', $maxBindingTime = 0, $callbackUrl = '', $callRec = 1)
|
|
{
|
|
!$callbackUrl && $callbackUrl = $this->callbackUrl;
|
|
$axBody = new PrivacyAxBindBody();
|
|
$axBody->middleNumber = $middleNumber;
|
|
$axBody->bindNumberA = $mobileA;
|
|
$mobileB && $axBody->bindNumberB = $mobileB;
|
|
$axBody->callbackUrl = $callbackUrl;
|
|
$axBody->callRec = $callRec;
|
|
$axBody->mode = 1; //1: AXN; 2: AX, 默认为 AXN 模式
|
|
/**设置绑定时间,单位秒,当设置为0时,则永久绑定*/
|
|
$axBody->maxBindingTime = $maxBindingTime;
|
|
/**设置为平台分配的account*/
|
|
$account = $this->account;
|
|
/**设置为平台分配的token*/
|
|
$token = $this->token;
|
|
$sender = new WinnerVoiceSender($account, $token, true);
|
|
$result = $sender->sendRequest('/voice/1.0.0/middleNumberAX', json_encode($axBody, JSON_UNESCAPED_UNICODE));
|
|
$voice_result = json_decode($result, true);
|
|
|
|
return $voice_result;
|
|
}
|
|
}
|