Подтверждение отклонило ваш номер? Проверьте, как он был введён

Подтверждение отклонило ваш номер? Проверьте, как он был введён

Вы вводите свой номер, форма его отклоняет, и ни намёка на то, какая именно часть ей не понравилась. Вы пробуете с нулём. Пробуете без. Пробуете с плюсом, потом с двумя нулями. Что-то из этого в конце концов срабатывает — или не срабатывает ничего, и в обоих случаях вы заканчиваете, так и не поняв, что произошло.

Коротко: отказ сам по себе не говорит, какой номер в итоге оказался у сервиса, поэтому угадывать сохранённое значение по сообщению об ошибке — ненадёжный подход. Смотрите на то, что форма вам действительно показывает: выбор страны, подсказку самого поля и любое подтверждение, показанное вам обратно. Нет универсального правила ни для отбрасывания ведущего нуля, ни для замены плюса двумя нулями — и то и другое зависит от страны. А номер, выглядящий правильно оформленным, всё равно не доказывает ни того, что он достижим, ни того, что конкретный сервис его примет.

Отказ не говорит, что сервис сохранил

Именно этому стоит сопротивляться: выглядит это как расследование, а по сути по большей части угадывание.

Общий отказ не устанавливает ни того, как был истолкован ваш ввод, ни того, было ли вообще что-то сохранено, ни того, почему не получилось. Одни формы проверяют запись прямо в браузере и отказывают до того, как что-либо отправлено или сохранено. Другие показывают обратно то, что прочитали. Третьи говорят только, что номер неверен. Одно и то же скупое сообщение согласуется и с номером, записанным ровно так, как вы имели в виду, и отклонённым по постороннему поводу; и с номером, потерявшим цифру; и с номером, прочитанным против другой страны. Какой из этих случаев ваш, одним лишь сообщением не решается.

Зато можно посмотреть на то, что форма действительно показывает.

Куда смотреть вместо этого

Выбор страны. Международные формы обычно делят номер надвое: элемент выбора страны или кода набора и поле для остального. Это отдельные поля ввода, и вполне возможно иметь правильные цифры при неправильно выбранной стране. Выбранная страна меняет то, как читаются остальные цифры, и в вопросах и ответах проекта libphonenumber описана ровно эта зависимость: переданный регион определяет, как истолковываются ведущие цифры, включая и то, принимаются ли они вообще за код страны.

Подсказка самого поля. Текст-заполнитель и примеры формата показывают, какую форму записи эта форма ожидает. Это наблюдаемое указание, а не доказательство того, что интерфейс совпадает с тем, что сервис хранит, и оно не устанавливает, что пример верен для вашей страны. Там, где подсказки нет или она выглядит противоречиво, собственная справка сервиса и то, как ваш оператор записывает номер в международной форме, — источники лучше, чем правило по памяти.

Любое подтверждение, показанное вам обратно. Некоторые сервисы показывают номер, который собираются использовать, часто частично замаскированным. Прочитайте его. Показанный целиком, он веское свидетельство того, что содержится в интерфейсе; если он замаскирован, совпадение последних цифр — подсказка, а не однозначное опознание. В любом случае это отражает то, что показывает форма, а само по себе не служит гарантией того, что хранится за ней.

Настройки самого аккаунта, если вы до них добираетесь. Если вы входите или восстанавливаете доступ, а не регистрируетесь, экран безопасности или профиля может показывать номер, который хранится в аккаунте, и это источник лучше, чем что-либо выведенное из ошибки. Доступен он только тогда, когда аккаунт существует и вы всё ещё можете в него войти.

Для ведущего нуля нет универсального правила

Совет, который все повторяют, — отбрасывать ведущий ноль, когда добавляете код страны, — верен во многих странах и неверен в других, и применение его как закона порождает неправильные номера.

Проект libphonenumber ведёт список заблуждений программистов о телефонных номерах, и одно из них — ровно убеждение, что ведущий ноль во внутреннем номере всегда можно отбросить при наборе из-за рубежа. Контрпример даёт Италия: там описан номер, который с 1998 года несёт свой префикс как часть самого номера, с иллюстрацией 012345 внутри страны и +39012345 в международной форме, с сохранённым нулём. Эти цифры — иллюстрация из того документа, а не номер для набора, и суть в том, что такие номера существуют, а не в том, что так устроен каждый итальянский номер.

Тот же список разбирает и вторую половину фольклора. Плюс в международном номере не всегда можно заменить на 00, потому что префикс международного набора зависит от страны: в Японии это 010, а не 00.

Практическое следствие не в том, что вам нужно выучить правила для каждой страны. Оно в том, что правило по памяти — плохая замена двум источникам получше: указаниям, которые даёт само поле, и тому, как ваш оператор записывает этот номер в международной форме. Если вводить то, что указывает оператор, а не преобразованную вами версию, вы не изобретёте номер, который никогда вам не принадлежал.

На что указывает симптом

Что вы наблюдаете С чем это согласуется Что осмотреть
Форма сразу отклоняет номер Возможно, эта форма не принимает такую запись; это не устанавливает, что ничего не было отправлено Подсказку или текст-заполнитель поля и выбор страны
Форма его принимает, но код так и не приходит С чем угодно, в том числе с сохранённым номером, который вам не принадлежит Адресата, которого показывает сервис, и способна ли та линия принимать сообщения
Отказ только тогда, когда вы добавляете код страны Возможно, поле уже обрабатывает страну отдельно Есть ли рядом с полем элемент выбора страны
Принят после исправления выбора страны Исправление устранило одну наблюдаемую проблему Придёт ли теперь код; само исправление вопроса не закрывает
Отказ только тогда, когда вы убираете ведущий ноль Возможно, это страна, где ноль сохраняется Пример в самой форме, а не общее правило
Принят, код пришёл, но следующая попытка не проходит Это не обязательно проблема формата Что сервис говорит о сроке действия этого кода

Два разобранных случая

Оба случая гипотетические и написаны, чтобы показать ход рассуждения, а не рассказать о реальном происшествии.

Страна, которую так и не поменяли. Человек в поездке вводит свой мобильный номер в форму, где в выборе страны стоит страна, в которой он сейчас находится, а не та, которой принадлежит номер. Цифры верные. Форма может их отклонить, а может принять и прочитать против этой другой страны. Ни один из исходов сам по себе не показывает, как цифры были нормализованы. Осмотреть можно выбор страны рядом с полем и любое подтверждение, показанное перед отправкой. Исправление — выставить в выборе страну самого номера и перечитать подтверждение; а решает ли это задачу целиком, покажет следующая попытка, а не само исправление.

Ноль, который убрали из принципа. У человека итальянский номер, ведущий ноль которого действительно входит в его международную форму, и человек отбрасывает этот ноль, добавляя +39, потому что так советует привычное правило. Введённое им — уже не тот же самый номер. Если форма его отклонит, он может ещё некоторое время перебирать дальнейшие преобразования уже изменённых цифр. Если форма его примет, принятие не показывает, что сервис из него сделал, и код может прийти, а может и не прийти. Проверка в обоих случаях одна и та же: перечитать то, что показывает сервис, и сравнить с тем, как международную форму этого номера записывает его собственный оператор, а не с правилом по памяти.

Почему правильный формат — не гарантия

В хорошо оформленный номер вчитывают две разные вещи, и ни одна из них из формата не следует.

Верный формат не означает, что номер достижим. В вопросах и ответах libphonenumber прямо сказано, что действительный диапазон — это диапазон, из которого операторы могут выдавать номера, и прямо указано, что на библиотеку не следует полагаться при определении того, выдан ли номер сейчас конкретному человеку и достижим ли он. Номер может быть безупречно оформлен и попросту не обслуживаться.

Правильный номер не означает, что сервис его примет. Платформы применяют поверх формата собственные правила. Номер, который один сервис принимает без замечаний, другой может отклонить, и политика платформы — одна из возможных причин, а не объяснение всякого расхождения между сервисами. Там, где сервис возвращает конкретное сообщение о том, что номер нельзя использовать, стоит прочитать, что такой отказ означает и чего не означает, прежде чем что-либо менять.

Верно и обратное, что не интуитивно: тот же список заблуждений отмечает, что недействительный номер не обязательно не дойдёт до адресата, и приводит случаи набора, когда в некоторых юрисдикциях лишние цифры игнорируются. Так что состоявшийся звонок — не доказательство, что номер был правильным. Этот пример про набор номера, и это руководство не распространяет его на то, как какой-либо конкретный сервис маршрутизирует текстовое сообщение.

Когда дело было не в формате

Если номер введён правильно и подтверждён, а код всё равно не приходит, вопрос уже сместился.

Возможно, линия, которой он адресован, вообще не может принимать сообщения — так бывает с тарифом только для интернета. Возможно, код ушёл не по SMS, ведь экран, показывающий ваш номер, не говорит о канале. Возможно, код пришёл и не вставился в поле — это отдельная задача со своими проверками. А может быть, код пришёл и истёк, и тогда уместное чтение — что временный номер может сделать со вторым кодом.

Ограничения этого руководства

Здесь использованы опубликованные материалы проекта libphonenumber, чтобы показать, что распространённые преобразования номера не универсальны. Этот проект здесь не используется как описание того, как какой-либо сервис проверяет номера, и ничто здесь не подразумевает, что мы применяем эту библиотеку.

Правила нумерации отдельных стран здесь не перечислены, и намеренно: это не каталог национальных планов нумерации. Если правильная международная форма вашего собственного номера неясна, выяснять её нужно у выдавшего его оператора и в собственной справке сервиса.

Это руководство не может сказать, что сохранил конкретный сервис. Читайте показанное сервисом как полезное указание, а не как доказательство того, что у него хранится, и не выводите хранимое значение из отказа.

Наши ответы на вопросы закрывают сторону заказа, а тикет в поддержку — путь для всего, что относится к конкретному заказу, оформленному у нас.

FAQ

Можно ли по сообщению об ошибке понять, какой номер сохранил сервис?

По общему отказу — нет, и это главное, что стоит отсюда вынести. Такое сообщение не говорит ни как был прочитан ввод, ни был ли он сохранён, ни что именно не получилось. Некоторые формы действительно показывают обратно то, что истолковали, и там, где это так, это полезно. Там, где этого нет, читайте адресата, которого показывает сервис, или номер на экране настроек аккаунта, если вы до него добираетесь, а не выводите его из ошибки.

Нужно ли убирать ведущий ноль, когда я добавляю код страны?

Иногда, и правила, которое действовало бы всегда, нет. Проект libphonenumber относит убеждение, что ведущий ноль всегда можно отбросить, к заблуждениям и приводит Италию как контрпример, где ноль в международной форме сохраняется. Следуйте примеру, который показывает сама форма, а не правилу по памяти.

00 — это то же самое, что плюс?

Не везде. 00 — распространённый префикс международного набора, но он зависит от страны: в Японии используется 010. Если поле просит международный формат, ввести форму с плюсом безопаснее.

Форма приняла мой номер, значит, он правильный. Так ли это?

Принятие означает, что номер прошёл проверки этой формы. Оно не устанавливает ни того, что номер ваш, ни того, что он сейчас кому-то выдан, ни того, что он может принимать сообщения. Собственные вопросы и ответы libphonenumber предостерегают от того, чтобы считать действительность свидетельством, что номер выдан и достижим.

Мой номер работает для звонков, а сервис его отклоняет. Почему?

Сервисы применяют поверх формата собственные правила, и они отдельны от того, хорошо ли оформлен номер. Политика — одна из возможных причин, по которой принятый в другом месте номер отклонён здесь; это не диагноз всякого такого расхождения. Читайте конкретное сообщение, которое даёт сервис, потому что некоторые из них различают довольно разные ситуации.

Я ввёл номер неправильно, и его приняли. Что теперь?

Исправьте его там, где сервис его спрашивает: в текущем процессе, если он это предлагает, или в настройках аккаунта, если вы до них добираетесь, — а затем запустите новую отправку. Если сервис не даёт сменить номер, не пройдя проверку, которую пройти невозможно, это превратилось в задачу восстановления доступа у этого сервиса, а не в задачу формата.

Хотите попробовать SMSCode?

Создайте аккаунт и получите первый виртуальный номер менее чем за две минуты.

Начать →