前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JSON API

JSON API

作者头像
Seven Du
发布2020-12-21 14:21:09
8300
发布2020-12-21 14:21:09
举报

FreeSWITCH早在1.4时代就有了JSON API,然而,却没有引起大家的重视。其实,JSON API的设计有更好的结构化和扩展性,配合HTTP和Websocket接口,必将大有作为。

JSON API,顾名思意,它的输入是JSON,输出也是JSON。

在Websocket接口中,FreeSWITCH提供了JSON API的入口。不过,为了测试方便,FreeSWITCH又提供了一个json API命令,也就是说,你可以直接在命令行上测试JSON API。

如:

FS> json {"command":"status", "data": null}

{"command":"status","data":null,"status":"success","response":{"systemStatus":"ready","uptime":{"years":0,"days":0,"hours":14,"minutes":6,"seconds":48,"milliseconds":90,"microseconds":498},"version":"1.7.0 git 54f64c5 2015-06-19 12:03:07Z 64bit","sessions":{"count":{"total":12,"active":0,"peak":2,"peak5Min":0,"limit":1000},"rate":{"current":0,"max":30,"peak":1,"peak5Min":0}},"idleCPU":{"used":0,"allowed":100},"stackSizeKB":{"current":240,"max":8192}}}

从上面可以看到,我们使用json是一个API命令,它的参数是一个JSON字符串。其中,字符串表示一个JSON对象,该对象的command属性是status,data是空,它将调用status这个JSON API命令。实际上,它跟普通的status命令执行结果是一样的,只是,它的输出是一个标准的JSON,更便于程序解析。

再试一个:

FS> json {"command":"channelData", "data": {"uuid": "5b997fff-5142-4433-91e1-22c47ccd5abe"}}

{"command":"channelData","data":{"uuid":"5b997fff-5142-4433-91e1-22c47ccd5abe"},"status":"success","response":{"channelData":{"core-uuid":"edd1608a-827e-4930-a318-ca77548a2c1c","switchname":"seven.local”, …...

上面的命令是一个channelData命令,执行它是要保证当前的FreeSWITCH里有一个活动的Channel,可见,上面的命令类似于传统的uuid_dump,可以得到一个Channel相关数据的JSON表示。

不过,现在直接可以测试的JSON API不多,所以,FreeSWITCH又提供了一个超级的JSON API,该API可以把所有的传统的API命令转换成一个统一的JSON API。这样说起来有点绕,我们先来试一下:

FS> json {"command":"fsapi", "data": {"cmd": "status"}}

{"command":"fsapi","data":{"cmd":"status"},"status":"success","response":{"message":"UP 0 years, 0 days, 14 hours, 14 minutes, 42 seconds, 939 milliseconds, 149 microseconds\nFreeSWITCH (Version 1.7.0 git 54f64c5 2015-06-19 12:03:07Z 64bit) is ready\n13 session(s) since startup\n0 session(s) - peak 2, last 5min 1 \n0 session(s) per Sec out of max 30, peak 1, last 5min 1 \n1000 session(s) max\nmin idle cpu 0.00/100.00\nCurrent Stack Size/Max 240K/8192K\n"}}

FS> json {"command":"fsapi", "data": {"cmd": "sofia", "arg": "status"}}

{"command":"fsapi","data":{"cmd":"sofia","arg":"status"},"status":"success","response":{"message":" Name\t Type\t Data\tState\n=================================================================================================\n 192.168.7.6\t alias\t….

从上面的JSON API可以看出,它将原来的 status 和 sofia status这样的命令包装在了JSON中的data数据中,而得到的执行结果也是原来的文本字符串,放在结果JSON数据中的response里。

好了,关于JSON API就先讲这些,有兴趣的先练习一下,看看源代码,找出更多JSON API。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档