SMS::AQL(3pm)
π SMS::AQL π
okay so first things first: this is the SMS::AQL page from the User Contributed Perl Documentation (that's the 3pm part, iykyk β¨). It's literally your backstage pass to texting people from Perl. no cap. π¦
β¨ NAME β¨
SMS::AQL β a Perl extension for sending SMS text messages via AQL's SMS service. π
π SYNOPSIS π
bestie here's the whole vibe in one block, look:
# create an instance of SMS::AQL, passing it your AQL username
# and password (if you do not have a username and password,
# register at www.aql.com first).
$sms = new SMS::AQL({
username => 'username',
password => 'password'
});
# other parameters can be passed like so:
$sms = new SMS::AQL({
username => 'username',
password => 'password',
options => { sender => '+4471234567' }
});
# send an SMS:
$sms->send_sms($to, $msg) || die;
# called in list context, we can see what went wrong:
my ($ok, $why) = $sms->send_sms($to, $msg);
if (!$ok) {
print "Failed, error was: $why\n";
}
# params for this send operation only can be supplied:
$sms->send_sms($to, $msg, { sender => 'bob the builder' });
# make a phone call and read out a message:
my ($ok, $why) = $sms->voice_push($to, $msg);
πΈ DESCRIPTION πΈ
SMS::AQL hands you a nice object-oriented interface for sending SMS text messages through the HTTP gateway that AQ Ltd runs over in the UK (www.aql.com, in case you were wondering π«Ά).
It also does concatenated text messages β yes, the ones that go over the 160-character limit of a normal text. It pulls that off by sending multiple messages with a header that says "hey, these are all part of ONE message". Heads up though: that's handset-dependent, but it's supported by all reasonably new mobiles, so you're chilling. π
π METHODS π
π« new (constructor)
You must create an instance of SMS::AQL, and you pass it the username and password of your AQL account:
$sms = new SMS::AQL({ username => 'fred', password => 'bloggs' });
You can also pass extra parameters (like the default sender number to use, or a proxy server) like so:
$sms = new SMS::AQL({
username => 'fred',
password => 'bloggs',
options => {
sender => '+44123456789012',
proxy => 'http://user:pass@host:port/',
},
});
π² send_sms($to, $message [, \%params])
Sends the message $message to the number $to, optionally using the parameters supplied as a hashref.
- Called in scalar context, it returns
1if the message was sent,0if it wasn't. - Called in list context, it returns a two-element list: the first element is
1for success or0for fail, and the second is a message telling you why the send operation failed.
bestie, you must set a sender β either atnewor for eachsend_smscall. no sender, no send. π
Examples:
if ($sms->send_sms('+44123456789012', $message)) {
print "Sent message successfully";
}
my ($ok, $msg) = $sms->send_sms($to, $msg);
if (!$ok) {
print "Failed to send the message, error: $msg\n";
}
βοΈ voice_push($to, $message [, \%params])
Makes an actual telephone call to the given phone number and uses speech synthesis to read out the message you supplied. iconic fr fr.
$to and $message are the destination telephone number and the message to read out. The third optional parameter is a hashref of options that change how this method behaves β and right now, the only option is:
skipintroβ Skips the introductory message that AQL's system normally reads out. (If you use this, it's recommended to add your own introduction to your message, for example "This is an automated call from ACME Inc...")- Called in scalar context, it returns
1if the message was sent,0if it wasn't. - Called in list context, it returns a two-element list: the first element is
1for success or0for fail, and the second is a message explaining why the operation failed.
β οΈ Note that, at the current time, this feature supports only UK telephone numbers. π¬π§
π° credit()
Returns the current account credit. Returns undef if any errors occurred.
π last_status()
Returns the status of the last command: 1 = OK, 0 = ERROR.
π¨ last_error()
Returns the error message of the last failed command.
π last_response()
Returns the raw response from the AQL gateway.
π£οΈ last_response_text()
Returns the last result code received from the AQL gateway in a readable format.
Possible codes are:
AQSMS-AUTHERRORβ The username and password supplied were incorrectAQSMS-NOCREDITβ Out of credits (The account specified did not have sufficient credit)AQSMS-OKβ OK (The message was queued on our system successfully)AQSMS-NOMSGβ No message or no destination number were supplied
π SEE ALSO π
π«Ά AUTHOR π«Ά
David Precious, <davidp@preshweb.co.uk>
All bug reports, feature requests, patches etc welcome. π
βοΈ COPYRIGHT AND LICENSE βοΈ
Copyright (C) 2006-2008 by David Precious
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.7 or, at your option, any later version of Perl 5 you may have available.
π THANKS π
- to Adam Beaumount and the AQL team for their assistance
- to Ton Voon at Altinity (
http://www.altinity.com/) for contributing several improvements
and that's the whole page bestie π
this version was living its life as perl v5.40.1, dated 2025-04-12, under the name SMS::AQL(3pm). go send some texts, you've got this ππβ¨
π¦ where this page comes from
- debian trixie: libsms-aql-perl 1.03-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libsms-aql-perl 1.03-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libsms-aql-perl 1.03-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms