One solution is to send sms via emails. It is cheap, reliable and does
not rely on third party services:

web2py/gluon/contrib/sms_utils.py



On Feb 17, 3:42 pm, Ovidio Marinho <ovidio...@gmail.com> wrote:
> what makes your application, it sends sms:? you can share this application?,
> I need an application that sends SMS.
>
> 2011/2/15 Marc Smith <msmith...@gmail.com>
>
>
>
>
>
>
>
>
>
> > Hi,
>
> > I am having trouble using the LOAD component with forms to produce a
> > "wizard" style multiple form type setup (eg, enter information on one
> > "screen", then go to the next, etc.).
>
> > If I move my mobile_verify.load file to mobile_verify.html and visit
> >http://localhost/myapp/default/mobile_verify/one-- the form seems to
> > work fine. When I keep it as a .load and it loads up in my layout, the
> > first form works fine, I click submit and it goes to the next form,
> > but the second form seems to be "stuck". When I click submit on the
> > second form (mobile_verify/two), it brings me back to the same form.
> > It appears request.vars is empty and thats why the .accepts returns
> > false and keeps me on that form?
>
> > In my controller I have this:
> > --snip--
> > @auth.requires_login()
> > def mobile_verify():
> >    """
> >    Mobile phone number verification.
> >    """
> >    # Make the user's phone number look nice
> >    pretty_phone = '(' + auth.user.mobile[0:3] + ') '+ \
> >                 auth.user.mobile[3:6] + '-' + auth.user.mobile[6:10]
>
> >    if request.args(0) == 'one':
> >        # Form to pick verification method
> >        vrfy_method_form = FORM(FIELDSET(INPUT(_type='radio',
> > _name='verify_method',
> >                                               _value='SMS'),
> >                                         'Send me a text (SMS)
> > message'),
> >                                FIELDSET(INPUT(_type='radio',
> > _name='verify_method',
> >                                               _value='VOICE'),
> >                                         'Call (voice) my mobile
> > phone'),
> >                                CENTER(INPUT(_id='text_me_button',
> > _type='submit',
> >                                             _value='Text me!'),
> >                                       INPUT(_id='call_me_button',
> > _type='submit',
> >                                             _value='Call me!')))
>
> >        if vrfy_method_form.accepts(request.vars, session):
> >            #session.flash = 'vrfy_method_form accepted'
> >            session.verify_method = request.vars.verify_method
> >            redirect(URL('mobile_verify', args='two'))
>
> >        return dict(vrfy_method_form=vrfy_method_form,
> > page_title='blah',
> >                    pretty_phone=pretty_phone)
>
> >    elif request.args(0) == 'two':
> >        # Form to check verification code
> >        chk_code_form = FORM(CENTER(FIELDSET('Type the verification
> > code here:',
>
> > INPUT(_name='verify_code',
>
> > requires=IS_NOT_EMPTY())),
> >                                    FIELDSET(INPUT(_type='submit'))))
>
> >        if chk_code_form.accepts(request.vars, session):
> >            #session.flash = 'chk_code_form accepted'
> >            session.typed_code = str(request.vars.verify_code)
> >            redirect(URL('mobile_verify', args='three'))
>
> >        # Verification code
> >        code = random.randint(100000, 999999)
>
> >        return dict(pretty_phone=pretty_phone,
> > chk_code_form=chk_code_form,
> >                    code=code, page_title='blah')
>
> >    elif request.args(0) == 'three':
> >        return dict(page_title='blah', pretty_phone=pretty_phone)
> > --snip--
>
> > For my mobile_verify.load file:
> > --snip--
> > {{if request.args(0) == 'one':}}
> >        <h4>How should we verify your mobile phone number?</h4>
> >        <center>
> >                My mobile phone: <strong>{{=pretty_phone}}</strong>
> >                <br/>
> >                <a href="{{=URL('user', args='profile')}}">Wrong phone
> > number?</a>
> >        </center>
> >        <br/>
> >        {{=vrfy_method_form}}
> >        <script>
> >                jQuery(document).ready(function() {
> >                        jQuery('#text_me_button').hide();
> >                        jQuery('#call_me_button').hide();
>
> >  jQuery('input[name="verify_method"]').change(function() {
> >                                if
> > (jQuery('input[name="verify_method"]:checked').val() == 'SMS')
> > {
> >                                        jQuery('#call_me_button').hide();
> >                                        jQuery('#text_me_button').show();
> >                                } else {
> >                                        jQuery('#text_me_button').hide();
> >                                        jQuery('#call_me_button').show();
> >                                }
> >                        });
> >                });
> >        </script>
> > {{elif request.args(0) == 'two':}}
> >        {{if session.verify_method == 'SMS':}}
> >                {{#SendSMS(auth.user.mobile, code)}}
> >                An SMS text message has been sent to your mobile phone.
> >                {{=code}}
> >        {{else:}}
> >                {{#OriginateCall(auth.user.mobile, code)}}
> >                Your phone is ringing, please answer it.
> >                {{=code}}
> >        {{pass}}
> >        {{session.verify_code = str(code)}}
> >        {{=chk_code_form}}
> > {{elif request.args(0) == 'three':}}
> >        {{if session.typed_code == session.verify_code:}}
> >                <h4>Success!</h4>
> >                You should now add some contacts. Click <a
> > href="{{=URL('auth_user',
> > args='manage_contacts')}}">here</a> to manage your contacts.
> >        {{else:}}
> >                <h4>Sorry, but the code you entered didn't work.</h4>
> >                Click <a href="{{=URL('auth_user',
> > args='statistics')}}">here</a> to
> > try validating your phone again.
> >        {{pass}}
> > {{pass}}
> > --snip--
>
> > For the view that calls the LOAD function:
> > {{extend 'layout.html'}}
> > <div id="box3" class="box-style">
> >        <h2 class="title">{{=page_title}}</h2>
> >        <div class="content">
> >                {{if auth.user.phone_verified == False:}}
> >                        {{=LOAD(c='default', f='mobile_verify', args='one',
> > extension='load', ajax=True)}}
> >                {{else:}}
> >                        <p>blah</p>
> >                {{pass}}
> >        </div>
> > </div>
> > --snip--
>
> > Help! Any ideas are greatly appreciated.
>
> > Version 1.91.6 (2011-01-03 17:55:14)
>
> > --Marc
>
> --
>         Ovidio Marinho Falcao Neto
>              ovidio...@gmail.com
>          Tecnologia da Informaçao
>          Casa Civil do Governador
>          83 3214 7885 - 88269088
>                   Paraiba

Reply via email to