The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mojar::Message::BulkSms - Send SMS via BulkSMS services.

SYNOPSIS

  use Mojar::Message::BulkSms;
  my $sms = Mojar::Message::BulkSms->new(username => ..., password => ...);

  # Synchronous
  $sms->message(q{Team, have we used up all our credits yet?}),
      ->send(recipient => '0776 432 111')
      ->send(recipient => '0778 888 123');

  # Asynchronous
  my @error;
  $sms->message(q{Team, please check the async responses}),
      ->send(recipient => $recipient[0] => sub { $error[0] = $_[1] })
      ->send(recipient => $recipient[1] => sub { $error[1] = $_[1] });

DESCRIPTION

Sends SMS messages via BulkSMS services such as usa.bulksms.com and bulksms.de.

ATTRIBUTES

  • protocol

      $sms->protocol;  # defaults to http
      $sms->protocol('https');
  • address

      $sms->address;  # defaults to www.bulksms.co.uk
      $sms->address('bulksms.de');
  • port

      $sms->port;  # defaults to 5567
      $sms->port(5567);
  • path

      $sms->path;  # defaults to eapi/submission/send_sms/2/2.0
      $sms->path('eapi/submission/send_sms/2/2.1');
  • gateway

      $sms->log->debug('Using gateway: '. $sms->gateway);

    The full URL constructed from the parts above.

  • username

      say $sms->username;
      $sms->username('us3r');

    Username for the account.

  • password

      say $sms->password;
      $sms->password('s3cr3t');

    Password for the account;

  • recipient

      say $sms->recipient;
      $sms->recipient('077-6640 2921');
  • sender

      say $sms->sender;
      $sms->sender('Your car');

    The SMS sender. However, in my (UK) experience this has no effect.

  • international_prefix

      say $sms->international_prefix;  # defaults to 44
      $sms->international_prefix('33');
  • message

      say $sms->message;
      $sms->message('Sorry, forgotten what I wanted to say now!');

    The message to send. Bear in mind that unaccepted characters get substituted by the SMS service (often to '?').

  • log

      $sms->log($app->log);
      $sms->log(Mojar::Log->new(path => 'log/sms.log', level => 'info'));
      $sms->log->error('Uh-oh!');

    A Mojo::Log-compatible log object. Defaults to using STDERR.

METHODS

new
  $sms = Mojar::Message::BulkSms->new(username => ..., password => ..., ...);

Constructor for the SMS agent.

send
  $sent = $sms->send;

Sends an SMS message. Returns a false value upon failure (when used synchronously).

  $sent = $sms->message('Boo')->send(recipient => $r1)->send(recipient => $r2);

  $sent = $sms->recipient($r3)->send(message => $m1)->send(message => $m2);

Supports method chaining, and will bail-out at the first failure if no callback is given.

  $sms->send(sub {
    my ($agent, $error) = @_;
    ...
  });

  $sms->send(message => 'Stuff' => sub { ++$error_count if $_[1] });

Also supports asynchronous calls when provided a callback as the final argument.

other methods

See the source code for other methods you can override when subclassing this.

REFERENCE

http://www.bulksms.co.uk/docs/eapi/ shows the service API.

CONFIGURATION AND ENVIRONMENT

You need to create an account at www.bulksms.co.uk.

SUPPORT

See Mojar.

DIAGNOSTICS

You can get behind-the-scenes debugging info by setting

  MOJAR_SMS_DEBUG=1

in your script's environment. You should then see all the messages to and from bulksms.co.uk as well as some progress notes.

SEE ALSO

Net::SMS::BulkSMS is similar but blocking.