<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"
}