2014-12-04 3 views
0

모두 안녕C가있는 별표 AGI

나는 C 언어로 AGI에 들어가고, 잠시 후에 나는 문제가있다. GET DATA (및 다른 AGI 명령)을 사용하여 채널로 파일을 재생할 때 슬립 기능을 적용하여 재생할 수 있어야하고 사용자가들을 수 있어야합니다.

내 일부 코드는 다음과 같다 :

The FD we were waiting for has something waiting. Waitfordigit returning numeric 1 

왜 이런 일이 :

char line[80]; 
int digit; 
setlinebuf(stdout); 
setlinebuf(stderr); 
printf("ANSWER\n"); 
printf("GET DATA en/pbx-transfer 5000 4 \n"); 
sleep(3); 
printf("CHANNEL STATUS\n"); 
printf("HANGUP"); 

별표 나에게 이런 sleep()의 내 사용에 대한 경고를 보여줍니다?

답변

-1

우선 - 휠을 다시 만들 필요가 없습니다. c/C++에 대해 하나 이상의 AGI 인터페이스 구현이 있습니다.

agi 스크립트에는 sleep, threads, waits 등을 사용하지 마십시오.

AGI 아키텍처는 STD 입력으로 차단하는 예입니다. 그냥 입력을 기다립니다 (성병에서 읽기) 그리고 그것은 준비가되면 당신에게 정보를 반환합니다.

사용하는 경우, 이러한 메시지는 정상적이고 예상됩니다. 비 차단 버전의 절전 모드를 사용할 수 있습니다.

또한 DATA가 필요하지 않은 경우 GET DATA를 사용하지 않았습니다. 당신은 STREAM

+0

을 사용할 수 있습니다. 1) 이것은 학습 과정입니다. 그래서 이것이 제가 프로덕션 환경 asterisk-perl에 실제로 사용하는 이유입니다. 2) 나는 fgets를 사용했지만 대신에 Asterisk로부터 "200"대답을 받는다. 별표 - 펄은 같은 문제가 있다는 것을 기억합니다. 데이터를 얻기 전에 3 초간 침묵을 추가해야했습니다. –

+0

로그인하면 200이됩니다. 모든 응답을 읽었습니다. 별표 agi 일하는 ok. – arheops

+0

예 200은 괜찮습니다.하지만 별표를 사용하여 파일을 재생하도록 요청하면 적어도 잠자기를하지 않으면 별표를 재생해야합니까?. –