redfs


Nameredfs JSON
Version 0.0.4rc0 PyPI version JSON
download
home_pagehttps://github.com/hnimminh/redfs
SummaryPure Python3 with Gevent implement the FreeSWITCH Event Socket Protocol Client
upload_time2023-08-11 21:03:49
maintainer
docs_urlNone
authorMinh Minh
requires_python
licenseMIT
keywords
VCS
bugtrack_url
requirements gevent
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
  <img width="128" src="https://user-images.githubusercontent.com/58973699/125749787-cc7844b2-aea4-4c98-8efd-c413f6aec317.png">  
</p>

<p align="center">
  <a href="LICENSE.md" target="_blank">
    <img src="https://badgen.net/badge/license/MIT/blue" alt="">
  </a>
  <a href="https://github.com/hnimminh/redfs/releases" target="_blank">
    <img src="https://badgen.net/github/tag/hnimminh/redfs" alt="">
  </a>
  <a href="https://pypi.org/project/redfs" target="_blank">
    <img src="https://img.shields.io/pypi/pyversions/redfs" alt="">
  </a>
  <a href="https://pypi.org/project/redfs" target="_blank">
    <img src="https://img.shields.io/badge/download- xyz- red" alt="">
  </a>
</p>

<p align="center">
  <br>
  <strong>RedFS - FreeSWITCH Event Socket </strong>
  <br>
  <code>FreeSWITCH Event Socket Protocol Client Library by Python3:Gevent</code>
  <br><br>
</p>


## Why RedFS ?
It's origin fork from [greenswitch](https://github.com/EvoluxBR/greenswitch), with additional implementation:
* Minimalize dependency (gevent only)
* Large scale adaptation
* Bug fix
* Python3 syntax improvement

## Usage

**Installation**
```bash
pip3 install redfs
```

**FreeSWITCH configuration**

*event socket module*
```html
<configuration name="event_socket.conf" description="Socket Client">
  <settings>
    <param name="nat-map" value="false"/>
    <param name="listen-ip" value="127.0.0.1"/>
    <param name="listen-port" value="8021"/>
    <param name="password" value="your-esl-password"/>
  </settings>
</configuration>
```

*dialplan*
```html
<include>
  <context name="default">
    <extension name="daemon-ex">
      <condition regex="all">
        <regex field="destination_number" expression="."/>
        <action application="sched_hangup" data="+60 ALLOTTED_TIMEOUT"/>
        <action application="park"/>
        <anti-action application="hangup" data="REQUESTED_CHAN_UNAVAIL"/>
     </condition>
    </extension>
  </context>
</include>
```

a simple python application for auto answer.

```python
import gevent
import redfs
import traceback


ESL_HOST = '127.0.0.1'
ESL_PORT = 8021
ESL_PASSWORD = 'your-esl-password'
ESL_TIMEOUT = 10

def realtime(event):
    event_name = event.headers.get('Event-Name')
    uuid = event.headers.get('Unique-ID')
    print(f'Event {event_name} with uuid {uuid}')

    conn = redfs.InboundESL(host=ESL_HOST, port=ESL_PORT, password=ESL_PASSWORD, timeout=ESL_TIMEOUT)
    conn.connect()

    if event_name == 'CHANNEL_PARK':
        cmd = f'api uuid_answer {uuid}'
        res = conn.send(cmd)
        print(cmd, res.data)

def printlog(event):
    event_name = event.headers.get('Event-Name')
    uuid = event.headers.get('Unique-ID')
    print(f'Event {event_name} with uuid {uuid}')

cnx = redfs.InboundESL(host=ESL_HOST, port=ESL_PORT, password=ESL_PASSWORD, timeout=ESL_TIMEOUT)
cnx.connect()

cnx.register_handle(['CHANNEL_PARK', 'CHANNEL_ANSWER'], realtime)
cnx.register_handle('*', printlog)
cnx.send('EVENTS PLAIN ALL')
print('connected')
while True:
    try:
        gevent.sleep(1)
    except KeyboardInterrupt:
        cnx.stop()
        break
    except Exception as e:
        print(e, traceback.format_exc())
```

Enjoy!

## License
[MIT](./LICENSE)


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/hnimminh/redfs",
    "name": "redfs",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Minh Minh",
    "author_email": "hnimminh@outlook.com",
    "download_url": "https://files.pythonhosted.org/packages/0a/a5/f33c3bee74ca00750c573553696d946d10571c19a144578ffc700bf92106/redfs-0.0.4rc0.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n  <img width=\"128\" src=\"https://user-images.githubusercontent.com/58973699/125749787-cc7844b2-aea4-4c98-8efd-c413f6aec317.png\">  \n</p>\n\n<p align=\"center\">\n  <a href=\"LICENSE.md\" target=\"_blank\">\n    <img src=\"https://badgen.net/badge/license/MIT/blue\" alt=\"\">\n  </a>\n  <a href=\"https://github.com/hnimminh/redfs/releases\" target=\"_blank\">\n    <img src=\"https://badgen.net/github/tag/hnimminh/redfs\" alt=\"\">\n  </a>\n  <a href=\"https://pypi.org/project/redfs\" target=\"_blank\">\n    <img src=\"https://img.shields.io/pypi/pyversions/redfs\" alt=\"\">\n  </a>\n  <a href=\"https://pypi.org/project/redfs\" target=\"_blank\">\n    <img src=\"https://img.shields.io/badge/download- xyz- red\" alt=\"\">\n  </a>\n</p>\n\n<p align=\"center\">\n  <br>\n  <strong>RedFS - FreeSWITCH Event Socket </strong>\n  <br>\n  <code>FreeSWITCH Event Socket Protocol Client Library by Python3:Gevent</code>\n  <br><br>\n</p>\n\n\n## Why RedFS ?\nIt's origin fork from [greenswitch](https://github.com/EvoluxBR/greenswitch), with additional implementation:\n* Minimalize dependency (gevent only)\n* Large scale adaptation\n* Bug fix\n* Python3 syntax improvement\n\n## Usage\n\n**Installation**\n```bash\npip3 install redfs\n```\n\n**FreeSWITCH configuration**\n\n*event socket module*\n```html\n<configuration name=\"event_socket.conf\" description=\"Socket Client\">\n  <settings>\n    <param name=\"nat-map\" value=\"false\"/>\n    <param name=\"listen-ip\" value=\"127.0.0.1\"/>\n    <param name=\"listen-port\" value=\"8021\"/>\n    <param name=\"password\" value=\"your-esl-password\"/>\n  </settings>\n</configuration>\n```\n\n*dialplan*\n```html\n<include>\n  <context name=\"default\">\n    <extension name=\"daemon-ex\">\n      <condition regex=\"all\">\n        <regex field=\"destination_number\" expression=\".\"/>\n        <action application=\"sched_hangup\" data=\"+60 ALLOTTED_TIMEOUT\"/>\n        <action application=\"park\"/>\n        <anti-action application=\"hangup\" data=\"REQUESTED_CHAN_UNAVAIL\"/>\n     </condition>\n    </extension>\n  </context>\n</include>\n```\n\na simple python application for auto answer.\n\n```python\nimport gevent\nimport redfs\nimport traceback\n\n\nESL_HOST = '127.0.0.1'\nESL_PORT = 8021\nESL_PASSWORD = 'your-esl-password'\nESL_TIMEOUT = 10\n\ndef realtime(event):\n    event_name = event.headers.get('Event-Name')\n    uuid = event.headers.get('Unique-ID')\n    print(f'Event {event_name} with uuid {uuid}')\n\n    conn = redfs.InboundESL(host=ESL_HOST, port=ESL_PORT, password=ESL_PASSWORD, timeout=ESL_TIMEOUT)\n    conn.connect()\n\n    if event_name == 'CHANNEL_PARK':\n        cmd = f'api uuid_answer {uuid}'\n        res = conn.send(cmd)\n        print(cmd, res.data)\n\ndef printlog(event):\n    event_name = event.headers.get('Event-Name')\n    uuid = event.headers.get('Unique-ID')\n    print(f'Event {event_name} with uuid {uuid}')\n\ncnx = redfs.InboundESL(host=ESL_HOST, port=ESL_PORT, password=ESL_PASSWORD, timeout=ESL_TIMEOUT)\ncnx.connect()\n\ncnx.register_handle(['CHANNEL_PARK', 'CHANNEL_ANSWER'], realtime)\ncnx.register_handle('*', printlog)\ncnx.send('EVENTS PLAIN ALL')\nprint('connected')\nwhile True:\n    try:\n        gevent.sleep(1)\n    except KeyboardInterrupt:\n        cnx.stop()\n        break\n    except Exception as e:\n        print(e, traceback.format_exc())\n```\n\nEnjoy!\n\n## License\n[MIT](./LICENSE)\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Pure Python3 with Gevent implement the FreeSWITCH Event Socket Protocol Client",
    "version": "0.0.4rc0",
    "project_urls": {
        "Homepage": "https://github.com/hnimminh/redfs"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c57c3eaab9a2bff2cd0cc5aad5d6b29dfa09874bcf1a1f1979255b4a2390d795",
                "md5": "884dbaa5b7412824acf450a4b65fd835",
                "sha256": "669ab77da59d40a82a7ff45b8415380a261e689cfe5ee156026ea7816ce9471d"
            },
            "downloads": -1,
            "filename": "redfs-0.0.4rc0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "884dbaa5b7412824acf450a4b65fd835",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 6339,
            "upload_time": "2023-08-11T21:03:48",
            "upload_time_iso_8601": "2023-08-11T21:03:48.222587Z",
            "url": "https://files.pythonhosted.org/packages/c5/7c/3eaab9a2bff2cd0cc5aad5d6b29dfa09874bcf1a1f1979255b4a2390d795/redfs-0.0.4rc0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0aa5f33c3bee74ca00750c573553696d946d10571c19a144578ffc700bf92106",
                "md5": "be1a642be06859cba01a10903ba1a327",
                "sha256": "0a350661e413b43fc3e3c60cfad30b300bd77e569952393f66d1aa37a0f9a336"
            },
            "downloads": -1,
            "filename": "redfs-0.0.4rc0.tar.gz",
            "has_sig": false,
            "md5_digest": "be1a642be06859cba01a10903ba1a327",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 6187,
            "upload_time": "2023-08-11T21:03:49",
            "upload_time_iso_8601": "2023-08-11T21:03:49.802078Z",
            "url": "https://files.pythonhosted.org/packages/0a/a5/f33c3bee74ca00750c573553696d946d10571c19a144578ffc700bf92106/redfs-0.0.4rc0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-08-11 21:03:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hnimminh",
    "github_project": "redfs",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "gevent",
            "specs": []
        }
    ],
    "lcname": "redfs"
}
        
Elapsed time: 0.33858s