def METHOD_NAME(self, request: HttpRequest, *args, **kwargs) -> HttpResponse:
    user = self.get_pending_user()
    stage: AuthenticatorSMSStage = self.executor.current_stage
    if SESSION_KEY_SMS_DEVICE not in self.request.session:
        device = SMSDevice(user=user, confirmed=False, stage=stage, name="SMS Device")
        device.generate_token(commit=False)
        self.request.session[SESSION_KEY_SMS_DEVICE] = device
        if phone_number := self._has_phone_number():
            device.phone_number = phone_number
            try:
                self.validate_and_send(phone_number)
            except ValidationError as exc:
                response = AuthenticatorSMSChallengeResponse()
                response._errors.setdefault("phone_number", [])
                response._errors["phone_number"].append(ErrorDetailSerializer(exc.detail))
                return self.challenge_invalid(response)
    return super().METHOD_NAME(request, *args, **kwargs)