{ "info": { "author": "\u00c9ttore Leandro Tognoli", "author_email": "ettore.leandro.tognoli@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "=================\nPython AMI Client\n=================\n\n.. image:: https://travis-ci.org/ettoreleandrotognoli/python-ami.svg?branch=master\n :target: https://travis-ci.org/ettoreleandrotognoli/python-ami\n\n.. image:: https://codecov.io/gh/ettoreleandrotognoli/python-ami/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/ettoreleandrotognoli/python-ami\n\n.. image:: https://badge.fury.io/py/asterisk-ami.svg\n :target: https://badge.fury.io/py/asterisk-ami\n\n.. image:: https://img.shields.io/pypi/dm/asterisk-ami.svg\n :target: https://pypi.python.org/pypi/asterisk-ami#downloads\n\nA simple Python AMI client\nhttp://programandonoaquario.blogspot.com.br\n\nInstall\n-------\n\nInstall asterisk-ami\n\n.. code-block:: shell\n\n pip install asterisk-ami\n\nInstall latest asterisk-ami\n\n.. code-block:: shell\n\n pip install git+https://github.com/ettoreleandrotognoli/python-ami\n\nUsage\n-----\n\nConnect\n~~~~~~~\n\n.. code-block:: python\n\n from asterisk.ami import AMIClient\n \n client = AMIClient(address='127.0.0.1',port=5038)\n client.login(username='username',secret='password')\n \nDisconnect\n~~~~~~~~~~\n\n.. code-block:: python\n\n client.logoff()\n\n\nSend an action\n~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from asterisk.ami import SimpleAction\n \n action = SimpleAction(\n 'Originate',\n Channel='SIP/2010',\n Exten='2010',\n Priority=1,\n Context='default',\n CallerID='python',\n )\n client.send_action(action)\n\n\nSend an action with adapter\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n from asterisk.ami import AMIClientAdapter\n \n adapter = AMIClientAdapter(client)\n adapter.Originate(\n Channel='SIP/2010',\n Exten='2010',\n Priority=1,\n Context='default',\n CallerID='python',\n )\n \nSynchronous Response\n~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n #without adapter\n future = client.send_action(action)\n response = future.response\n \n #with adapter\n future = adapter.Originate(...)\n response = future.response\n \n\nAsynchronous Response\n~~~~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n def callback_response(response):\n print(response)\n\n #without adapter\n future = client.send_action(action,callback=callback_response)\n \n #with adapter\n future = adapter.Originate(...,_callback=callback_response)\n \n #you can use the future to wait the callback execute\n reponse = future.response\n\nListen Events\n~~~~~~~~~~~~~\n\n.. code-block:: python\n\n def event_listener(event,**kwargs):\n print(event)\n\n client.add_event_listener(event_listener)\n \n\nFilter Events\n~~~~~~~~~~~~~\n\nWith a custom class\n\n.. code-block:: python\n\n from asterisk.ami import EventListener\n\n class RegistryEventListener(EventListener):\n \n def on_Registry(event,**kwargs):\n print('Registry Event',event)\n \n client.add_event_listener(RegistryEventListener())\n \n class AllEventListener(EventListener):\n \n def on_event(event,**kwargs):\n print('Event',event)\n \n client.add_event_listener(AllEventListener())\n\nWith black or white list\n\n.. code-block:: python\n\n def event_listener(event,**kwargs):\n print(event)\n \n client.add_event_listener(\n event_listener, white_list=['Registry','PeerStatus']\n )\n \n client.add_event_listener(\n event_listener, black_list=['VarSet']\n )\n \nLike a custom class\n\n.. code-block:: python\n\n def event_listener(event,**kwargs):\n print(event)\n \n client.add_event_listener(\n on_VarSet=event_listener,\n on_ExtensionStatus=event_listener\n )\n \n client.add_event_listener(\n on_event=event_listener\n )\n \n\nFilter Event Value\n~~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n def event_listener(event,**kwargs):\n print('Ringing',event)\n \n \n client.add_event_listener(\n event_listener,\n white_list='Newstate',\n ChannelStateDesc='Ringing',\n ConnectedLineNum='2004',\n )\n \nFilter with regex\n~~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n import re\n \n def event_listener(event,**kwargs):\n print(event)\n \n client.add_event_listener(\n on_Newstate=event_listener,\n white_list=re.compile('.*'),\n ChannelStateDesc=re.compile('^Ring.*'),\n )", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/ettoreleandrotognoli/python-ami/tree/0.1.5/", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ettoreleandrotognoli/python-ami/", "keywords": "asterisk,ami", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "asterisk-ami", "package_url": "https://pypi.org/project/asterisk-ami/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/asterisk-ami/", "project_urls": { "Download": "https://github.com/ettoreleandrotognoli/python-ami/tree/0.1.5/", "Homepage": "https://github.com/ettoreleandrotognoli/python-ami/" }, "release_url": "https://pypi.org/project/asterisk-ami/0.1.5/", "requires_dist": null, "requires_python": null, "summary": "Python AMI Client", "version": "0.1.5" }, "last_serial": 2831830, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "1049c9997b0dc1c602ba1cedc6cbbc19", "sha256": "484a493856c5c5437fdad762a7f53a39b8cc6d019aa967e7b1cdbb9e605cdfd8" }, "downloads": -1, "filename": "asterisk-ami-0.0.2.tar.gz", "has_sig": false, "md5_digest": "1049c9997b0dc1c602ba1cedc6cbbc19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3205, "upload_time": "2015-10-06T19:01:11", "url": "https://files.pythonhosted.org/packages/90/ea/5c704ea7fa4f20e0b2aaa2cc93dcc1f27f56eddd82d65cbe58710c9c0d38/asterisk-ami-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "53061dd0a034a92719441b9091ee1c67", "sha256": "a33d24c33bdc2c0727d5e9899f2a8b7a742be555ef1721213b51738dab25b716" }, "downloads": -1, "filename": "asterisk-ami-0.0.3.tar.gz", "has_sig": false, "md5_digest": "53061dd0a034a92719441b9091ee1c67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3503, "upload_time": "2016-07-20T17:30:27", "url": "https://files.pythonhosted.org/packages/96/b0/1fa323fdd879848fb89d1076fbcb42f94cfbe9401298dcdd5e20b3d04ac1/asterisk-ami-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "27b70c569d773a9c88591d9a85c4b34c", "sha256": "de0b2a290e354dc9e2922d7071674dcfff41a1f6695ca95a1189b2412e9431bd" }, "downloads": -1, "filename": "asterisk-ami-0.0.4.tar.gz", "has_sig": false, "md5_digest": "27b70c569d773a9c88591d9a85c4b34c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3999, "upload_time": "2016-10-27T23:32:43", "url": "https://files.pythonhosted.org/packages/20/aa/7541a80c4f761cdc134c4f05ed1e8a620db298741b1323b622f7377f7329/asterisk-ami-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "71e6f51930ccc77f56fd1334f4d778d6", "sha256": "a9c8fd4ed787d1583d63883203ddabee0c317ea1a3963fe3c7d2b4c3cc7c9625" }, "downloads": -1, "filename": "asterisk-ami-0.0.5.tar.gz", "has_sig": false, "md5_digest": "71e6f51930ccc77f56fd1334f4d778d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6702, "upload_time": "2016-10-28T14:46:33", "url": "https://files.pythonhosted.org/packages/af/32/969f6e73abd8e6ed465f8b355d5e99a7cb47f0b428a83f663508db2dd29c/asterisk-ami-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "877aae9815a11a15abcbe4b1156e9fe1", "sha256": "bbadd025953ca40a5a776b5a0019f7cdda7d4490979b1ca1595e100777d00c69" }, "downloads": -1, "filename": "asterisk-ami-0.0.6.tar.gz", "has_sig": false, "md5_digest": "877aae9815a11a15abcbe4b1156e9fe1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7144, "upload_time": "2016-11-03T11:52:42", "url": "https://files.pythonhosted.org/packages/04/a3/cb59d4ce2cd6e4ada3112a50a399a6eaad544e80ae74be03b14e3956e873/asterisk-ami-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "13f4b03d0cf5ac93d8fd91204681f61c", "sha256": "1206b01682689f72797e8890294359804281531bd4883feeadba8bb7631f1427" }, "downloads": -1, "filename": "asterisk-ami-0.0.7.tar.gz", "has_sig": false, "md5_digest": "13f4b03d0cf5ac93d8fd91204681f61c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7126, "upload_time": "2016-11-04T11:12:39", "url": "https://files.pythonhosted.org/packages/10/2a/a321f2aaa06e593ea35be08b886ac066a5208d72cb7f2e2d8e6d0f1bdc5b/asterisk-ami-0.0.7.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "a8e5fc761ba3209bb9617bf10e18449c", "sha256": "75c527427978462652e71af4b58d2a1f23ad1267f877afbf99283ada0f450c7b" }, "downloads": -1, "filename": "asterisk-ami-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a8e5fc761ba3209bb9617bf10e18449c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8516, "upload_time": "2016-11-21T13:19:02", "url": "https://files.pythonhosted.org/packages/39/c3/019fb96080ff16b8942e4eb7ab048a3a3aa76fa3f0b2f74f418b3163ed77/asterisk-ami-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b18b036b9c9f787ab2c593424f07440e", "sha256": "14c67bf1e323fc5cdc8e0fcb6231e9873cb382dc708572b5cc874974647bca4f" }, "downloads": -1, "filename": "asterisk-ami-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b18b036b9c9f787ab2c593424f07440e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9116, "upload_time": "2017-01-16T00:13:40", "url": "https://files.pythonhosted.org/packages/14/f1/50b44b0e53df86d41f366cfeffea1657c983d9daf6713c64ed2dad7e2861/asterisk-ami-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "63b7c763f71b0e853c8e38066f14133c", "sha256": "414b8549e2b5c5287108ea655227548db362467939f02f814a116bdb69dc7720" }, "downloads": -1, "filename": "asterisk-ami-0.1.2.tar.gz", "has_sig": false, "md5_digest": "63b7c763f71b0e853c8e38066f14133c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11042, "upload_time": "2017-04-24T15:21:05", "url": "https://files.pythonhosted.org/packages/21/2a/6719da22e44f921eb3603e3add0503a4d82b54c4efc227cf2e1cf76ed05a/asterisk-ami-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "326e5b3ce486cdc8681d57466f965e3f", "sha256": "ba45a57c72a2387aa65557f59e63d211d69b100b5340311db3244b601b15c54b" }, "downloads": -1, "filename": "asterisk-ami-0.1.4.tar.gz", "has_sig": false, "md5_digest": "326e5b3ce486cdc8681d57466f965e3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14269, "upload_time": "2017-04-25T21:37:17", "url": "https://files.pythonhosted.org/packages/2c/0b/1aee9d0b85d135354204ba648d3afeda7f8d6e6967cc6d7a9ef2578906c9/asterisk-ami-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "1ed9825bcac0340e387afee00e5d2374", "sha256": "678f7af808a68e2bffa75ae77e62c02ef1aa5218bddb4bb35e14d8e2d122b39f" }, "downloads": -1, "filename": "asterisk-ami-0.1.5.tar.gz", "has_sig": false, "md5_digest": "1ed9825bcac0340e387afee00e5d2374", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15270, "upload_time": "2017-04-26T14:28:39", "url": "https://files.pythonhosted.org/packages/a0/98/3029a4f4072e583734ed75dedad8e53a5baec7a2216e7ceb51d959397cd8/asterisk-ami-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1ed9825bcac0340e387afee00e5d2374", "sha256": "678f7af808a68e2bffa75ae77e62c02ef1aa5218bddb4bb35e14d8e2d122b39f" }, "downloads": -1, "filename": "asterisk-ami-0.1.5.tar.gz", "has_sig": false, "md5_digest": "1ed9825bcac0340e387afee00e5d2374", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15270, "upload_time": "2017-04-26T14:28:39", "url": "https://files.pythonhosted.org/packages/a0/98/3029a4f4072e583734ed75dedad8e53a5baec7a2216e7ceb51d959397cd8/asterisk-ami-0.1.5.tar.gz" } ] }