Asterisk - Очистка соединений MySQL () в расширении 'h' - PullRequest
0 голосов
/ 23 августа 2010

В одном из наших очень простых пользовательских контекстов я хотел бы добавить журналирование базы данных вне встроенного приложения 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}) 

Я предполагаю, что я что-то там не так делаю, но не могу точно сказать, что это такое.

1 Ответ

0 голосов
/ 23 августа 2010

Мне удалось добиться того, чтобы это работало в основном, но ясно, что ясно, что я выбрасываю ошибки на вставках, и документация минимальна в лучшем случае Отказался от использования MYSQL() и решил использовать system() для отправки оператора вставки ожидающему демону python.

...