2012-05-28 2 views
1

메신저 전화 응용 프로그램을 작성하고 전화 기록을 가져와야합니다. 클라이언트는 PortSip을 사용합니다. 그리고 거기에 문제가 있습니다. 라이브러리에 전화 녹음 기능이 있지만 ~ 10 %의 전화가 녹음되지 않습니다. 왜 StartRecording을 다시 시작하지 않아도 현재 통화 녹음을 시작할 수 없습니다.
그래서 ive는 별표 서버에 호출을 기록하고 호출 종료 후 데이터베이스에 다운로드하기로 결정했습니다. 별표 CDR 데이터는 mysql 데이터베이스에 저장되어 있으며 고유 한 호출 ID를 볼 수 없습니다. 우리가 데이터베이스에 호출 레코드를 써서 cdr과 관련된 몇 가지 키로 호출 레코드를 작성할 수 있을지 궁금합니다.
또 다른 옵션은 별표 서버의 모든 호출을 기록하고 ftp를 통해 필요한 컴퓨터에 다운로드 한 다음 서버에 저장하는 것입니다.별표 (Asterisk)에서 통화 기록 얻기

답변

2

나는 asterisk 레코드를 sip 디바이스 대신 호출 할 것입니다. (당신이 dialplan pattern가 자동으로 모든 확장에 대한 모든 호출을 기록하는 데 사용할 수있는이 자동으로 555 확장에 대한 모든 호출을 기록합니다

exten => 555,1,Answer 
exten => 555,2,Monitor(wav,filename) 
... 

:하지만, 당신처럼, 당신의 dialplan을에 Monitor 명령을 사용하여 별표에서 통화를 녹음 할 수 있습니다 이 설정은 사용자의 특정 설정에 따라 다름). 모두을 녹음하지 않으려면 AGI 스크립트를 실행하여 어떤 통화를 녹음할지 구분할 수 있습니다.

대상 파일 이름은 ani-dnis-datetime으로 구성하여 고유하거나 임의의 other asterisk variables으로 만들 수 있습니다. 예를 들면 다음과 같습니다. $ {CALLERID (ani)} - $ {EXTEN}. $ {CALLERID (ani)} - $ {EXTEN} - $ {UNIQUEID}와 같이 고유 한 호출 ID 변수 $ {UNIQUEID}을 사용할 수도 있습니다.

CDR의 경우, cdr_odbc 모듈을 사용하여 csv, sqlite 파일 또는 mysql, postgresql 등과 같은 관계형 데이터베이스로 가질 수 있습니다.

전화를 고유하게 만드는 것이 uniqueid 필드입니다. CDR에서 소스, 대상, 관련 채널, 날짜, 응답 시간, 다이얼 상태 등이 있으며이 고유 필드가 있으므로 지정된 오디오 파일 (녹음 된 통화)과 주어진 통화를 연결할 수 있습니다. 그리고 관련된 모금 장치. 필요한 경우 wav 파일을 다운로드하고 주기적으로 백업 할 수 있습니다.

희망이 있습니다.

+0

답변 해 주셔서 감사합니다. 지금 우리는 다음을 수행합니다. 클라이언트 소프트웨어가 로컬에서 파일을 기록하지 못하면 별표로 기록을 트리거하는 DTMF를 보냅니다. 그 후 서버에서 파일을 가져올 계획이다. 'cdr'mysql 데이터베이스의 'uniqueid'컬럼은 비어있다. 잘못 구성된 것이 있습니까? 내 클라이언트의 uniqueid에 의해 $ {CALLERID (ani)} - $ {EXTEN} - $ {UNIQUEID}의 레코드 파일을 찾을 수있게되었습니다. – 0x49D1

+0

오신 것을 환영합니다! 녹음이 시작/중지 될 때 클라이언트가 제어 할 수 있도록하는 것이 안전하지 않으므로 서버 측에서 제어하는 ​​것이 좋습니다. 또한 당신이 가지고있는 문제는 여기에 언급되어 있습니다 : http://www.voip-info.org/wiki/view/Asterisk+cdr+mysql 그러나 나는 그 문제가 직접적으로 발생하지 않았으므로 이것을 게시하고 싶을 것입니다. 설정 파일과 함께 다른 질문. Btw, 링크에서 그것은 또한이 uniqueid가 유일 함을 보장하지 않는다는 것을 언급합니다 : (그래서 나는 ani-dnis-datetime과 함께 그리고/또는 고유 channelid와 함께 origin 채널을 포함 시켰습니다. – marcelog

관련 문제