@ConditionalOnMissingBean(name = CasWebflowConstants.ACTION_ID_MFA_TWILIO_SEND_TOKEN)
        @Bean
        @RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
        public Action mfaTwilioMultifactorSendTokenAction(
            @Qualifier(CasTwilioMultifactorAuthenticationService.BEAN_NAME)
            final CasTwilioMultifactorAuthenticationService casTwilioMultifactorAuthenticationService,
            @Qualifier(TenantExtractor.BEAN_NAME)
            final TenantExtractor tenantExtractor,
            final ConfigurableApplicationContext applicationContext,
            final CasConfigurationProperties casProperties,
            @Qualifier("mfaTwilioMultifactorBucketConsumer")
            final BucketConsumer mfaTwilioMultifactorBucketConsumer) {
            return WebflowActionBeanSupplier.builder()
                .withApplicationContext(applicationContext)
                .withProperties(casProperties)
                .withAction(() -> {
                    val twilio = casProperties.getAuthn().getMfa().getTwilio();
                    return new CasTwilioMultifactorSendTokenAction(casTwilioMultifactorAuthenticationService,
                        twilio, mfaTwilioMultifactorBucketConsumer, tenantExtractor);
                })
                .withId(CasWebflowConstants.ACTION_ID_MFA_TWILIO_SEND_TOKEN)
                .build()
                .get();
        }
This is {@link CasTwilioMultifactorAuthenticationWebflowConfiguration}.

@author Misagh Moayyed
@since 7.2.0
support/cas-server-support-twilio-mfa/src/main/java/org/apereo/cas/config/CasTwilioMultifactorAuthenticationWebflowConfiguration.java