# africastalking-python
![](https://img.shields.io/pypi/v/africastalking.svg)
> The SDK provides convenient access to the Africa's Talking APIs to python apps.
## Documentation
Take a look at the [API docs here](https://developers.africastalking.com).
## Install
```bash
$ pip install africastalking # python 2.7.x
OR
$ python -m pip install africastalking # python 2.7.x
OR
$ pip3 install africastalking # python 3.6.x
OR
$ python3 -m pip install africastalking # python 3.6.x
```
## Usage
The package needs to be configured with your app username and API key, which you can get from the [dashboard](https://account.africastalking.com/).
> You can use this SDK for either production or sandbox apps. For sandbox, the app username is **ALWAYS** `sandbox`
```python
# import package
import africastalking
# Initialize SDK
username = "YOUR_USERNAME" # use 'sandbox' for development in the test environment
api_key = "YOUR_API_KEY" # use your sandbox app API key for development in the test environment
africastalking.initialize(username, api_key)
# Initialize a service e.g. SMS
sms = africastalking.SMS
# Use the service synchronously
response = sms.send("Hello Message!", ["+2547xxxxxx"])
print(response)
# Or use it asynchronously
def on_finish(error, response):
if error is not None:
raise error
print(response)
sms.send("Hello Message!", ["+2547xxxxxx"], callback=on_finish)
```
See [example](example/) for more usage examples.
## Initialization
Initialize the SDK by calling `africastalking.initialize(username, api_key)`. After initialization, you can get instances of offered services as follows:
- [SMS](#sms): `africastalking.SMS`
- [Airtime](#airtime): `africastalking.Airtime`
- [Voice](#voice): `africastalking.Voice`
- [Token](#token): `africastalking.Token`
- [Application](#application): `africastalking.Application`
- [Mobile Data](#mobiledata): `africastalking.MobileData`
- [Insights](#insights): `africastalking.Insights`
### `Application`
- `fetch_application_data()`: Get app information. e.g balance.
### `Airtime`
- `send(recipients: [dict])`: Send airtime
- `recipients`: Contains an array of arrays containing the following keys
- `phone_number`: Recipient of airtime
- `amount`: Amount to send with currency e.g `100`
- `currency_code`: 3-digit ISO format currency code (e.g `KES`, `USD`, `UGX` etc).
- `max_num_retry`: This allows you to specify the maximum number of retries in case of failed airtime deliveries due to various reasons such as telco unavailability. The default retry period is 8 hours and retries occur every 60 seconds. For example, setting `max_num_retry=4` means the transaction will be retried every 60 seconds for the next 4 hours. `OPTIONAL`.
### `Sms`
- `send(message: str, recipients: [str], sender_id: str = None, enqueue: bool = False)`: Send a message.
- `message`: SMS content. `REQUIRED`
- `recipients`: An array of phone numbers. `REQUIRED`
- `sender_id`: Shortcode or alphanumeric ID that is registered with your Africa's Talking account.
- `enqueue`: Set to `true` if you would like to deliver as many messages to the API without waiting for an acknowledgement from telcos.
- `send_premium(message: str, short_code: str, recipients: [str], link_id: [str] = None, retry_duration_in_hours [int] = None)`: Send a premium SMS
- `message`: SMS content. `REQUIRED`
- `short_code`: Your premium product shortCode. `REQUIRED`
- `recipients`: An array of phone numbers. `REQUIRED`
- `keyword`: Your premium product keyword.
- `link_id`: We forward the `linkId` to your application when a user sends a message to your onDemand service
- `retry_duration_in_hours`: This specifies the number of hours your subscription message should be retried in case it's not delivered to the subscriber
- `fetch_messages(last_received_id: int = 0)`: Fetch your messages
- `last_received_id`: This is the id of the message you last processed. Defaults to `0`
- `create_subscription(short_code: str, keyword: str, phone_number: str)`: Create a premium subscription
- `short_code`: Premium short code mapped to your account. `REQUIRED`
- `keyword`: Premium keyword under the above short code and is also mapped to your account. `REQUIRED`
- `phone_number`: PhoneNumber to be subscribed `REQUIRED`
- `fetch_subscriptions(short_code: str, keyword: str, last_received_id: int = 0)`: Fetch your premium subscription data
- `short_code`: Premium short code mapped to your account. `REQUIRED`
- `keyword`: Premium keyword under the above short code and mapped to your account. `REQUIRED`
- `last_received_id`: ID of the subscription you believe to be your last. Defaults to `0`
- `delete_subscription(short_code: str, keyword: str, phone_number: str)`: Delete a phone number from a premium subscription
- `short_code`: Premium short code mapped to your account. `REQUIRED`
- `keyword`: Premium keyword under the above short code and is also mapped to your account. `REQUIRED`
- `phone_number`: PhoneNumber to be subscribed `REQUIRED`
### `Voice`
- `call(callFrom: str, callTo: [str])`: Initiate a phone call
- `callFrom`: Phone number on Africa's Talking (in international format). `REQUIRED`
- `callTo`: An array of phone numbers that you wish to dial (in international format). `REQUIRED`
- `fetch_queued_calls(phone_number: str)`: Get queued calls
- `phone_number`: Phone number mapped to your Africa's Talking account (in international format). `REQUIRED`
- `upload_media_file(phone_number: str, url: str)`: Upload voice media file
- `phone_number`: phone number mapped to your Africa's Talking account (in international format). `REQUIRED`
- `url`: The url of the file to upload. Should start with `http(s)://`. `REQUIRED`
### `MobileData`
- `send(product_name: str, recipients: dict)`: Send mobile data to customers.
- `product_name`: Payment product on Africa's Talking. `REQUIRED`
- `recipients`: A list of recipients. Each recipient has:
- `phoneNumber`: Customer phone number (in international format). `REQUIRED`
- `quantity`: Mobile data amount. `REQUIRED`
- `unit`: Mobile data unit. Can either be `MB` or `GB`. `REQUIRED`
- `validity`: How long the mobile data is valid for. Must be one of `Day`, `Week` and `Month`. `REQUIRED`
- `metadata`: Additional data to associate with the transaction. `OPTIONAL`
- `find_transaction(transaction_id: str)`: Find a mobile data transaction.
- `fetch_wallet_balance()`: Fetch a mobile data product balance.
### `Token`
- `generate_auth_token()`: Generate an auth token to use for authentication instead of an API key.
### `Insights`
- `check_sim_swap_state(phone_numbers: [str])`: Check the sim swap state of a given [array of ] phone number(s).
### `Ussd`
For more information, please read [https://developers.africastalking.com/docs/ussd](https://developers.africastalking.com/docs/ussd/overview)
## Development
```shell
$ git clone https://github.com/AfricasTalkingLtd/africastalking-python.git
$ cd africastalking-python
$ touch .env
```
Make sure your `.env` file has the following content then run `python -m unittest discover -v`
```ini
# AT API
AT_USERNAME=sandbox
AT_API_KEY=some_key
```
## Issues
If you find a bug, please file an issue on [our issue tracker on GitHub](https://github.com/AfricasTalkingLtd/africastalking-python/issues).
Raw data
{
"_id": null,
"home_page": "https://github.com/AfricasTalkingLtd/africastalking-python",
"name": "africastalking",
"maintainer": null,
"docs_url": null,
"requires_python": ">=2.7.10",
"maintainer_email": null,
"keywords": "ussd voice sms mpesa card bank b2b b2c sender_id payments airtime africastalking",
"author": "Africa's Talking",
"author_email": "info@africastalking.com",
"download_url": "https://files.pythonhosted.org/packages/01/a2/baf83d2308ef3bc33734dd4872ac873545f1116a4b49224ad5de3db75507/africastalking-1.2.9.tar.gz",
"platform": null,
"description": "# africastalking-python\n\n![](https://img.shields.io/pypi/v/africastalking.svg)\n\n> The SDK provides convenient access to the Africa's Talking APIs to python apps.\n\n\n## Documentation\nTake a look at the [API docs here](https://developers.africastalking.com).\n\n## Install\n\n```bash\n$ pip install africastalking # python 2.7.x\n\nOR\n\n$ python -m pip install africastalking # python 2.7.x\n\nOR\n\n$ pip3 install africastalking # python 3.6.x\n\nOR\n\n$ python3 -m pip install africastalking # python 3.6.x\n\n```\n\n## Usage\n\nThe package needs to be configured with your app username and API key, which you can get from the [dashboard](https://account.africastalking.com/).\n\n> You can use this SDK for either production or sandbox apps. For sandbox, the app username is **ALWAYS** `sandbox`\n\n```python\n# import package\nimport africastalking\n\n\n# Initialize SDK\nusername = \"YOUR_USERNAME\" # use 'sandbox' for development in the test environment\napi_key = \"YOUR_API_KEY\" # use your sandbox app API key for development in the test environment\nafricastalking.initialize(username, api_key)\n\n\n# Initialize a service e.g. SMS\nsms = africastalking.SMS\n\n\n# Use the service synchronously\nresponse = sms.send(\"Hello Message!\", [\"+2547xxxxxx\"])\nprint(response)\n\n# Or use it asynchronously\ndef on_finish(error, response):\n if error is not None:\n raise error\n print(response)\n\nsms.send(\"Hello Message!\", [\"+2547xxxxxx\"], callback=on_finish) \n\n```\n\nSee [example](example/) for more usage examples.\n\n\n## Initialization\n\nInitialize the SDK by calling `africastalking.initialize(username, api_key)`. After initialization, you can get instances of offered services as follows:\n\n- [SMS](#sms): `africastalking.SMS`\n- [Airtime](#airtime): `africastalking.Airtime`\n- [Voice](#voice): `africastalking.Voice`\n- [Token](#token): `africastalking.Token`\n- [Application](#application): `africastalking.Application`\n- [Mobile Data](#mobiledata): `africastalking.MobileData`\n- [Insights](#insights): `africastalking.Insights`\n\n### `Application`\n\n- `fetch_application_data()`: Get app information. e.g balance.\n\n### `Airtime`\n\n- `send(recipients: [dict])`: Send airtime\n\n - `recipients`: Contains an array of arrays containing the following keys\n \n - `phone_number`: Recipient of airtime\n - `amount`: Amount to send with currency e.g `100`\n - `currency_code`: 3-digit ISO format currency code (e.g `KES`, `USD`, `UGX` etc).\n\n- `max_num_retry`: This allows you to specify the maximum number of retries in case of failed airtime deliveries due to various reasons such as telco unavailability. The default retry period is 8 hours and retries occur every 60 seconds. For example, setting `max_num_retry=4` means the transaction will be retried every 60 seconds for the next 4 hours. `OPTIONAL`.\n\n### `Sms`\n\n- `send(message: str, recipients: [str], sender_id: str = None, enqueue: bool = False)`: Send a message.\n\n - `message`: SMS content. `REQUIRED`\n - `recipients`: An array of phone numbers. `REQUIRED`\n - `sender_id`: Shortcode or alphanumeric ID that is registered with your Africa's Talking account.\n - `enqueue`: Set to `true` if you would like to deliver as many messages to the API without waiting for an acknowledgement from telcos.\n\n- `send_premium(message: str, short_code: str, recipients: [str], link_id: [str] = None, retry_duration_in_hours [int] = None)`: Send a premium SMS\n\n - `message`: SMS content. `REQUIRED`\n - `short_code`: Your premium product shortCode. `REQUIRED`\n - `recipients`: An array of phone numbers. `REQUIRED`\n - `keyword`: Your premium product keyword.\n - `link_id`: We forward the `linkId` to your application when a user sends a message to your onDemand service\n - `retry_duration_in_hours`: This specifies the number of hours your subscription message should be retried in case it's not delivered to the subscriber\n\n- `fetch_messages(last_received_id: int = 0)`: Fetch your messages\n\n - `last_received_id`: This is the id of the message you last processed. Defaults to `0`\n \n- `create_subscription(short_code: str, keyword: str, phone_number: str)`: Create a premium subscription\n\n - `short_code`: Premium short code mapped to your account. `REQUIRED`\n - `keyword`: Premium keyword under the above short code and is also mapped to your account. `REQUIRED`\n - `phone_number`: PhoneNumber to be subscribed `REQUIRED`\n\n- `fetch_subscriptions(short_code: str, keyword: str, last_received_id: int = 0)`: Fetch your premium subscription data\n\n - `short_code`: Premium short code mapped to your account. `REQUIRED`\n - `keyword`: Premium keyword under the above short code and mapped to your account. `REQUIRED`\n - `last_received_id`: ID of the subscription you believe to be your last. Defaults to `0`\n\n- `delete_subscription(short_code: str, keyword: str, phone_number: str)`: Delete a phone number from a premium subscription\n\n - `short_code`: Premium short code mapped to your account. `REQUIRED`\n - `keyword`: Premium keyword under the above short code and is also mapped to your account. `REQUIRED`\n - `phone_number`: PhoneNumber to be subscribed `REQUIRED`\n\n\n### `Voice`\n\n- `call(callFrom: str, callTo: [str])`: Initiate a phone call\n\n\t- `callFrom`: Phone number on Africa's Talking (in international format). `REQUIRED`\n - `callTo`: An array of phone numbers that you wish to dial (in international format). `REQUIRED` \n\n- `fetch_queued_calls(phone_number: str)`: Get queued calls\n\n - `phone_number`: Phone number mapped to your Africa's Talking account (in international format). `REQUIRED`\n\n- `upload_media_file(phone_number: str, url: str)`: Upload voice media file\n\n - `phone_number`: phone number mapped to your Africa's Talking account (in international format). `REQUIRED`\n - `url`: The url of the file to upload. Should start with `http(s)://`. `REQUIRED`\n\n### `MobileData`\n\n- `send(product_name: str, recipients: dict)`: Send mobile data to customers.\n\n - `product_name`: Payment product on Africa's Talking. `REQUIRED`\n - `recipients`: A list of recipients. Each recipient has:\n - `phoneNumber`: Customer phone number (in international format). `REQUIRED`\n - `quantity`: Mobile data amount. `REQUIRED`\n - `unit`: Mobile data unit. Can either be `MB` or `GB`. `REQUIRED`\n - `validity`: How long the mobile data is valid for. Must be one of `Day`, `Week` and `Month`. `REQUIRED`\n - `metadata`: Additional data to associate with the transaction. `OPTIONAL`\n\n- `find_transaction(transaction_id: str)`: Find a mobile data transaction.\n\n- `fetch_wallet_balance()`: Fetch a mobile data product balance.\n\n### `Token`\n\n- `generate_auth_token()`: Generate an auth token to use for authentication instead of an API key.\n\n### `Insights`\n\n- `check_sim_swap_state(phone_numbers: [str])`: Check the sim swap state of a given [array of ] phone number(s).\n\n### `Ussd`\n\nFor more information, please read [https://developers.africastalking.com/docs/ussd](https://developers.africastalking.com/docs/ussd/overview)\n\n\n## Development\n```shell\n$ git clone https://github.com/AfricasTalkingLtd/africastalking-python.git\n$ cd africastalking-python\n$ touch .env\n```\n\nMake sure your `.env` file has the following content then run `python -m unittest discover -v`\n\n```ini\n# AT API\nAT_USERNAME=sandbox\nAT_API_KEY=some_key\n```\n\n## Issues\n\nIf you find a bug, please file an issue on [our issue tracker on GitHub](https://github.com/AfricasTalkingLtd/africastalking-python/issues).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Official Africa's Talking Python SDK",
"version": "1.2.9",
"project_urls": {
"Download": "https://codeload.github.com/AfricasTalkingLtd/africastalking-python/tar.gz/1.2.9",
"Homepage": "https://github.com/AfricasTalkingLtd/africastalking-python"
},
"split_keywords": [
"ussd",
"voice",
"sms",
"mpesa",
"card",
"bank",
"b2b",
"b2c",
"sender_id",
"payments",
"airtime",
"africastalking"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cd32528bdf3af4d6e3486b2686133ee0c7171fbe88f74f0d645e92e8a41d5895",
"md5": "82505237429fef1cff988652b35f4331",
"sha256": "228f30b95de3a8e9b0c09376e8444ef491660e103386cb58f594462c0c187650"
},
"downloads": -1,
"filename": "africastalking-1.2.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "82505237429fef1cff988652b35f4331",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=2.7.10",
"size": 14775,
"upload_time": "2024-10-04T08:50:19",
"upload_time_iso_8601": "2024-10-04T08:50:19.704453Z",
"url": "https://files.pythonhosted.org/packages/cd/32/528bdf3af4d6e3486b2686133ee0c7171fbe88f74f0d645e92e8a41d5895/africastalking-1.2.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "01a2baf83d2308ef3bc33734dd4872ac873545f1116a4b49224ad5de3db75507",
"md5": "0a85a3ea7172f5767d14881c9e0ee256",
"sha256": "de046bb737a3b93b98508a6326be3e1e33d6ea1343e005a6369128bc15513af4"
},
"downloads": -1,
"filename": "africastalking-1.2.9.tar.gz",
"has_sig": false,
"md5_digest": "0a85a3ea7172f5767d14881c9e0ee256",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7.10",
"size": 13790,
"upload_time": "2024-10-04T08:50:21",
"upload_time_iso_8601": "2024-10-04T08:50:21.741018Z",
"url": "https://files.pythonhosted.org/packages/01/a2/baf83d2308ef3bc33734dd4872ac873545f1116a4b49224ad5de3db75507/africastalking-1.2.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-04 08:50:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "AfricasTalkingLtd",
"github_project": "africastalking-python",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "africastalking"
}