Freeswitch学习笔记(二):常用命令

参考文档

mod_commands api文档:
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod_commands_1966741/

mod_dptools app文档

https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Modules/mod_dptools_1970333/

1.控制台与命令客户端

FreeSWITCH 是 Client-Server结构,不管 FreeSWITCH 运行在前台还是后台,你都可以使用客户端软件 fs_cli 连接 FreeSWITCH.

fs_cli 是一个类似 Telnet 的客户端(也类似于 Asterisk 中的 asterisk -r命令),它使用 FreeSWITCH 的 ESL(Event Socket Library)库与 FreeSWITCH 通信。

当然,需要加载模块 mod_event_socket。该模块是默认加载的。

正常情况下,直接输入 bin/fs_cli 即可连接上,并出现系统提示符。如果出现:

[ERROR] libs/esl/fs_cli.c:652 main() Error Connecting [Socket Connection Error]

这样的错误,说明 FreeSWITCH 没有启动或 mod_event_socket 没有正确加载,请检查TCP端口8021端口是否处于监听状态或被其它进程占用。

fs_cli 也支持很多命令行参数,值得一提的是 -x 参数,它允许执行一条命令后退出,这在编写脚本程序时非常有用

bin/fs_cli -x “version”

version – 显示当前版本
status – 显示当前状态
sofia status – 显示 sofia 状态
help – 显示帮助

以 “/” 开头的,这些命令并不直接发送到 FreeSWITCH,而是先由 fs_cli 处理。/quit、/bye、/exit、Ctrl + D 都可以退出 fs_cli;/help是帮助

其它一些 “/”开头的指令与 Event Socket 中相关的命令相同,如:
/event – 开启事件接收
/noevents – 关闭事件接收
/nixevent – 除了特定一种外,开启所有事件
/log – 设置 log 级别,如 /log info 或 /log debug 等
/nolog – 关闭 log
/filter – 过滤事件

2.API和APP

最本质的区别:
一个 APP 是一个程序(Application):它作为一个 Channel 一端与另一端的 UA 进行通信,相当于它工作在 Channel 内部;
一个 API 则是独立于一个 Channel 之外的,它只能通过 UUID 来控制一个 Channel(如果需要的话)。

我们在控制台上输入的命令都是 API;
在 拨号计划 中执行的程序都是 APP(拨号计划 中也能执行一些特殊的 API)。

大部分公用的 API 都是在 mod_commands 模块中加载的;
APP 则在 mod_dptools 中,因而 APP 又称为拨号计划工具(Dialplan Tools)。

某些 APP 有与其对应的 API,如上述的 bridge/uuid_bridge,还有 transfer/uuid_transfer、playback/uuid_playback等。
UUID 版本的 API 都是在一个 Channel 之外对 Channel 进行控制的,它们应用于不能参与到通话中却又想对正在通话的 Channel做点什么的场景中。
例如 alice 和 bob 正在畅聊,有个坏蛋使用 uuid_kill 将电话切断,或使用 uuid_broadcast 给他们广播恶作剧音频,或者使用 uuid_record 把他们谈话的内容录音等

3.conference 会议

加入会议
conference 3001 dial sofia/external/[email protected]
conference 3001 dial user/1013
列出所有会议:conference list

4.呼叫中心

查看Agent:callcenter_config agent list
查看队列:callcenter_config queue list

5.呼叫管理命令

尖括号(< >)括起来的表示要输入的参数,
方括号([ ])括起来的则表示可选项,该参数可以有也可以没有。
竖线(|)分开的参数列表表示“或”的关系,即只能选其一

create_uuid

创建新UUID并将其作为字符串返回
用法:create_uuid

originate

发起一个新的呼叫
用法:

originate <call_url> <exten>|&<application_name>(<app_args>) [<dialplan>] [<context>] [<cid_name>] [<cid_num>] [<timeout_sec>]

<call_url>:您正在呼叫的URL。有关sofia SIP URL语法的更多信息,请参阅:FreeSwitch Endpoint sofia
<exten>:要在拨号计划中搜索的目的地号码,用&bridge(user/xxxx)替代
&<application_name>:“&”表示后面是应用程序名称,而不是扩展名,(<app_args>)是可选的
注意:使用单引号传递带空格的参数,例如“&lua(test.lua arg1 arg2)”
注意:&和应用程序名称之间没有空格
<dialplan>:如果未指定,则默认为“XML”。
<context>:如果未指定,则默认为“default”。
<cid_name>:要发送的呼叫者ID名称。
<cid_num>:要发送的呼叫者ID号码。
<timeout_sec>:超时(秒);默认值=60秒。

例如:
1.可以用8600替代远程sip端点来连接:
originate sofia/example/[email protected] 8600
2.可以将远程SIP端点连接到另一个远程扩展:
originate sofia/example/[email protected] &bridge(sofia/example/[email protected])
3.可以运行Javascript应用程序test.js
originate sofia/example/[email protected] &javascript(test.js)
4.可以运行带有参数的javascript,必须用单引号将其括起来
originate sofia/example/[email protected] ‘&javascript(test.js myArg1 myArg2)’
5.可以发起多个扩展
originate user/1001,user/1002,user/1003 &park()
6.顺振:originate user/1006 &bridge(user/1011|user/1012)
7.同振:originate user/1006 &bridge(user/1011,user/1012)
8.添加通道变量:originate {origination_caller_id_number=8888,ignore_early_media=true,xugd-wavfile=notice.wav,absolute_codec_string=PCMA}user/1018 &lua(voiceNotify.lua)

echo

如果用户 alice已经注册,执行originate user/alice &echo

echo 是一个回音程序,即它会把任何它“听到”的声音(或视频)再返回(说)给对方。因此,如果这时候用户 alice 接了电话,无论说什么都能听到自己的声音。

user/alice 称为呼叫字符串,或呼叫 URL,是由用户目录中的 dial-string 参数决定的

执行sofia status profile internal reg,可以查看FreeSWITCH中的注册信息

Registrations:
==================================================================
Call-ID: ZTRkYjdjYzY0OWFhNDRhOGFkNDUxMTdhMWJhNjRmNmE.
User: [email protected]
Contact: "Alice" <sip:[email protected]:5090;rinstance=a86a656037ccfaba;transport=UDP>
Agent: Zoiper rev.5415
Status: Registered(UDP)(unknown) EXP(2010-05-02 18:10:53)
Host: du-sevens-mac-pro.local
IP: 192.168.4.4
Port: 5090
Auth-User: alice
Auth-Realm: 192.168.4.4
MWI-Account: [email protected] 

FreeSWITCH 根据 Contact 字段知道 alice 的 SIP 地址 sip:[email protected]:5090。当使用 originate 呼叫 user/alice 这个地址时,FreeSWITCH 便查找本地数据库,向 alice 的地址 sip:[email protected]:5090 发送 INVITE 请求

park

执行originate us

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彼岸花@开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值