- Регистрация
- 21.04.2016
- Сообщения
- 2 312
- Благодарностей
- 1 191
- Баллы
- 113
Существует множество смс сервисов и для удобства я написал библиотеку, которая позволяет упростить работу с ними по сравнению с решением от ZennoLab.
Какие сервисы на данный момент поддерживаются:
1. Получаем номер
Идентификатор для страны и для сервиса искать не нужно, они уже находятся внутри кода.
Можно получить множество параметров о полученном номере в зависимости от того, какие функции поддерживает смс сервис
Вариант с получением номера с лимитом по цене. Вернется false, если по данной цене номера нету. Из-за ограничений сервисов по количеству запросов и отсутствии некоторого функционала поддерживается не везде. На sms hub меня уверяли в том, что у них нельзя брать начиная с самых дешевых с ограничением по цене только через API, но я нашел как это обойти и теперь на нем поддерживается данный функционал.
2. Устанавливаем статус ожидания смс (Pending)
Можно задать 2 варианта - очищать смс код, если он есть или оставить как есть. Этот функционал может быть полезен, если вы нажимаете на кнопку на сайте, а потом устанавливаете статус ожидания смс, а в этот момент смс уже могло прийти. Тогда у кода есть 2 варианта - либо очистить последнее смс и ждать новое, либо сохранить смс и при следующем запросе смс вы получите его.
false - не сбрасывать
true - сбрасывать и ждать новый код
3. Устанавливаем таймер, если нужно и получаем смс.
4. Устанавливаем статус ожидания ещё 1 кода (если нужно).
Применяю эту функцию постоянно в своем коде.
5. Завершаем активацию.
6. Блокируем номер, как плохой (альтернативный вариант, используется за место варианта 5)
7. Отменяем активацию (альтернативный вариант, используется за место варианта 5)
Поддерживается только если номер не был получен до этого, иначе генерирует ошибку
8. Альтернативные варианты
Иногда неизвестно получится ли установить данный статус и для таких случаев припасены альтернативные методы с отображением ошибок. В таких случаях помогают альтернативные методы, которые возвращают true или false вместе с ошибкой, которую можно получить и самому проанализировать.
9. Получаем список всех цен для данного сервиса, отсортированные, начиная с самой низкой.
Зачастую хочется получать смс от самых дешевых номеров, а сервисы могут в режиме реального времени менять цены. По этой причине я создал несколько функций, которые позволяют получать список с ценами и определять самые низкие.
Функционал, когда можно будет сравнивать цены между разными сервисами и выбирать самую дешевую в работе и займет много времени. Не гарантирую его появление.
Давайте рассмотрим то, что есть.
Получение всех цен:
Получаем самую низкую цену с количеством номеров больше 10:
Получаем список цен с операторами, начиная с самой низкой для России, Украины и Беларуси:
Функционал библиотеки шире, чем я расписал. Примеры кода я привёл, архив с библиотеками прикладываю, пользуйтесь.
Шаблон с примерами сделаю позже.
Не откажусь от донатов, если кому-то понравится моя работа.
Могу подключить библиотеки вам самим, цены начинаются от 2500 руб в зависимости от сложности. Сами понимаете, время - деньги, а на библиотеку потрачены сотни часов времени. Верну деньги, если функционал не понравится или будет серьезный баг.
Все, кто понимают C#, могут подключить библиотеку самостоятельно и пользоваться, нету никаких триал периодов и ключей подключения.
P.S.: в будущем дополню тему и распишу больше о функционале, который поддерживается
Какие сервисы на данный момент поддерживаются:
- Sms-activate
- SmsHub
- Vak Sms
- Sim Sms
- 5 Sim
- Sms Aktiwator
1. Получаем номер
Идентификатор для страны и для сервиса искать не нужно, они уже находятся внутри кода.
Можно получить множество параметров о полученном номере в зависимости от того, какие функции поддерживает смс сервис
C#:
//Получаем api ключ из настроек зеннопостера
string apiKey = SupportClass.GetSmsServiceApiKey("FiveSimSms");
//Создаем информацию о сервисе
FiveSimService fiveSimService = new FiveSimService(apiKey);
//Создаем задачу, которая будет хранить всю информацию о текущем статусе работы с определенным номером
FiveSimTask fiveSimTask = new FiveSimTask(fiveSimService);
//Получаем смс и возвращает true или false в зависимости от того получен смс или нет
//Также можно посмотреть ошибку
bool gotSms = fiveSimTask.GetNewPhone(WebService.Facebook, Country.Russia, out SmsServiceException exception);
//Если номер не получен, то генерируем полученную ошибку (можно тут любую логику прописать)
if (!gotSms)
throw exception;
//Просматриваем информацию о полученном номере
//Получаем id
string id = fiveSimTask.Id; //141776002
//Номера телефона
string phone = fiveSimTask.Phone; //79309535975
//Телефон без кода страны
string phoneWithoutCountryCode = fiveSimTask.PhoneWithoutCountryCode; //9309535975
//Цена полученного номера (не всегда верная информация из-за ограничений смс сервисов)
float price = fiveSimTask.Price; //6
//Время создания
DateTimeOffset creationTime = fiveSimTask.CreationTime; //14.08.2021 11:09:36 +00:00
//Время окончания (поддерживается не всеми сервисами)
DateTimeOffset? expiredTime = fiveSimTask.ExpiredTime; //14.08.2021 11:24:36 +00:00
//Имя оператора (только если оператор был задан изначально или сервис поддерживает возврат имени)
string phoneOperator = fiveSimTask.PhoneOperator; //tele2
//Текущий статус смс, может быть WaitReady, Pending, CodeReceived, Finished, Canceled, Banned
SmsStatus? status = fiveSimTask.Status; //Pending
//Таймаут ожидания смс, по умолчанию 1 минута
TimeSpan ts = fiveSimTask.Timeout; //00:01:00
//Alpha2 страны, часто применяется в селекторах сайтов регистрации
string countryAlpha2 = fiveSimTask.PhoneCountry.Alpha2; //RU
//Имя страны
string countryName = fiveSimTask.PhoneCountry.EnglishName; //Russia
//Название валюты на английском
string currencyName = fiveSimTask.PhoneCountry.CountryCurrency.EnglishName; //Russian Ruble
//Название валюты по ISO
string currencyISO = fiveSimTask.PhoneCountry.CountryCurrency.ISOSymbol; //RUB
C#:
bool gotSms = fiveSimTask.GetNewPhone(WebService.Facebook, Country.Russia, out SmsServiceException exception, maxPrice: 8);
Можно задать 2 варианта - очищать смс код, если он есть или оставить как есть. Этот функционал может быть полезен, если вы нажимаете на кнопку на сайте, а потом устанавливаете статус ожидания смс, а в этот момент смс уже могло прийти. Тогда у кода есть 2 варианта - либо очистить последнее смс и ждать новое, либо сохранить смс и при следующем запросе смс вы получите его.
false - не сбрасывать
true - сбрасывать и ждать новый код
C#:
fiveSimTask.SetStatusPending(disposeCodeIfExist: false);
C#:
//Задаем таймаут ожидания смс
fiveSimTask.Timeout = TimeSpan.FromSeconds(90);
//Задаем интервал, через который будут идти запросы на проверку статуса смс кода
fiveSimTask.PollingInterval = TimeSpan.FromSeconds(10);
//Получаем смс код или null, если код не получен
string code = fiveSimTask.GetSmsCode();
Применяю эту функцию постоянно в своем коде.
C#:
fiveSimTask.RepeatActivation();
C#:
fiveSimTask.FinishActivation();
C#:
fiveSimTask.BanPhone();
Поддерживается только если номер не был получен до этого, иначе генерирует ошибку
C#:
fiveSimTask.CancelActivation();
Иногда неизвестно получится ли установить данный статус и для таких случаев припасены альтернативные методы с отображением ошибок. В таких случаях помогают альтернативные методы, которые возвращают true или false вместе с ошибкой, которую можно получить и самому проанализировать.
C#:
bool success = fiveSimTask.TryFinishActivation(out SmsServiceException ex);
C#:
bool success = fiveSimTask.TryBanPhone(out SmsServiceException ex);
C#:
bool success = fiveSimTask.TryCancelActivation(out SmsServiceException ex);
Зачастую хочется получать смс от самых дешевых номеров, а сервисы могут в режиме реального времени менять цены. По этой причине я создал несколько функций, которые позволяют получать список с ценами и определять самые низкие.
Функционал, когда можно будет сравнивать цены между разными сервисами и выбирать самую дешевую в работе и займет много времени. Не гарантирую его появление.
Давайте рассмотрим то, что есть.
Получение всех цен:
C#:
PriceInfo[] prices = fiveSimService.GetPrices(WebService.Facebook)
.Where(x => x.Count > 0)
.ToArray();
string priceStringExample = string.Join(Environment.NewLine, prices.Take(5).Select(x => $"Страна: {x.CountryInfo.EnglishName}, количество: {x.Count}, цена: {x.Price}"));
//Страна: Indonesia, количество: 1, цена: 2
//Страна: United States, количество: 53417, цена: 3
//Страна: Canada, количество: 5670, цена: 3
//Страна: Cambodia, количество: 1000, цена: 3
//Страна: Bolivia, количество: 29, цена: 3
C#:
PriceInfo pi = fiveSimService.GetLowPrice(WebService.Facebook, minPhonesCount: 10);
string lowPriceStringExample = $"Страна: {pi.CountryInfo.EnglishName}, количество: {pi.Count}, цена: {pi.Price}";
//Страна: United States, количество: 53417, цена: 3
C#:
PriceInfo[] prices = fiveSimService.GetPrices(WebService.Facebook, new Country[] { Country.Russia, Country.Ukraine, Country.Belarus })
.Where(x => x.Count > 0)
.ToArray();
string priceStringExample = string.Join(Environment.NewLine, prices.Take(5).Select(x => $"Страна: {x.CountryInfo.EnglishName}, количество: {x.Count}, цена: {x.Price}, операторы: {string.Join(", ", x.PhoneOperators)}"));
//Страна: Russia, количество: 149, цена: 6,5, операторы: beeline, lycamobile, matrix, megafon, mts, rostelecom, tele2, virtual15, virtual27, yota
//Страна: Ukraine, количество: 1000, цена: 12, операторы: virtual23
//Страна: Ukraine, количество: 1000, цена: 12,3, операторы: virtual18
//Страна: Belarus, количество: 1000, цена: 12,3, операторы: virtual18
//Страна: Belarus, количество: 1000, цена: 20, операторы: virtual21, virtual23
Шаблон с примерами сделаю позже.
Не откажусь от донатов, если кому-то понравится моя работа.
Могу подключить библиотеки вам самим, цены начинаются от 2500 руб в зависимости от сложности. Сами понимаете, время - деньги, а на библиотеку потрачены сотни часов времени. Верну деньги, если функционал не понравится или будет серьезный баг.
Все, кто понимают C#, могут подключить библиотеку самостоятельно и пользоваться, нету никаких триал периодов и ключей подключения.
P.S.: в будущем дополню тему и распишу больше о функционале, который поддерживается
Вложения
-
17,6 КБ Просмотры: 196
-
58,2 МБ Просмотры: 249
Последнее редактирование: