跳转到主要内容

Clickatell HTTP库

项目描述

Bellville, A Clickatell Python Library

A Python Clickatell HTTP library

>>> from clickatell.api import Clickatell
>>> from clickatell import constants as cc
>>> clickatell = Clickatell('username','password','api_id',
...                             sendmsg_defaults={
...                                    'callback': cc.YES,
...                                    'msg_type': cc.SMS_DEFAULT,
...                                    'deliv_ack': cc.YES,
...                                    'req_feat': cc.FEAT_ALPHA + \
...                                             cc.FEAT_NUMER + \
...                                             cc.FEAT_DELIVACK
...                              })
>>> clickatell.sendmsg(recipients=['27123456789'], \
...                     sender='27123456789', text='hello world')
[ERR: 301, No Credit Left]
>>>

下一步,为您的Clickatell账户获取一些信用。

入门指南

确保您拥有Clickatell账户,他们将为您提供10条免费短信,您可以使用这些短信进行测试。但是,即使未送达的消息也会计入您的信用,如果您打算实际使用这10条短信,请确保您使用库100%正确。使用他们提供的用户名、密码和api_id。

如果您想使用代码,以下内容应该足够

$ python setup.py install

如果您想开发代码,请执行以下操作

$ virtualenv --no-site-packages ve/
$ source ve/bin/activate
(ve)$ pip -E ve/ install -r requirements.pip
(ve)$ python setup.py develop
...

来自的Clickatell库将在您的PYTHONPATH中,并且可以通过Python shell访问。

测试

此项目使用Nose进行测试,master分支应该始终保持稳定

(ve)$ pip install nose
(ve)$ nosetests
...

使用Bellville

一些代码示例,说明这个工具是如何工作的。

发送单条短信

>>> from clickatell.api import Clickatell
>>> clickatell = Clickatell('username','password','api_id')
>>> [resp] = clickatell.sendmsg(recipients=['27123456789'],
...                                         sender='27123456789',
...                                         text='hello world')
>>> resp
IDResponse: ce7f181a44a4a5b7e43fe2b9a0b1f0c1
>>> resp.value # Clickatell's apiMsgId value
'ce7f181a44a4a5b7e43fe2b9a0b1f0c1'
>>>

向多个收件人发送短信

>>> [resp1, resp2] = clickatell.sendmsg(recipients=[
...                                         '27123456781',
...                                         '27123456782'],
...                                     sender='27123456789',
...                                     text='hello world')
>>> resp1.value # the apiMsgId
'ce7f181a44a4a5b7e43fe2b9a0b1f0c1'
>>> resp1.extra # the extra values returned for the response
{'To': '27123456781'}
>>> resp2.value
'ce7f181a44a4a5b7e43fe2b9a0b1f0c2'
>>> resp2.extra
{'To': '27123456782'}
>>>

检查短信状态

Clickatell允许您通过轮询其服务器来检查短信状态。然而,他们还允许您使用HTTP回调,他们将状态实时发布到您的服务器。 这要快得多,也更有效。

>>> status = clickatell.querymsg( \
...                         apimsgid='ce7f181a44a4a5b7e43fe2b9a0b1f0c1')
>>> status.value
'ce7f181a44a4a5b7e43fe2b9a0b1f0c1'
>>> status.extra
{'Status': '002'}
>>>

检查您的Clickatell账户余额

>>> clickatell.getbalance()
0.67000000000000004
>>>

检查MSISDN的覆盖范围

>>> clickatell.check_coverage('27219107700')
ERRResponse: This prefix is not currently supported. Messages sent to this prefix will fail. Please contact support for assistance.
>>> resp = clickatell.check_coverage('2776*******')
>>> resp
OKResponse: This prefix is currently supported. Messages sent to this prefix will be routed. Charge: 1
>>> resp.value
'This prefix is currently supported. Messages sent to this prefix will be routed.'
>>> resp.extra
{'Charge': '1'}
>>>

检查短信费用

>>> resp = clickatell.getmsgcharge( \
                            apimsgid='ce7f181a44a4a5b7e43fe2b9a0b1f0c1')
>>> resp.value
'ce7f181a44a4a5b7e43fe2b9a0b1f0c1'
>>> resp.extra
{'status': '002', 'charge': '1'}
>>>

发送短信批量

batch.sendmsg()方法的响应与clickatell.sendmsg()的响应相同。

>>> batch = clickatell.batch(sender='27123456789',
...                             template='Hello #field1# #field2#')
>>> with batch:
...     batch.sendmsg(to='27123456781', context={
...         'field1': 'Foo 1',
...         'field2':'Bar 1'
...     })
...     batch.sendmsg(to='27123456782', context={
...         'field1': 'Foo 2',
...         'field2':'Bar 2'
...     })
...
ERRResponse: 301, No Credit Left
ERRResponse: 301, No Credit Left
>>> # shucks

要使with语句工作,您需要Python 2.6或更高版本。如果手动启用,它可以在Python 2.5中工作

>>> from __future__ import with_statement

如果您不想使用上下文管理器,您可以使用batch_id参数手动调用batch.start()batch.end()

>>> batch = clickatell.batch(sender='27123456789',
...                             template='Hello #field1# #field2#')
>>> batch_id = batch.start()
>>> batch.sendmsg(to='...', batch_id=batch_id, context={...})
>>> batch.sendmsg(to='...', batch_id=batch_id, context={...})
>>> batch.sendmsg(to='...', batch_id=batch_id, context={...})
>>> batch.end(batch_id)

向多个收件人发送快捷消息

>>> with clickatell.batch(sender='27123456789',
...                         template='Hello world!') as batch:
...     [apimsgid1, apimsgid2, apimsgid3] = batch.quicksend(recipients=[
...         '27123456781',
...         '27123456782',
...         '27123456783',
...     ])
...
>>> apimsgid1
ERRResponse: 301, No Credit Left To: 27123456781
>>> apimsgid2
ERRResponse: 301, No Credit Left To: 27123456782
>>> apimsgid3
ERRResponse: 301, No Credit Left To: 27123456783
>>>

待办事项

尚未实施的功能包括

  1. 队列消息的删除

  2. MMS 推送

  3. WAP 推送服务指示

  4. 令牌凭证支付

  5. 8位消息

项目详情


下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

python-clickatell-0.1.3.tar.gz (12.6 kB 查看哈希)

上传时间

构建分布

python_clickatell-0.1.3-py2.6.egg (26.5 kB 查看哈希)

上传时间