• Freeswitch操作基本配置


    1、SIP 协议原文:

    http://www.ietf.org/rfc/rfc3261.txt


    2、 hangup_after_bridge = true

    设置该变量,告诉系统如果当前有一个桥接成功的通话,挂断当前通话。

     

    3、Freeswitch 监听电话;

    mod_spy 是固定监听一个用户, 是你先开着电话,别人有一电话就开始听。
    eavesdrop 是系统自身一个命令APP,  可以实现你说的那些功能,前提是要知道  channel 的 UUID。  

    http://wiki.freeswitch.org/wiki/Misc._Dialplan_Tools_eavesdrop
    Mod_spy

    4, modules.conf.xml  可以配置哪些模块需要加载,配置后,下次FS启动时,会自动加载这些模块。

    该文件位于:\conf\autoload_configs\modules.conf.xml

    5,使Freeswitch作为服务运行:

    打开cmd命令提示符,切换到Freeswitch的Release目录,然后运行:

    freeswitchConsole -install Freeswitch

    此时,打开Services.msc控制台,就可以看到Freeswitch服务了,建议设置为自动启动。

    6, 主叫,Caller ,被叫 Callee

     

    7,  Dialplan中可以使用的caller profile 变量,这些变量可以在呼叫中被传递,passed along from one Leg to Another. 特点,ReadOnly

     

    8, FS录音功能:

     首先备份/usr/local/freeswitch/conf/dialplan/default.xml 。

    然后vi编辑default.xml ,在

         

    下面加入以下语句即可录音。

       

       

       

       

       

       

       

    大家应该看明白了,录音会自动存放在${base_dir}/recordings/archive下。

    9, 设置fs 的Log级别:

    Log 6 ,详细见如下表格:

     

    10, FSCLI 常用命令;

    Show Calls   显示目前有哪些通话

    Show Channels  显示目前活跃的独立通道

    说明: A channel is a single  Call  leg.

    一个call是两个独立的Channel桥接到一块的

    11, 配置SIP网关拨打外部电话

    如果你在某个运营商拥有SIP账号,你就可以配置上拨打外部电话了。该SIP账号(或提供该账号的设备)在 FreeSWITCH 中称为SIP网关(Gateway)。添加一个网关只需要在 conf/sip_profiles/external/ 创建一个XML文件,名字可以随便起,如gw1.xml。

     

        

        

        

        

    如果你的SIP网关还需要其它参数,可以参阅同目录下的 example.xml,但一般来说上述参数就够了。你可以重启 FreeSWITCH,或者执行以下命令使用之生效。

    FS> sofia profile external rescan reloadxml

    然后显示一下状态:

    FS> sofia status

    如果显示 gateway gw1 的状态是 REGED ,则表明正确的注册到了网关上。你可以先用命令试一下网关是否工作正常:

    FS> originate sofia/gateway/myDefaultGateway/015005600327 &echo()

    以上命令会通过网关 gw1 呼叫号码 xxxxxx(可能是你的手机号),被叫号码接听电话后,FreeSWITCH 会执行 echo() 程序,你应该能听到自己的回音。

    从某一分机上呼出

    如果网关测试正常,你就可以配置从你的SIP软电话或portaudio呼出了。由于我们是把 FreeSWITCH 当作 PBX 用,我们需要选一个出局字冠。常见的 PBX 一般是内部拨小号,打外部电话就需要加拨 0 或先拨 9 。当然,这是你自己的交换机,你可以用任何你喜欢的数字(甚至是字母)。 继续修改拨号计划,创建新XML文件: conf/dialplan/default/call_out.xml :

      

        

          

        

      

    其中,(\d+)为正则表达式,匹配 0 后面的所有数字并存到变量 $1 中。然后通过 bridge 程序通过网关 gw1 打出该号码。当然,建立该XML后需要在Fs-Con中执行 reloadxml 使用之生效。

    12,  Authentication AND  Authorization

    Authentication is the process of  identifying a user.

    Authorization is the process of determining the level of access of a user.

    13, Freeswitch 添加用户步骤:

    1), \conf\directory\default 添加一个xml文件,拷贝其他作为参考。

    2),修改\conf\dialplan\default.xml 找到 Local_Extension,修改正则表达式 
        

    使得新添加的用户立即生效,

    Reloadxml

    14,Freeswitch查看目前有哪些分机已经注册:

    sofia status  profile internal reg

    15,Freeswitch 拨打分机,当被叫分机不在线时,按键#号,可以跳过语音提示,直接留言。

    用户如果需要听语音留言,可以拨号 4000, 按照语音提示输入 分机号和 密码,通过认证后即可收听语音留言。

    16,配置Freeswitch的group,当用户拨打组的分机号时, 组内所有的分机都会ringing,

    其中一个用户接听后,其他的用户都会stop ringing。同一个用户可以属于多个group

    示例:\conf\dialplan\default.xml 配置信息; 

       

          

          

    Group的配置信息:\conf\directory\default.xml

          

      

      

      

      

      

          

    17, 重新加载外部SIP账户信息: 

    Sofia profile External restart ReloadXml    (该操作会中断所有正在进行的通话)

    查看外部SIP账户注册状态:

    Sofia Status

    仅重新加载指定的外部SIP账户信息,而不是全部:

    Sofia profile  rescan ReloadXML

    18, dialplan 中可以使用的条件变量:condition

    condition就是决定当然呼叫是否要在这个extension中处理的一个模式匹配标签。

    语法:

       

       

    condition>fileld和expression是必须的,break是可选的。

    有一些内部变量可以用:

    •context Why can we use the context as a field? Give us examples of usages please.

    •rdnis Redirected Number, the directory number to which the call was last presented.

    •destination_number Called Number, the number this call is trying to reach (within a given context)

    •dialplan Name of the dialplan module that are used, the name is provided by each dialplan module. Example: XML

    •caller_id_name Name of the caller (provided by the User Agent that has called us).

    •caller_id_number Directory Number of the party who called (caller) -- can be masked (hidden)

    •ani Automatic Number Identification, the number of the calling party (caller) -- cannot be masked

    •aniii The type of device placing the call ANI2

    •uuid Unique identifier&nb, sp;of the current call? (looks like a GUID)

    •source Name of the FreeSWITCH module that received the call (e.g. PortAudio)

    •chan_name Name of the current channel (Example: PortAudio/1234). Give us examples when this one can be used.

    •network_addr IP address of the signaling source for a VoIP call.

    •year Calendar year, 0-9999

    •yday Day of year, 1-366

    •mon Month, 1-12 (Jan = 1, etc.)

    •mday Day of month, 1-31

    •week Week of year, 1-53

    •mweek Week of month, 1-6

    •wday Day of week, 1-7 (Sun = 1, Mon = 2, etc.)

    •hour Hour, 0-23

    •minute Minute (of the hour), 0-59

    •minute-of-day Minute of the day, (1-1440) (midnight = 1, 1am = 60, noon = 720, etc.)

    除了上面的变量外,还可以使用自定义的变量${variable},以及一些api函数${api(args)}

    这些变量可以在field及expression里。

    condition是不能嵌套的,但可以将多个condition堆在一起,并设置break为on-false(默认值),这样的效果与嵌套一样。

    示例1,利用cond API函数:

     12 ? YES : NO)}" expression="^YES$">

        

        

    condition>示例2, 嵌套效果:

       

      

         

          

       condition>

    extension>

  • 相关阅读:
    TensorFlow2:概述
    前端面试题及答案:app怎么做适配的?
    es针对nested类型数据无法进行过滤查询的问题记录
    背包问题
    Ribbon工作原理
    C++习题2
    LeetCode 1694. 重新格式化电话号码
    计算机网络 第一章 计算机网络体系结构
    多元函数奇偶性
    java计算机毕业设计美容院业务管理系统源码+系统+mysql数据库+lw文档
  • 原文地址:https://blog.csdn.net/weixin_49543223/article/details/126107890