I haven't tried it, but here's my understanding: You can send a text message simply by sending an email -- the email address is of the form [mobile_number]@[provider-specific_email_server]. For example, if the mobile number is 123-456-7890 and the provider is Sprint, you can send an SMS message by sending an email to 1234567...@messaging.sprintpcs.com. The sms_email function in sms_utils.py<http://code.google.com/p/web2py/source/browse/gluon/contrib/sms_utils.py>simply constructs the proper email address based on the phone number and mobile provider as arguments. You can then use that email address to send an email using the web2py Mail system: http://web2py.com/book/default/chapter/08#Auth-and-Mail. Obviously, you need to know the user's mobile provider (and there are a lot of choices) for this to work. Anthony
On Thursday, February 17, 2011 7:06:10 PM UTC-5, puercoespin wrote: > An exemple, please? > > My mobile phone, 123456789, what's the code for sending a SMS? > > On 17 feb, 22:46, Massimo Di Pierro <massimo....@gmail.com> > wrote: > > 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 <ovid...@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 <msmi...@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 > > > ovid...@gmail.com > > > Tecnologia da InformaƧao > > > Casa Civil do Governador > > > 83 3214 7885 - 88269088 > > > Paraiba