проверить номер мобильного телефона с Twilio поиска - PullRequest
0 голосов
/ 10 мая 2018

Я делаю Джанго веб-приложение. В этом веб-приложении пользователь может зарегистрироваться по электронной почте или номеру телефона, когда-нибудь пользователь вводит номер мобильного телефона с кодом страны, а иногда пользователь не вводит код страны в то время, когда мне нужно получить IP-адрес пользователя, найти код страны и отправить этот номер в API поиска Twilio и проверить перед отправкой смс кода.

Каков наилучший способ сделать это

    def clean_email_or_phone(self):

    bad_domains = ['']
    email_or_phone = self.cleaned_data['email_or_phone']
    if "@" in email_or_phone:
        try:
            validate_email(email_or_phone)
            email_domain = self.cleaned_data['email_or_phone'].split('@')[1]
            if email_domain in bad_domains:
                raise forms.ValidationError(validators.FREE_EMAIL)
        except forms.ValidationError:
            raise forms.ValidationError(validators.FREE_EMAIL)

        if User.objects.filter(email=email_or_phone).exists():
            raise forms.ValidationError(validators.DUPLICATE_EMAIL)
    else:

    return email_or_phone

иначе будет проверка номера мобильного телефона

Спасибо

1 Ответ

0 голосов
/ 10 мая 2018

Разработчик Twilio здесь.

Я бы порекомендовал принимать телефонные номера и электронные письма в двух разных полях формы, чтобы вы могли знать, какое из них вы проверяете. Таким образом, вы также можете использовать выпадающее меню / отдельное поле, чтобы принять код страны.

Вот как это выглядит в регистрационной форме Twilio и посмотрите этот пост переполнения стека , как это сделать в Javascript. input phone number

Для части Lookup вы можете сделать следующее в Python:

from twilio.rest import Client

# Your Account Sid and Auth Token from twilio.com/console
account_sid = 'ACa7422cb6ce587437c7ee6a183b4cb464'
auth_token = 'your_auth_token'
client = Client(account_sid, auth_token)

phone_number = client.lookups.phone_numbers(email_or_phone).fetch(type="carrier")

print(phone_number.caller_name)
...