exec Module

exec Module

原文链接

exec

概述

exec命令保证opensips可以从opensips脚本执行外呼命令。可以接受任何有效的命令。用/bin/sh软链或者二进制文件评估并执行最终的输入字符串。opensips 会使用环境变量来传递更多关于请求信息。

  • SIP_HF_<hf_name> 包含请求中每个header field的值。如果一个header field出现多次,则将值用逗号分割拼接起来。<hf_name>大写字母表示。Ff header-field以紧凑的形式出现,那么<hf_name>符合规范。
  • SIP_TID 类似于to-tag,是对话标识符,最初该值为空。
  • SIP_SRCIP 发出请求的源IP地址。
  • SIP_ORURI 原始请求URI
  • SIP_RURI 当前的请求URI(如果没有变更则于SIP_ORURI一致)
  • SIP_USER 当前请求URI的用户部分
  • SIP_OUSER 原始请求URI的用户部分
注意: 提供给exec模块的任意环境变量必须使用'$$'标识(例如$$SIP_OUSER),否将作为opensips伪变量处理,从而引发脚本错误。

exported functions

exec(command, [stdin], [stdout], [stderr], [envavp])

执行外部命令。如果指定了input,那么将作为新进程的标准输入,并将输出保存在输出变量。
function会一直等待外呼脚本,直到其提供了所有输出为止(实际上并不需要完全完成)。如果不需要任何输出(标准输出或者标准错误),则不会阻塞执行,它只会启动外呼脚本并继续执行该脚本。
参数含义如下:

  • command 要执行的命令,可以包含伪变量。
  • stdin 传递给脚本标准输入的字符串,该改变可以作为伪变量提供
  • stdout 用于存储执行过程标准输出的伪变量。
  • stderr 用于存储执行过程标准错误的伪变量。
  • envavp 用于存储传递给命令的环境变量的值。环境变量命名规范为"OSIPS_EXEC_#"其中#从0开始。例如如果你想存储两个值(“a"和"b”)到avp,那么OSIPS_EXEC_0存储第一个值,OSIPS_EXEC_1存储第二个值。
警告: 任意包含特定bourne shell(sh/bash)字符的Opensips伪变量应该放在引号中,例如 exec("update-stats.sh'$(ct${re.subst,/'//g})'");
警告: "stdin"/"stdout"/"stderr"并不能用于存储大量的数据,因此当使用他们时需要小心。由于基本的实现,装满pipes会导致读取死锁。

该函数可以用于REQUEST_ROUTE, FAILEURE_ROUTE, LOCAL_ROUTE,STARTUP_ROUTE,TIMER_ROUTE,EVENT_ROUTE,ONREPLY_ROUTE。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值