在我们一个非常简单的自定义上下文中,我想在内置的cdr应用程序之外添加一些数据库日志记录。我有以下内容:
[inbound-custom]
exten => _X.,1,MixMonitor(/mnt/temp/inbound-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${EXTEN}-${UNIQUEID}.wav)
exten => _X.,n,MYSQL(Connect connid mysqlip cdr_logger mysqlpw asteriskcdrdb)
exten => _X.,n,MYSQL(Query resultid ${connid} INSERT INTO `call_recordings` (`asterisk_uniqueid`,`clid`,`filename`,`context`) VALUES (${UNIQUEID},${CALLERID(num)},inbound-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${EXTEN}-${UNIQUEID}.wav,"inbound"))
exten => _X.,n,MYSQL(Clear ${resultid})
exten => _X.,n,MYSQL(Disconnect ${connid})
exten => _X.,n,Dial(SIP/cs1000/${EXTEN})
exten => _X.,n,Hangup()
这似乎在大多数情况下都能正常工作,但是如果有人在上下文到达MYSQL(clear...)
行之前挂断,则MySQL服务器上会打开一个僵尸连接。在voip信息维基上,提到了在h
扩展中为上下文进行连接清理,但是没有这样的示例。我尝试了以下无济于事:
[inbound-custom]
exten => _X.,1,MixMonitor(/mnt/temp/inbound-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${EXTEN}-${UNIQUEID}.wav)
exten => _X.,n,MYSQL(Connect connid mysqlip cdr_logger mysqlpw asteriskcdrdb)
exten => _X.,n,MYSQL(Query resultid ${connid} INSERT INTO `call_recordings` (`asterisk_uniqueid`,`clid`,`filename`,`context`) VALUES (${UNIQUEID},${CALLERID(num)},inbound-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${EXTEN}-${UNIQUEID}.wav,"inbound"))
exten => _X.,n,Dial(SIP/cs1000/${EXTEN})
exten => _X.,n,Hangup()
exten => h,1,MYSQL(Clear ${resultid})
exten => h,n,MYSQL(Disconnect ${connid})
我想我在那里做错了什么,但我不能说它是什么。
答案 0 :(得分:0)
我能够得到这个大多数工作但是明显似乎喜欢在插入物上抛出错误,文档是最小的。放弃使用MYSQL()
并选择使用system()
将insert语句发送到等待的python守护进程。