[olive] transfer… again.

계속 transfer 단계에서 진행이 안되고 있다.

문제는 Redirect 이후, 결과를 작성할 때, 상담원 transfer 결과를 도출하기가 까다롭다는 것.

상담원이 응대를 했는지 안했는지에 대한 결과를 어떻게 알아내야 할지.. 흐음…

쉬운 것 같은데.. 은근히 까다로운 면이 있다.

[olive] redirect problem

오늘 다시 현상을 분석했다.

결과는 다음과 같았다.

Asterisk-1.8, channel redirect – OK
Asterisk-13.2, channel redirect – NO

즉, 1.8 버전에서는 되는데, 13.2 버전에서는 안되는 것이었다.

SVN 에서 최신의 소스를 받아서 무슨일이 있었는지 비교해 보았다.
엄청난 차이가 있었다.

한가지 의심스러운 부분이 있었는데…

    if (chan2->pbx) {
ast_set_flag(chan2, AST_FLAG_BRIDGE_HANGUP_DONT); /* don’t let the after-bridge code run the h-exten */
}

최신의 소스에서는 위의 부분이 삭제되어 있었던 것. 옵션만봐서는 Bridge 후에 채널을 끊지 않도록 하는 라인 같았다.

해당 부분과 옵션에 대한 Define 만 넣고 다시 컴파일을 한 후 테스트를 해보았으나, 실패. 단순한 소스 수정이 아닌것 같았다.

변경 이력은 다음과 같았다.

Merge in the bridge_construction branch to make the system use the Bridging API.

Breaks many things until they can be reworked.  A partial list:
chan_agent
chan_dahdi, chan_misdn, chan_iax2 native bridging

아마도 각각 사용하던 Bridge 설정을 모듈 설정을 따라가도록 수정한 것 같았다.

직장 동료들에게 물어보니 1.8 과 13.2 버전에는 엄청난 차이가 있어서 1.8에서 동작한다고 해서 13.2에서 도동작한다는 보장이 없다는 것이었다.

이 문제를 어떻게 풀어야 할지 좀 걱정이 된다.

 

[olive] ask again and over again.

일주일 전, 한가지 풀리지 않는 문제가 있었다.

바로 Call transfer 에 관한 문제였다.

일단 parking 된 channel 을 Transfer 하고 싶은데, AMI 명령어 만으로는 해결이 안되는 것이었다.
물론 AMI 명령어로 Transfer 와 관련된 명령이 있긴했다.

blindtransfer
redirect

하지만 내가 원하는 것은 아니었다. 왜냐하면 위의 명령어들은 peer 로 transfer 를 하는 것이 아닌, context 의 extension 으로 transfer 를 하는 것이기 때문이다.

한참동안 고민을 하다가 Asterisk IRC 채널에 물어보고 답변을 들었다.

“Asterisk 는 그렇게 동작을 안해. 왜냐하면 그렇게 디자인 된 것이 아니거든. Transfer 를 하고자 한다면, 어느 순간에는 Dialplan 을 써야할 때가 올꺼야.”

그랬었다. 애초에 불가능한 것이었다.

그랬는데.. 그새 깜박했다.
왜냐하면.. 오늘 또 똑같은 질문을 했기 때문이다.

I thought it was clear a week ago when you asked the same thing and got the same answer’

하아.. 부끄러운 질문이었다.. ^^;;;;