由asyncio驱动的FreeSWITCH集群控制
项目描述
asyncio 驱动的 FreeSWITCH 集群控制,使用纯 Python 3.5+
switchio(发音为 Switch Ee OoH)是switchy(想想 Bulbasaur -> Ivysaur)的下一演变,它利用了现代Python的新原生协程语法,目前使用asyncio。
在API方面,该项目旨在成为VoIP的flask,但更注重性能和可伸缩性,类似于sanic。
使用async和await的力量!
使用Python的新协程语法构建路由系统
from switchio.apps.routers import Router
router = Router(guards={
'Call-Direction': 'inbound',
'variable_sofia_profile': 'external'})
@router.route('(.*)')
async def welcome(sess, match, router):
"""Say hello to inbound calls.
"""
await sess.answer() # resumes once call has been fully answered
sess.log.info("Answered call to {}".format(match.groups(0)))
sess.playback('ivr/ivr-welcome_to_freeswitch.wav') # non-blocking
sess.log.info("Playing welcome message")
await sess.recv("PLAYBACK_STOP")
await sess.hangup() # resumes once call has been fully hungup
从shell运行此应用程序(假设它位于dialplan.py)
$ switchio serve fs-host1 fs-host2 fs-host3 --app ./dialplan.py:router
启动自动拨号器
使用内置的自动拨号器运行数千个呼叫流程以对您的服务系统进行压力测试
$ switchio dial fs-tester1 fs-tester2 --profile external --proxy myproxy.com --rate 100 --limit 3000
安装
pip install switchio
文档
我们有的文档!
我如何部署我的FreeSWITCH集群?
请参阅文档了解详细信息!
包含什么?
我如何贡献?
有没有为通用switchio应用或助手的想法?在GitHub上创建一个PR吧!
此外,如果您喜欢switchio,请在Riot上告诉我们!
等等,switchio与其他ESL客户端有何不同?
switchio通过支持FreeSWITCH的进程集群控制以及专注于利用最现代的Python语言特性来区别自己。switchio自豪地是一个batteries included框架,旨在使FreeSWITCH的所有复杂功能变得简单。
如果我卡在Python 2怎么办?
查看这些其他优秀的项目
性能监控
如果您想使用CDR应用记录性能测量,可以使用一些可选的数值包
特性 |
依赖项 |
安装 |
---|---|---|
指标捕获 |
pip install switchio[metrics] |
|
绘图 |
pip install switchio[graphing] |
|
HDF5 |
pip install switchio[hdf5] |
许可证
本项目所有文件均受以下许可协议保护,除非明确说明。
此源代码形式受Mozilla公共许可证第2.0版条款的约束。如果未与此文件一起分发MPL副本,您可以从中获得一份:http://mozilla.org/MPL/2.0/。
项目详情
switchio-0.1.0a1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 203c9ef1471e50ce7723149ca04c4e912de6c3c5e3bec48ff380ce17ae4dbcc3 |
|
MD5 | 3b3faa422dd09e9860a1a1c1ae970050 |
|
BLAKE2b-256 | b817bf60e39fcb972f6990695aa33f96d9637c04363564bf10219cb149fcfed9 |