2011-01-27 3 views
0

나는 별표에 내 extensions.conf에서 다음을 수행 할 :기능 - 별표

  1. 읽기 사용자가 입력 한 숫자에서. - 쉽게
  2. 그 번호를 wav 파일을 반환하는 스크립트에 입력하십시오.
  3. 이 wav 파일이 재생됩니다.

나는 system 명령을 알고 있지만 값을 반환하는 방법을 찾아 내지 못했습니다.

어떤 도움이 가장 환영

,
감사합니다,
스리 람.

답변

0

프로그램/스크립트에서 값을 파일에 쓰게 한 다음 별표 (예 : ReadFile) 내의 함수를 사용하여 값을 얻을 수 있습니다. 스크립트 내에서

:이은과 같이 수행 할 수 있습니다
echo -n ${value} > ${fileName}

별표 내에서 :
exten => 0,n,ReadFile(ValueReadFromFile=${fileName},${MAX_FILE_CHAR})

: ${MAX_FILE_CHAR}는 최대이다. 파일에서 읽어야하는 문자 ${fileName}. 읽으려는 값은 ValueReadFromFile에 저장됩니다.

1

그런 경우에는 Asterisk AGI을 사용합니다. 아이디어는 웹 서버의 CGI 스크립트와 유사합니다. 다양한 언어를 사용할 수 있지만, 파이썬에는 pyst: Python for Asterisk 라이브러리가 사용됩니다. 이러한 AGI 스크립트/프로그램은 채널 변수를 읽거나 설정할 수 있으며이 방법은 Asterisk 다이얼 플랜과 통신합니다. pyst agilib와 같은 코드의

예 :

wav_to_play = 'other.wav' 
user_nr = agilib.get_variable('user_entered_number') 
if not user_nr: 
    wav_to_play = 'nothing.wav' 
elif user_nr.endswith('0'): 
    wav_to_play = 'zero.wav' 
# ... 
agilib.set_variable('wav_selected', wav_to_play) 

wav_selector.agi 이러한 코드를 저장 한 후 (당신이 libs와 등, 일반 파이썬 헤더를 추가해야합니다) 당신이 좋아하는 dialplan을에서 사용할 수 있습니다 :

exten => s,n,Set(user_entered_number=5) 
exten => s,n,AGI(wav_selector.agi) 
exten => s,n,Background((${wav_selected})