JSON API
Posted FreeSWITCH中文社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON API相关的知识,希望对你有一定的参考价值。
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。
以上是关于JSON API的主要内容,如果未能解决你的问题,请参考以下文章
API JSON & UIPageViewController 可选 Nil
如何返回 Promise.all 获取 api json 数据?