Files
小鱼开发 14d8249372 yxcall
2024-06-20 13:35:38 +08:00

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;
}
}