Skip to content

mediaburst/clockwork-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clockwork SMS API for Python

Install

The easiest way to install is through "pip":

pip install clockwork

Requirements

  • Python 2.6+

Usage

Send a single SMS message

from clockwork import clockwork
api = clockwork.API('API_KEY_GOES_HERE') #Be careful not to post your API Keys to public repositories.
message = clockwork.SMS(to = '441234123456', message = 'This is a test message.')
response = api.send(message)

if response.success:
    print (response.id)
else:
    print (response.error_code)
    print (response.error_message)

Send multiple SMS messages

Simply pass an array of sms objects to the send method. Instead of sending back a single sms response, an array of sms responses will be returned:

from clockwork import clockwork
api = clockwork.API('API_KEY_GOES_HERE') #Be careful not to post your API Keys to public repositories.
message1 = clockwork.SMS(to = '441234123456', message = 'This is a test message 1.')
message2 = clockwork.SMS(to = '441234123457', message = 'This is a test message 2.')
message3 = clockwork.SMS(to = '441234123458', message = 'This is a test message 3.')
response = api.send([message1,message2,message3])

for sms_response in response:
    if sms_response.success:
        print (sms_response.id)
    else:
        print (sms_response.error_code)
        print (sms_response.error_message)

Passing an array of messages to the send method is much more efficient than making multiple calls to the send method; as well making less round-trips to the server the messages are "batched" in clockwork, which is significantly better for performance.

Send messages - available parameters

This wrapper supports a subset of the available clockwork API parameters for sending (for the full set see here).

Setting parameters for all messages

You create an api object with api = clockwork.API(api_key,[optional_setting = value,..] The optional_setting parameters allows you to set the following, which will be used for all messages sent through the api object:

Parameter Description
from_name Sets the from name
concat Sets the concat setting
invalid_char_option Sets the InvalidCharOption setting
truncate Sets the truncate setting

So for example if I want all messages to use the from address 'bobby', I would do:

    api = clockwork.API('MY_API_KEY', from_name = 'Bobby') 
Setting parameters for each message.

You create an sms object with sms = clockwork.SMS(to = 'xxx', message = 'xxx', [optional_setting = value,..]

In a similar pattern to the API parameters, the optional_setting parameters allows you to set the following additional parameters for an individual message:

Parameter Description
client_id Sets the ClientId setting
from_name Sets the from name
invalid_char_option Sets the InvalidCharOption setting
truncate Sets the truncate setting

Any parameters defined here will take precedence over the same one defined on the api object:

api = clockwork.API('MY_API_KEY',from_name = 'Bobby')
sms = clockwork.SMS(to = '441234123456', message = 'This is a test message 1.', from_name = 'Sammy')
response = api.send(sms) # WILL SEND WITH FROM ADDRESS 'Sammy'

Check balance

from clockwork import clockwork
api = clockwork.API('API_KEY_GOES_HERE')  #Be careful not to post your API Keys to public repositories.
balance = api.get_balance()
print (balance) # => {'currency': None, 'balance': '231.03', 'account_type': 'PAYG'}

License

This project is licensed under the MIT open-source license.

A copy of this license can be found in LICENSE.txt

Contributing

If you have any feedback on this wrapper drop us an email to hello@clockworksms.com.

The project is hosted on GitHub at http://www.github.com/mediaburst/clockwork-python.

If you would like to contribute a bug fix or improvement please fork the project and submit a pull request. Please add tests for your use case.

Changelog

1.2.0 (24th February 2016)

  • Removed lxml dependency

1.1.0 (5th January 2015)

  • Python3 Support

1.03 (23rd December 2014)

  • Replacing Distribute with Setuptools

1.0.2 (18th May 2014)

  • Unicode support added [MR]

1.0.1 (01st September, 2013)

  • Minor changes

1.0.0 (01st August, 2013)

  • Initial release of wrapper [MR]

Credits and Acknowledgements

Thanks to zeroSteiner for removing the lxml dependency and bringing ElementTree into the wrapper.

Thanks to bjornpost for his work on Python 3 support and replacing Distribute with Setuptools

Many thanks to cHemingway for adding Unicode support.