Objects ======= For various (mostly historical) reasons, all objects you get from Gammu are not real objects but rather a dictionaries. This has quite a big impact of usability and will most likely change in the future. All the objects basically map to C structures, so you might also refer to :ref:`libgammu` chapter. .. _sms_obj: SMS Object ---------- Object describing single SMS message in a way GSM network handles is (140 bytes of data). You can construct it from :ref:`sms_info_obj` using :meth:`gammu.EncodeSMS`. Message dictionary can consist of following fields: .. attribute:: SMSC SMSC information, see :ref:`smsc_obj`. .. attribute:: Number Recipient number, needs to be set for sending. .. attribute:: Name Name of the message, does not make any effect on sending, some phones might store it. .. attribute:: UDH User defined headers for SMS, see :ref:`udh_obj`. .. attribute:: Text Message text .. attribute:: Folder Folder where the message is stored .. attribute:: Location Location where the message is stored .. attribute:: InboxFolder Indication whether folder is an inbox .. attribute:: DeliveryStatus Message delivery status, used only for received messages .. attribute:: ReplyViaSameSMSC Flag indicating whether reply using same SMSC is requested .. attribute:: Class Message class .. attribute:: MessageReference Message reference number, used mostly to identify delivery reports .. attribute:: ReplaceMessage Id of message which this message is supposed to replace .. attribute:: RejectDuplicates Whether to reject duplicates .. attribute:: Memory Memory where the message is stored .. attribute:: Type Message type, one of: * ``Submit`` - message to be send * ``Deliver`` - delivered message * ``Status_Report`` - when creating new message this will create submit message with request for delivery report .. attribute:: Coding Message encoding, one of: * ``Unicode_No_Compression`` - unicode message which can contain any chars, but can be only 70 chars long * ``Unicode_Compression`` - not supported by Gammu and most phones * ``Default_No_Compression`` - message with GSM alphabet only, up to 160 chars long * ``Default_Compression`` - not supported by Gammu and most phones * ``8bit`` - for binary messages .. attribute:: DateTime Timestamp when the message was received or sent. Please note that most phones do no record timestamp of sent messages. .. attribute:: SMSCDateTime Timestamp when the message was at SMSC. .. attribute:: State Message state, one of: * ``Sent`` * ``UnSent`` * ``Read`` * ``UnRead`` Examples:: # Simple message to send, using SMSC from phone SMS_1 = { 'Number': '123465', 'SMSC': {'Location': 1}, 'Text': 'Hello world!', } # Class 0 (on display) message using custom SMSC number SMS_2 = { 'Number': '123465', 'SMSC': {'Number': '+420987654321'}, 'Text': 'Hello world!', 'Class': 0, } .. _udh_obj: UDH Object ---------- UDH dictionary can consist of following fields: .. attribute:: ID8bit 8-bit ID of the message, not required .. attribute:: ID16bit 16-bit ID of the message, not required .. attribute:: PartNumber Number of current part .. attribute:: AllParts Count of all message parts .. attribute:: Type UDH type, one of predefined strings: * ``NoUDH`` * ``ConcatenatedMessages`` * ``ConcatenatedMessages16bit`` * ``DisableVoice`` * ``DisableFax`` * ``DisableEmail`` * ``EnableVoice`` * ``EnableFax`` * ``EnableEmail`` * ``VoidSMS`` * ``NokiaRingtone`` * ``NokiaRingtoneLong`` * ``NokiaOperatorLogoLong`` * ``NokiaCallerLogo`` * ``NokiaWAP`` * ``NokiaWAPLong`` * ``NokiaCalendarLong`` * ``NokiaProfileLong`` * ``NokiaPhonebookLong`` * ``UserUDH`` .. attribute:: Text UDH content Example: .. code-block:: python UDH = { "ID8bit": 0xCD, "PartNumber": 1, "AllParts": 2, "Type": "ConcatenatedMessages", } .. _smsc_obj: SMSC Object ----------- SMSC dictionary can consist of following fields: .. attribute:: Location Location where the SMSC is stored .. attribute:: Number SMSC number .. attribute:: Name Name of the SMSC configuration .. attribute:: DefaultNumber Default recipient number, ignored on most phones .. attribute:: Format Default message format, one of: * ``Text`` * ``Pager`` * ``Fax`` * ``Email`` .. attribute:: Validity Default message validity as a string * ``NA`` - validity not available * ``Max`` - maximum validity allowed by network * ``nM``, ``nH``, ``nD``, ``nW`` - period defined in minutes, hours, days or weeks, eg. ``3W`` Example: .. code-block:: python SMSC = { "Location": 1, "Number": "+420987654321", "Format": "Text", "Validity": "Max", } .. _sms_info_obj: SMS Info Object --------------- Message info dictionary can consist of following fields: .. attribute:: Unicode Whether to use Unicode for the message. .. attribute:: ReplaceMessage Id of message which this message is supposed to replace .. attribute:: Unknown Boolean flag indicating there was some part which Gammu could not decode. .. attribute:: Class Message class .. attribute:: Entries Actual message data, see :ref:`sms_info_part_obj`. Example: .. code-block:: python SMSINFO = { "Class": 1, "Entries": [ {"ID": "Text", "Buffer": "This is a "}, {"ID": "Text", "Buffer": "message", "Italic": True}, {"ID": "Text", "Buffer": " from "}, {"ID": "Text", "Buffer": "Gammu", "Bold": True}, ], } .. _sms_info_part_obj: SMS Info Part Object -------------------- Message component can consist of following fields: .. attribute:: ID Identification of the part type: * ``Text`` * ``ConcatenatedTextLong`` - Contacenated SMS, when longer than 1 SMS. * ``ConcatenatedAutoTextLong`` - Contacenated SMS, auto Default/Unicode coding. * ``ConcatenatedTextLong16bit`` * ``ConcatenatedAutoTextLong16bit`` * ``NokiaProfileLong`` - Nokia profile = Name`` Ringtone`` ScreenSaver * ``NokiaPictureImageLong`` - Nokia Picture Image + (text) * ``NokiaScreenSaverLong`` - Nokia screen saver + (text) * ``NokiaRingtone`` - Nokia ringtone - old SM2.0 format`` 1 SMS * ``NokiaRingtoneLong`` - Nokia ringtone concatenated`` when very long * ``NokiaOperatorLogo`` - Nokia 72x14 operator logo`` 1 SMS * ``NokiaOperatorLogoLong`` - Nokia 72x14 op logo or 78x21 in 2 SMS * ``NokiaCallerLogo`` - Nokia 72x14 caller logo`` 1 SMS * ``NokiaWAPBookmarkLong`` - Nokia WAP bookmark in 1 or 2 SMS * ``NokiaWAPSettingsLong`` - Nokia WAP settings in 2 SMS * ``NokiaMMSSettingsLong`` - Nokia MMS settings in 2 SMS * ``NokiaVCARD10Long`` - Nokia VCARD 1.0 - only name and default number * ``NokiaVCARD21Long`` - Nokia VCARD 2.1 - all numbers + text * ``NokiaVCALENDAR10Long`` - Nokia VCALENDAR 1.0 - can be in few sms * ``NokiaVTODOLong`` * ``VCARD10Long`` * ``VCARD21Long`` * ``DisableVoice`` * ``DisableFax`` * ``DisableEmail`` * ``EnableVoice`` * ``EnableFax`` * ``EnableEmail`` * ``VoidSMS`` * ``EMSSound10`` - IMelody 1.0 * ``EMSSound12`` - IMelody 1.2 * ``EMSSonyEricssonSound`` - IMelody without header - SonyEricsson extension * ``EMSSound10Long`` - IMelody 1.0 with UPI. * ``EMSSound12Long`` - IMelody 1.2 with UPI. * ``EMSSonyEricssonSoundLong`` - IMelody without header with UPI. * ``EMSPredefinedSound`` * ``EMSPredefinedAnimation`` * ``EMSAnimation`` * ``EMSFixedBitmap`` - Fixed bitmap of size 16x16 or 32x32. * ``EMSVariableBitmap`` * ``EMSVariableBitmapLong`` * ``MMSIndicatorLong`` - MMS message indicator. * ``WAPIndicatorLong`` * ``AlcatelMonoBitmapLong`` - Variable bitmap with black and white colors * ``AlcatelMonoAnimationLong`` - Variable animation with black and white colors * ``AlcatelSMSTemplateName`` * ``SiemensFile`` - Siemens OTA .. attribute:: Left Text formatting .. attribute:: Right Text formatting .. attribute:: Center Text formatting .. attribute:: Large Text formatting .. attribute:: Small Text formatting .. attribute:: Bold Text formatting .. attribute:: Italic Text formatting .. attribute:: Underlined Text formatting .. attribute:: Strikethrough Text formatting .. attribute:: Protected Whether message part should be protected (DRM) .. attribute:: Number Number to encode in message. .. attribute:: Ringtone Ringtone to encode in message. .. attribute:: Bitmap Bitmap to encode in message. .. attribute:: Bookmark Bookmark to encode in message. .. attribute:: Settings Settings to encode in message. .. attribute:: MMSIndicator MMS indication to encode in message. .. attribute:: Phonebook Phonebook entry to encode in message, see :ref:`pbk_obj`. .. attribute:: Calendar Calendar entry to encode in message, see :ref:`cal_obj`. .. attribute:: ToDo Todo entry to encode in message, see :ref:`todo_obj`. .. attribute:: File File to encode in message, see :ref:`file_obj`. .. attribute:: Buffer String to encode in message. .. _todo_obj: Todo Object ----------- Todo entry is a dictionary consisting of following fields: .. attribute:: Location Location where the entry is stored .. attribute:: Type Type of entry, one of: * ``REMINDER`` - Reminder or Date * ``CALL`` - Call * ``MEETING`` - Meeting * ``BIRTHDAY`` - Birthday or Anniversary or Special Occasion * ``MEMO`` - Memo or Miscellaneous * ``TRAVEL`` - Travel * ``VACATION`` - Vacation * ``T_ATHL`` - Training - Athletism * ``T_BALL`` - Training - Ball Games * ``T_CYCL`` - Training - Cycling * ``T_BUDO`` - Training - Budo * ``T_DANC`` - Training - Dance * ``T_EXTR`` - Training - Extreme Sports * ``T_FOOT`` - Training - Football * ``T_GOLF`` - Training - Golf * ``T_GYM`` - Training - Gym * ``T_HORS`` - Training - Horse Race * ``T_HOCK`` - Training - Hockey * ``T_RACE`` - Training - Races * ``T_RUGB`` - Training - Rugby * ``T_SAIL`` - Training - Sailing * ``T_STRE`` - Training - Street Games * ``T_SWIM`` - Training - Swimming * ``T_TENN`` - Training - Tennis * ``T_TRAV`` - Training - Travels * ``T_WINT`` - Training - Winter Games * ``ALARM`` - Alarm * ``DAILY_ALARM`` - Alarm repeating each day. .. attribute:: Priority Entry priority, one of: * ``High`` * ``Medium`` * ``Low`` * ``None`` .. attribute:: Entries Actual entries, see :ref:`todo_entry_obj` Example: .. code-block:: python TODO = { "Type": "MEMO", "Entries": [ { "Type": "END_DATETIME", "Value": datetime.datetime.now() + datetime.timedelta(days=1), }, {"Type": "TEXT", "Value": "Buy some milk"}, ], } .. _todo_entry_obj: Todo Entries Object ------------------- .. attribute:: Type Type of entry, one of: * ``END_DATETIME`` - Due date (Date). * ``COMPLETED`` - Whether is completed (Number). * ``ALARM_DATETIME`` - When should alarm be fired (Date). * ``SILENT_ALARM_DATETIME`` - When should silent alarm be fired (Date). * ``TEXT`` - Text of to do (Text). * ``DESCRIPTION`` - Description of to do (Text). * ``LOCATION`` - Location of to do (Text). * ``PRIVATE`` - Whether entry is private (Number). * ``CATEGORY`` - Category of entry (Number). * ``CONTACTID`` - Related contact ID (Number). * ``PHONE`` - Number to call (Text). * ``LUID`` - IrMC LUID which can be used for synchronisation (Text). * ``LAST_MODIFIED`` - Date and time of last modification (Date). * ``START_DATETIME`` - Start date (Date). .. attribute:: Value Actual value, corresponding type to Type field. .. _cal_obj: Calendar Object --------------- Calendar entry is a dictionary consisting of following fields: .. attribute:: Location Location where the entry is stored .. attribute:: Type Type of entry, one of: * ``REMINDER`` - Reminder or Date * ``CALL`` - Call * ``MEETING`` - Meeting * ``BIRTHDAY`` - Birthday or Anniversary or Special Occasion * ``MEMO`` - Memo or Miscellaneous * ``TRAVEL`` - Travel * ``VACATION`` - Vacation * ``T_ATHL`` - Training - Athletism * ``T_BALL`` - Training - Ball Games * ``T_CYCL`` - Training - Cycling * ``T_BUDO`` - Training - Budo * ``T_DANC`` - Training - Dance * ``T_EXTR`` - Training - Extreme Sports * ``T_FOOT`` - Training - Football * ``T_GOLF`` - Training - Golf * ``T_GYM`` - Training - Gym * ``T_HORS`` - Training - Horse Race * ``T_HOCK`` - Training - Hockey * ``T_RACE`` - Training - Races * ``T_RUGB`` - Training - Rugby * ``T_SAIL`` - Training - Sailing * ``T_STRE`` - Training - Street Games * ``T_SWIM`` - Training - Swimming * ``T_TENN`` - Training - Tennis * ``T_TRAV`` - Training - Travels * ``T_WINT`` - Training - Winter Games * ``ALARM`` - Alarm * ``DAILY_ALARM`` - Alarm repeating each day. .. attribute:: Entries Actual entries, see :ref:`cal_entry_obj` Example: .. code-block:: python CAL = { "Type": "MEMO", "Entries": [ {"Type": "START_DATETIME", "Value": datetime.datetime.now()}, { "Type": "END_DATETIME", "Value": datetime.datetime.now() + datetime.timedelta(days=1), }, {"Type": "LOCATION", "Value": "Home"}, {"Type": "TEXT", "Value": "Relax for one day"}, ], } .. _cal_entry_obj: Calendar Entries Object ----------------------- .. attribute:: Type Type of entry, one of: * ``START_DATETIME`` - Date and time of event start. * ``END_DATETIME`` - Date and time of event end. * ``TONE_ALARM_DATETIME`` - Alarm date and time. * ``SILENT_ALARM_DATETIME`` - Date and time of silent alarm. * ``TEXT`` - Text. * ``DESCRIPTION`` - Detailed description. * ``LOCATION`` - Location. * ``PHONE`` - Phone number. * ``PRIVATE`` - Whether this entry is private. * ``CONTACTID`` - Related contact id. * ``REPEAT_DAYOFWEEK`` - Repeat each x'th day of week. * ``REPEAT_DAY`` - Repeat each x'th day of month. * ``REPEAT_DAYOFYEAR`` - Repeat each x'th day of year. * ``REPEAT_WEEKOFMONTH`` - Repeat x'th week of month. * ``REPEAT_MONTH`` - Repeat x'th month. * ``REPEAT_FREQUENCY`` - Repeating frequency. * ``REPEAT_STARTDATE`` - Repeating start. * ``REPEAT_STOPDATE`` - Repeating end. * ``REPEAT_COUNT`` - Number of repetitions. * ``LUID`` - IrMC LUID which can be used for synchronisation. * ``LAST_MODIFIED`` - Date and time of last modification. .. attribute:: Value Actual value, corresponding type to Type field. .. _pbk_obj: Phonebook Object ---------------- Phonebook entry is a dictionary consisting of following fields: .. attribute:: Location Location where the entry is stored .. attribute:: MemoryType Memory where the message is stored .. attribute:: Entries Actual entries, see :ref:`pbk_entry_obj` Example: .. code-block:: python PBK = { "Location": 1000, "MemoryType": "ME", "Entries": [ {"Type": "Number_General", "Value": "+420123456789"}, {"Type": "Text_Name", "Value": "Stojan Jakotyc"}, ], } .. _pbk_entry_obj: Phonebook Entries Object ------------------------ .. attribute:: Type Type of entry, one of: * ``Number_General`` - General number. (Text) * ``Number_Mobile`` - Mobile number. (Text) * ``Number_Fax`` - Fax number. (Text) * ``Number_Pager`` - Pager number. (Text) * ``Number_Other`` - Other number. (Text) * ``Text_Note`` - Note. (Text) * ``Text_Postal`` - Complete postal address. (Text) * ``Text_Email`` - Email. (Text) * ``Text_Email2`` - Second email. (Text) * ``Text_URL`` - URL (Text) * ``Date`` - Date and time of last call. (Date) * ``Caller_Group`` - Caller group. (Number) * ``Text_Name`` - Name (Text) * ``Text_LastName`` - Last name. (Text) * ``Text_FirstName`` - First name. (Text) * ``Text_Company`` - Company. (Text) * ``Text_JobTitle`` - Job title. (Text) * ``Category`` - Category. (Number, if -1 then text) * ``Private`` - Whether entry is private. (Number) * ``Text_StreetAddress`` - Street address. (Text) * ``Text_City`` - City. (Text) * ``Text_State`` - State. (Text) * ``Text_Zip`` - Zip code. (Text) * ``Text_Country`` - Country. (Text) * ``Text_Custom1`` - Custom information 1. (Text) * ``Text_Custom2`` - Custom information 2. (Text) * ``Text_Custom3`` - Custom information 3. (Text) * ``Text_Custom4`` - Custom information 4. (Text) * ``RingtoneID`` - Ringtone ID. (Number) * ``PictureID`` - Picture ID. (Number) * ``Text_UserID`` - User ID. (Text) * ``CallLength`` - Length of call (Number) * ``Text_LUID`` - LUID - Unique Identifier used for synchronisation (Text) * ``LastModified`` - Date of last modification (Date) * ``Text_NickName`` - Nick name (Text) * ``Text_FormalName`` - Formal name (Text) * ``Text_PictureName`` - Picture name (on phone filesystem). (Text) * ``PushToTalkID`` - Push-to-talk ID (Text) * ``Number_Messaging`` - Favorite messaging number. (Text) * ``Photo`` - Photo (Picture). * ``SecondName`` - Second name. (Text) * ``VOIP`` - VOIP address (Text). * ``SIP`` - SIP address (Text). * ``DTMF`` - DTMF (Text). * ``Video`` - Video number. (Text) * ``SWIS`` - See What I See address. (Text) * ``WVID`` - Wireless Village user ID. (Text) * ``NamePrefix`` - Name prefix (Text) * ``NameSuffix`` - Name suffix (Text) .. attribute:: Location Location for the field: * ``Unknown`` - not define * ``Home`` - home * ``Work`` - work .. attribute:: Value Actual value, corresponding type to Type field. .. attribute:: PictureType Type of picture which is stored in Value field (only for Picture fields). .. _file_obj: File Object ----------- File is a dictionary consisting of following fields: .. attribute:: Used Number of bytes used by this file. .. attribute:: Name File name. .. attribute:: Folder Boolean value indicating whether this is a folder. .. attribute:: Level Depth of file on the filesystem. .. attribute:: Type File type, one of: * ``Other`` * ``Java_JAR`` * ``Image_JPG`` * ``Image_BMP`` * ``Image_GIF`` * ``Image_PNG`` * ``Image_WBMP`` * ``Video_3GP`` * ``Sound_AMR`` * ``Sound_NRT`` - DCT4 binary format * ``Sound_MIDI`` * ``MMS`` .. attribute:: ID_FullName Full file name including path. .. attribute:: Buffer Content of the file. .. attribute:: Modified Timestamp of last change .. attribute:: Protected Boolean value indicating whether file is protected (DRM). .. attribute:: ReadOnly Boolean value indicating whether file is read only. .. attribute:: Hidden Boolean value indicating whether file is hidden. .. attribute:: System Boolean value indicating whether file is system. .. attribute:: Pos Current position of file upload .. attribute:: Finished Boolean value indicating completed file transfer. Example: .. code-block:: python FILE = { "ID_FullName": PATH, "Name": os.path.basename(PATH), "Buffer": data, "Protected": 0, "ReadOnly": 0, "Hidden": 0, "System": 0, "Folder": 0, "Level": 0, "Type": "Other", "Finished": 0, "Pos": 0, } .. _divert-type: Divert Type ----------- The divert type can have one of following values: * ``Busy`` - Divert when busy. * ``NoAnswer`` - Divert when not answered. * ``OutOfReach`` - Divert when phone off or no coverage. * ``AllTypes`` - Divert all calls without ringing. .. _divert-call: Call Type --------- The call type for diverts can have one of following values: * ``Voice`` - Voice calls. * ``Fax`` - Fax calls. * ``Data`` - Data calls. * ``All`` - All calls. .. _divert-entry: Call Divert Objects ------------------- .. attribute:: DivertType When to do the divert, see :ref:`divert-type`. .. attribute:: CallType What call types to divert, see :ref:`divert-call`. .. attribute:: Number Phone number where to divert. .. attribute:: Timeout Timeout after which the divert will happen.