/** @inheritdoc */ public function getNumber($site = null) { $result = parent::getNumber($site); if (self::isJson($result)) { $result = Json::decode($result); if (isset($result['response']) && $result['response'] == 1) { $this->sessionId = $result['tzid']; $inpoll = 0; while (true) { $result = $this->curl('getState', ['tzid' => $this->sessionId]); if (self::isJson($result)) { $result = Json::decode($result); switch ($result['response']) { case 'TZ_INPOOL': if ($inpoll > 5) { throw new SmsException('Не нашло номер'); } $inpoll++; sleep(5); break; case 'TZ_NUM_PREPARE': $this->number = str_pad($result['number'], 12, "+7", STR_PAD_LEFT); return $this->number; default: throw new SmsException(Json::encode($result)); } } } } } throw new SmsException(Json::encode($result)); }
/** @inheritdoc */ public function getNumber($site = null) { $result = parent::getNumber($site); $result = explode(':', $result); $result[] = null; $result[] = null; list($request, $id, $number) = $result; switch ($request) { case 'NO_NUMBERS': throw new SmsException($request, 404); case 'ACCESS_NUMBER': $this->sessionId = $id; $this->number = str_pad($number, 12, "+7", STR_PAD_LEFT); break; default: throw new SmsException($request); } return $this->number; }
/** @inheritdoc */ public function getNumber($site = null) { if ($this->getNumbersStatus()) { $time = time(); while (time() - $time < 60 * 3) { sleep(10); $result = parent::getNumber($site); if (self::isJson($result)) { $result = Json::decode($result); if (isset($result['response']) && $result['response'] == 1 && isset($result['number']) && $result['number'] && isset($result['id']) && $result['id'] > 0) { $this->sessionId = $result['id']; $this->number = str_pad($result['number'], 12, "+7", STR_PAD_LEFT); return $this->number; } if (isset($result['response']) && $result['response'] == 2) { continue; } } throw new SmsException(Json::encode($result)); } throw new SmsException('Время поиска номеров истекло'); } throw new SmsException('Нет номеров'); }