/** * @return array */ public function AjaxTwilioGetToken() { $oAccount = $this->getAccountFromParam(); $oTenant = null; if ($this->oApiTenants) { $oTenant = 0 < $oAccount->IdTenant ? $this->oApiTenants->getTenantById($oAccount->IdTenant) : $this->oApiTenants->getDefaultGlobalTenant(); } $mToken = false; if ($oTenant && $this->oApiCapability->isTwilioSupported($oAccount) && $oTenant->isTwilioSupported() && $oTenant->TwilioAllow && $oAccount->User->TwilioEnable && file_exists(PSEVEN_APP_ROOT_PATH . 'libraries/Services/Twilio.php')) { try { include PSEVEN_APP_ROOT_PATH . 'libraries/Services/Twilio.php'; // Twilio API credentials $sAccountSid = $oTenant->TwilioAccountSID; $sAuthToken = $oTenant->TwilioAuthToken; // Twilio Application Sid $sAppSid = $oTenant->TwilioAppSID; $sTwilioPhoneNumber = $oTenant->TwilioPhoneNumber; $bUserTwilioEnable = $oAccount->User->TwilioEnable; $sUserPhoneNumber = $oAccount->User->TwilioNumber; $bUserDefaultNumber = $oAccount->User->TwilioDefaultNumber; $oCapability = new \Services_Twilio_Capability($sAccountSid, $sAuthToken); $oCapability->allowClientOutgoing($sAppSid); \CApi::Log('twilio_debug'); \CApi::Log('twilio_account_sid-' . $sAccountSid); \CApi::Log('twilio_auth_token-' . $sAuthToken); \CApi::Log('twilio_app_sid-' . $sAppSid); \CApi::Log('twilio_enable-' . $bUserTwilioEnable ? 'true' : 'false'); \CApi::Log('twilio_user_default_number-' . ($bUserDefaultNumber ? 'true' : 'false')); \CApi::Log('twilio_number-' . $sTwilioPhoneNumber); \CApi::Log('twilio_user_number-' . $sUserPhoneNumber); \CApi::Log('twilio_debug_end'); //$oCapability->allowClientIncoming('TwilioAftId_'.$oAccount->IdTenant.'_'.$oAccount->User->TwilioNumber); if ($bUserTwilioEnable) { if ($bUserDefaultNumber) { $oCapability->allowClientIncoming(strlen($sUserPhoneNumber) > 0 ? $sUserPhoneNumber : 'default'); } else { if (strlen($sUserPhoneNumber) > 0) { $oCapability->allowClientIncoming($sUserPhoneNumber); } } } $mToken = $oCapability->generateToken(86400000); //Token lifetime set to 24hr (default 1hr) } catch (\Exception $oE) { \CApi::LogException($oE); } } else { throw new \ProjectCore\Exceptions\ClientException(\ProjectCore\Notifications::VoiceNotAllowed); } return $this->DefaultResponse($oAccount, __FUNCTION__, $mToken); }