FreeSWITCH IVR中lua调用并执行nodejs代码

一、功能需求:

  通过FreeSWITCH的IVR按键调用相应的脚本文件;nodejs提供很多的模组,可以方便的与其它系统或者进行任何形式的通讯,我的应用是通过nodejs发送http post请求;

  由于不太熟悉FreeSWITCH直接调动执行nodejs文件的方法,所以我通过执行Lua脚本,在lua脚本中执行对nodejs文件的调用并执行,具体的设定记录如下:

二、具体设定:

  ①IVR设定:

    <entry action="menu-exec-app" digits="1" param="lua testLighton.lua"/>
  ②testLighton.lua脚本内容:

    os.execute('node /usr/local/freeswitch/scripts/lighton.js');  //Nodejs文件存放位置:/usr/local/freeswitch/scripts/lighton.js 

  ③/usr/local/freeswitch/scripts/lighton.js 脚本内容:  

    var rest = require('restler');

    rest.post('http://192.168.11.17:3021/serviceUp/cmd/sendCMDDispatcher', {
      data: {
        cmdContent:[{
          'DeviceEntityAID': '03003c00',
          'DataID': '03010000',
          "Value":"ff"
        }]
      },
    }).on('complete', function(data, response) {
      console.log(data);
    }).on('error',function(er){
      console.log(er);
    });

  到此,就可以根据IVR提示中的 “1” 按钮实现Http post的请求,其中data区在body中进行传输。

    

   

 

转载于:https://www.cnblogs.com/logo-fox/p/4152767.html

### FreeSWITCH 中使用 Lua 进行调用的实现方法 在 FreeSWITCH 配置中,通过定义特定扩展名关联 Lua 脚本来处理来电请求。当电话号码匹配指定模式时触发相应的动作。 对于拨号方案配置,在 `/usr/local/freeswitch/conf/dialplan/default/` 下创建或编辑 XML 文件来设置新的 extension[^1]: ```xml <extension name="Simple_Lua_Test"> <condition field="destination_number" expression="^(9910)$"> <action application="lua" data="test3.lua"/> </condition> </extension> ``` 上述代码片段表示当目的地编号为 `9910` 的呼叫进入时,将会执行位于默认路径下的名为 `test3.lua` 的 Lua 脚本文件。 #### 创建 Lua 脚本 为了响应此事件,需编写对应的 Lua 脚本以操作 session 对象。假设我们将要编写的脚本保存为 `test3.lua` 放置于适当位置以便被 FreeSWITCH 找到。下面是一个简单的例子展示如何利用 session 来控制通话流程: ```lua local session = freeswitch.Session() -- 初始化 Session 实例 if not session then freewswitch.consoleLog("ERR", "无法初始化会话\n") else session:answer() local stream = session:streamFile("/path/to/audio/file.wav") -- 播放音频 while true do event = session:waitForDigit(5000) -- 等待按键输入最长五秒 if event == "" or tonumber(event) ~= nil then break end end session:sayDigits(event, "en") -- 结束通话 end ``` 这段 Lua 代码展示了怎样接收来自用户的按鍵 (DTMF),以及如何根据这些输入采取行动。这里还包含了基本的声音播放功能和结束通话的操作。 另外,还可以设定 API 挂断钩子,使得即使是在其他地方挂掉电话也能运行额外逻辑[^2]: ```xml <action application="set" data="api_hangup_hook=lua hook-test.lua"/> ``` 这允许开发者自定义更复杂的业务场景下所需的行为。 最后值得注意的是,除了被动等待入站呼叫外,也可以主动发起出站呼叫通过编程方式管理整个过程[^3]: ```lua new_session = freeswitch.Session("sofia/gateway/gatewayname/xxxxx") ``` 以上就是有关 FreeSWITCH 使用 Lua 编程接口的一些基础介绍及其应用案例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值