我为Asterisk系统编写了拨号方案。 extension.conf
是:
的extensions.conf
[from-pstn]
exten =>s,1,Verbose(1, Caller ${CALLERID(all)} has entered the paf IVR)
same=>n,Answer()
same=>n,Wait(3)
same=>n,Playback(welcome)
same=>n,GoSub(post,ss,1)
same=>n,Playback(thanks)
same=>n,Hangup()
[post]
include => default_cont
exten => ss,1,Background(gud/post)
same=>n,WaitExten(5)
exten => 1,1,Set(CDR(aa)=136)
same=>n,Return()
exten => 2,1,Set(CDR(aa)=137)
same=>n,Return()
[default_cont]
exten => i,1,Playback(invalid)
same=> n,Hangup()
exten => t,1,Playback(timeout)
same=> n,Hangup()
exten => h,1,DeadAGI(convert_recordings.sh)
same=>n,DeadAGI(my_uploader.php,${var1},${CALLERID(num)},${CDR(var2)},${CDR(aa)})`
当我打电话给我的星号系统时。播放感谢音频文件后需要时间来挂断。实际上,在完成所有AGI执行并且my_uploader.php执行需要时间后调用hangup。但是在播放感谢信息后我需要立即挂断。系统仅在完全挂断呼叫后执行AGI文件。我怎么解决这个问题 ?
答案 0 :(得分:0)
多数是你的拨号方案中有h分机
因此,当您延长h-extension时,需要一段时间。
您可以使用cdr info并基于此运行外部脚本。您可以在hexten(而不是agi)上编写dialplan。你可以更快地写(不阻塞)agi。
您上传或转换的任务很可能需要时间。你只需要在db中的某个地方注明你需要做什么,并在外部线程中执行,而不是在星号中。
这样你就不会阻止星号线程了。