访问星号rest接口的库

ari的Python项目详细描述


关于

此包包含用于星号rest的python客户端库 接口。它建立在 Swagger.py库,提供 与swagger.py生成的api相比,改进了特定于星号的api

用法

使用setup.py脚本从源代码安装。

$ sudo ./setup.py install

api

ari客户机可以简单地通过ari.connect方法创建。这个遗嘱 基于从asterisk下载的swagger api创建客户机。

api被建模为存储库模式,如您在域中所见 驱动设计。每个swagger资源(也称为api声明)都映射到 repository对象,作为客户机上的字段提供 (client.channelsclient.bridges)。

来自星号的响应映射到一级对象,类似于域 存储库模式中的对象。这些都在回复中提供 restful api调用,以及通过websocket接收的事件中的字段。

拨打rest电话

每个repository对象提供调用非实例特定的 关联的swagger资源(bridges.list()的操作, channels.get())。还提供了特定于实例的方法,这些方法要求 要传递的标识参数(channels.get(channelId=id))。

在域对象上还提供了特定于实例的方法 (some_channel.hangup())。

注册事件回调

星号可以通过WebSocket发送异步消息来指示 对申请感兴趣。

Client对象有一个on_event方法,可以用来 从星号订阅特定事件。

一类对象还具有“on-event”方法,可以订阅 与那个物体有关的停滞事件。

对象生存期

存储库对象存在于拥有它们的客户端的生存期中。

域对象是短暂的,与底层的生存期无关。 星号中的对象。实际上,这意味着如果你打电话 channels.get('1234')多次,您可能会得到一个不同的对象 每一次。

您可以保留域对象的实例,但应该考虑 陈腐。对象中包含的数据可能已过期,但 对象上的方法仍应正常工作。

如果在过时的域对象上调用方法,该对象不再存在 星号,您将得到一个httperror异常(404未找到)。

注意事项

存储库和域对象公开的动态方法实际上是, 远程过程调用。当前的实现是同步的,这意味着 如果响应速度慢(网络速度慢,数据包丢失, 系统负载等),则整个应用程序可能会受到影响。

示例

importariclient=ari.connect('http://localhost:8088/','hey','peekaboo')defon_dtmf(channel,event):digit=event['digit']ifdigit=='#':channel.play(media='sound:goodbye')channel.continueInDialplan()elifdigit=='*':channel.play(media='sound:asterisk-friend')else:channel.play(media='sound:digits/%s'%digit)defon_start(channel,event):channel.on_event('ChannelDtmfReceived',on_dtmf)channel.answer()channel.play(media='sound:hello-world')client.on_channel_event('StasisStart',on_start)client.run(apps="hello")

开发

代码使用Sphinx进行记录,其中 允许IntelliJ IDEA 以便更好地推断自动完成的类型。

为了保持隔离,我还建议安装(和使用) virtualenv

$ sudo pip install virtualenv
$ mkdir -p ~/virtualenv
$ virtualenv ~/virtualenv/ari
$ . ~/virtualenv/ari/bin/activate

Setuptools用于 建筑。^使用{a6} 对于单元测试,将coverage插件安装到 生成代码覆盖率报告。通过--with-coverage生成 代码覆盖率报告。报告的html版本被放入 cover/index.html

$ ./setup.py develop   # prep for development (install deps, launchers, etc.)
$ ./setup.py nosetests # run unit tests
$ ./setup.py bdist_egg # build distributable

待办事项

  • Create asynchronous bindings that can be used with Twisted, Tornado, etc.

许可证

版权所有(c)2013,Digium,Inc.保留所有权利。

swagger.py使用BSD 3-Clause License授权。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java三角测距   java Spring异步任务返回未来   java如何显示数据库中的下一条记录   java这些读取用户输入的方法有什么不同?   java Spring+Spring安全请求只接受contenttype xwwwformurlencoded   checkName()和将用户输入存储到ArrayList和boolean[]的java问题   java如何使用JPA和Facade?   java Neo4j类型不匹配   java如何依赖Maven的系统包?   通过FileChooser保存pdf格式会提示在java中出现第二个对话框   java如何将通量链接到另一个通量/单声道并应用另一个背压?   java如何修复安卓 studio中的权限错误?   尝试清除JavaFX ObservableMap时出现java ConcurrentException   java编辑文本。GetText,返回关于null引用的异常,但已声明该异常   mysql组织。乔达。时间LocalDate在Redhat(Linux)java上显示少一天   在java中通过序列化获取多个对象   有人有java注释“java.lang.Synthetic”的背景吗?