logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Device::Gsm::Sms - SMS message internal class that represents a single text SMS message

Author

       Cosimo Streppone, cosimo@cpan.org

Description

       "Device::Gsm::Sms" class implements very basic SMS message object, that can be used to decode "+CMGL" GSM
       command response to build a more friendly high-level object.

Exports

       None

Methods

       The following is a list of methods applicable to "Device::Gsm::Sms" objects.

   content()
       See text() method.

   decode()
       Starts the decoding process of pdu binary data. If decoding process ends in success, return value is true
       and sms object is filled with all proper values.

       If decoding process has errors or pdu data is not provided, return value is 0 (zero).

   delete()
       Delete the current SMS message from sim card.  Example:

           $gsm = Device::Gsm->new();
           ...
           my @msg = $gsm->messages();
           $msg[0] && $msg[0]->delete();

   new()
       Basic constructor. You can build a new "Device::Gsm::Sms" object from the raw +CMGL header and PDU data.
       Those data is then decoded and a new sms object is instanced and all information filled, to be available
       for subsequent method calls.

       The allowed parameters to new() method are:

       header
           This is the raw +CMGL header string as modem outputs when you issue a +CMGL command

       pdu Binary encoded sms data

       storage
           Tells  which  storage to delete the message from. Check the documentation of your phone to know valid
           storage values. Default values are:

           "ME"
               Deletes messages from gsm phone memory.

           "SC"
               Deletes messages from sim card.

   index()
       Returns the sms message index number, that is the position of message in the internal  device  memory  or
       sim card.  This number is used for example to delete the message.

           my $gsm = Device::Gsm->new(port=>'/dev/ttyS0');
           ...
           my @messages = $gsm->messages();
           ...
           # Delete the first returned message
           my $msg = shift @messages;
           $gsm->delete_sms( $msg->index() );

   recipient()
       Returns the sms recipient number (destination address = DA) as string (ex.: +39012345678).

   sender()
       Returns the sms sender number (originating address = OA) as string.

   status()
       Status of the message can be one value from the following list:

   storage()
       Returns the storage where SMS has been read from.

   text()
       Returns the textual content of sms message.

   token()
       Returns the given PDU token of the decoded message (internal usage).

   type()
       SMS  messages  can  be  of  two types: SMS_SUBMIT and SMS_DELIVER, that are defined by two constants with
       those names. type() method returns one of these two values.

       Example:

               if( $sms->type() == Device::Gsm::Sms::SMS_DELIVER ) {
                       # ...
               }
               elsif( $sms->type() == Device::Gsm::Sms::SMS_SUBMIT ) {
                       # ...
               }

Name

       Device::Gsm::Sms - SMS message internal class that represents a single text SMS message

Requires

       •   Device::Gsm

See Also

       Device::Gsm, perl(1)

perl v5.32.0                                       2021-01-19                              Device::Gsm::Sms(3pm)

Synopsis

           # A list of Device::Gsm::Sms messages is returned by
           # Device::Gsm messages() method.

           use Device::Gsm;
           ...
           @sms = $gsm->messages();

           if( @sms ) {
               foreach( @sms ) {
                   print $msg->storage()   , "\n";
                   print $msg->recipient() , "\n";
                   print $msg->sender()    , "\n";
                   print $msg->content()   , "\n";
                   print $msg->time()      , "\n";
                   print $msg->type()      , "\n";
               }
           }

           # Or you can instance a sms message from raw PDU data
           my $msg = new Device::Gsm::Sms(
               header => '+CMGL: ...',
               pdu    => `[encoded pdu data]',
               storage=> 'ME', # or 'SC'
           );

           if( defined $msg ) {
               print $msg->recipient() , "\n";
               print $msg->sender()    , "\n";
               print $msg->content()   , "\n";  # or $msg->text()
               print $msg->time()      , "\n";
               print $msg->type()      , "\n";
           }

               $msg->delete();

Todo

       •   Complete and proof-read documentation and examples

See Also