클라이언트 호출을 시작한 Java 프로그램이 응답시 전화 플랜의 내선 번호에 연결됩니다. 그 확장은 차례로 클라이언트와의 몇 가지 상호 작용을하기 위해 AGI 스크립트를 실행합니다. 클라이언트가 끝까지 줄을 유지하면 모든 것이 완벽합니다. 그러나 그가 중간에 전화를 끊으면 AGI 스크립트가 계속 실행됩니다. 클라이언트가 전화를 끊은 순간에 멈추고 싶습니다.상대방이 전화를 끊었을 때 AGI 스크립트를 중지하는 방법
OriginateAction originateAction;
ManagerResponse originateResponse;
originateAction=new OriginateAction();
originateAction.setChannel(phoneNumber);
originateAction.setExten("700");
originateAction.setContext("users");
originateAction.setPriority(new Integer(1));
//connect to Asterisk and login
ManagerConnectionFactory factory = new ManagerConnectionFactory("localhost","******","******");
managerConnection = factory.createManagerConnection();
managerConnection.login();
//send the originate action and wait for a maximum of 30 seconds to get a response
originateResponse=managerConnection.sendAction(originateAction, 30000);
dialplan을
exten =>700,1,Agi(agi://localhost/message.agi,${var1},${var2},${var3},${var4}); script to play
에서 발췌 그리고 당신 같은
public void service(AgiRequest arg0, AgiChannel arg1) throws AgiException {
setVariable("missedSteps","4");
verbose(" -------------- missed steps: 4 ----------------", 3);
// Answer the channel and welcome
answer();
streamFile("silence/1");
streamFile("welcome");
setVariable("missedSteps","3");
verbose(" -------------- missed steps: 3 ----------------", 3);
//Read the file
streamFile(fileName);
setVariable("missedSteps","2");
verbose(" -------------- missed steps: 2 ----------------", 3);
..........
..........
setVariable("missedSteps","1");
verbose(" -------------- missed steps: 1 ----------------", 3);
..........
..........
setVariable("missedSteps","0");
verbose(" -------------- missed steps: 0 ----------------", 3);
//hangup
hangup();
그래서 AGI 스크립트의 추출물 : 여기
는 원래 자바 프로그램의 추출물 내가 스크립트 내에서 진화를 추적하는 변수를 유지하려고하는 것을 볼 수 있으며, 그 변수를 t o 호출 로그에 저장하십시오. 보시다시피 디버깅에 대한 자세한 명령을 추가했으며 콘솔에서 볼 수있는 것은 클라이언트가 끊었는지 여부에 관계없이 "missedSteps"변수가 4에서 0으로 계속 진행된다는 것입니다.
좀 더 설명 할 수 있습니까? 별표 (Asterisk) 문서에서 CHANNEL hangup 된 변수를 찾을 수 없습니다. 채널이 끊어 질 때마다 1로 설정된 변수를 Dialplan에 생성하려고 시도했습니다.이 변수는 Agi 스크립트의 각 중요 단계에서 검사됩니다. 하지만 다시는 효과가 없습니다. 실제로 AGI 스크립트가 끝나면 Asterisk는 "h"확장 만 실행합니다. –
지금 checkhangup을 호출했습니다. "별표 -rx"코어 쇼 기능 CHANNEL ""을 사용하여 doc을 봅니다. – arheops