@GuarDofErun now default Proxy action contains all features from this module
PhoneVerification - Модуль для работы с API сервисов приема SMS
-
@persiss, Версия 1.3 - PhoneVerification.zip:
Обновлен список стран
Список сайтов обновлен и отсортирован по алфавиту
Исправлено получение номера дляgive-sms.com
cheapsms.ru->cheapsms.io
onlinesim.ru->onlinesim.io
sms-acktiwator.ru->smsak.org
vak-sms.com->vak-sms.ru
Удаленыactivation.pwиsmsvk.net
Добавлена возможность указать максимальную цену при получении номера (sms-activateиsmshub) -
Добавьте пожалуйста сервис smslive.pro
-
У меня возникла довольно нестандартная задача(как обычно, впрочем) вызывать модуль и сохранять его состояние, чтобы в другом потоке его потом вызвать с восстановленным состоянием.
Зачем мне это надо:
В основном потоке я регистрирую аккаунт, в процессе регистрации я выясняю что мне нужно. Уже после получения номера от сервиса я проверяю, нужен ли мне этот номер или нет.
Проверка должна происходить в отдельном браузере, поэтому я стартую новый поток, получаю номер, проверяю его подходит ли он мне, если нет, получаю еще раз новый и так далее.
Как я получу подходящий номер, я не подходящие отменяю и возвращаю из потока подходящий номер.В основном потоке я продолжаю регистрацию аккаунта и мне нужно получить номер OTP, для чего мне и нужно восстановить состояние объекта _SMS, так как это другой поток и объект _SMS не имеет никакой информации.
Что я пробовал:
- получал номер, проверял его, сохранял состояние объекта(сериализация) _SMS с помощью _JSON.stringify():
log(JSON.stringify(_SMS.confirmData)) log(JSON.stringify(_SMS.apiData)) // Variable holding the name of the property to update // уникальный ключ состояния объекта, в будущем объект // должен быть восстановлен по этому ключу var propertyName = [[STATE_IDENTIFIER]]; // Step 1: Retrieve the object using the P function var jsonString = P("basglobal", "_SMS_OBJECT_STATE"); // Step 2: Parse the JSON string to get the object // If the object doesn't exist yet, default to an empty object var obj = jsonString ? JSON.parse(jsonString) : {}; // Step 3: Update the desired property of the object obj[propertyName] = {confirmData: _SMS.confirmData, apiData: _SMS.apiData}; // Step 4: Convert the updated object back to a JSON string var updatedJsonString = JSON.stringify(obj); // Step 5: Save the updated object using the PSet function PSet("basglobal", "_SMS_OBJECT_STATE", updatedJsonString);- Восстанавливал как:
// clean first _SMS.apiData = {}; _SMS.confirmData = {}; _SMS.debug = false; // Variable holding the name of the property to restore var propertyName = [[STATE_IDENTIFIER]]; // Step 1: Retrieve the saved JSON string using the P function var jsonString = P("basglobal", "_SMS_OBJECT_STATE"); var savedObj = jsonString ? JSON.parse(jsonString) : {}; var obj = savedObj[propertyName]; _SMS.apiData = obj.apiData; _SMS.confirmData = obj.confirmData; _SMS.debug = obj.debug; log([[LOG_PREFIX]]+ " state restored, _SMS.confirmData: " + JSON.stringify(_SMS.confirmData) + "; _SMS.apiData: " + JSON.stringify(_SMS.apiData));Ожидаемо это не сработало, так как ограничения сериализатора JSON.stringify/JSON.parse.
Ищу пути, как по другому сохранять и восстанавливать состояние объекта _SMS.
Было бы очень удобно, если были бы функции saveState(сериализованные данные состоянии объекта) и restoreState(десерилизация).
-
@sergerdn, @GhostZ said in PhoneVerification - Модуль для работы с API сервисов приема SMS:
Сохранить так:
[[CONFIRM_DATA]] = _SMS.getConfirmData([[NUMBER]], true);Установить так:
_SMS.setConfirmData([[CONFIRM_DATA]]); -
@persiss, @GhostZ said in PhoneVerification - Модуль для работы с API сервисов приема SMS:
Вы можете получить id выполнив код:
[[ID]] = _SMS.getConfirmData([[NUMBER]]).id, где[[NUMBER]]- это переменная содержащая номер -
Использую модуль, что идет в текущей версии BAS.
Использую sms-activate.org, хочу получить кол-во номеров по стране и мобильному оператору, судя по описанию API это возможно. Модуль же в запросе шлет только страну, игнорируя заполненное поле оператора.
В поле оператор текстовое значение наименования оператора. Страна RU.

Цитата из https://sms-activate.org/en/api2:

Что шлет модуль(нет параметра оператор):
Url: https://api.sms-activate.org/stubs/handler_api.php?api_key=API_KEY_HERE&action=getNumbersStatus&country=0&ref=browserAutomationStudio Method: GET -
Привет. Такая проблема.
Я сохраняю номер и его id операции в бд. Потом в новом потоке мне нужно установить во внутренние переменные модуля эти данные, чтобы можно было принимать смс через модуль, как это можно сделать, если можно?Пробовал [[CONFIRM_DATA]] = _SMS.getConfirmData([[NUMBER]]), где NUMBER это сохраненный номер, еще активный на сервисе. Пишет ошибку: Нет информации о номере "..."
UPD Хотя как я понял можно делать в json шаблон строки confirm_data вставлять свои данные (номер и ид операции), а потом через кубик "json из строки" создавать нужный confrim_data, который потом устанавливать через setConfirmData