一、功能需求:

  通过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中进行传输。