呼叫挂断需要时间 - 星号拨号方案

时间:2014-09-12 06:12:33

标签: asterisk

我为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文件。我怎么解决这个问题 ?

1 个答案:

答案 0 :(得分:0)

多数是你的拨号方案中有h分机

因此,当您延长h-extension时,需要一段时间。

您可以使用cdr info并基于此运行外部脚本。您可以在hexten(而不是agi)上编写dialplan。你可以更快地写(不阻塞)agi。

您上传或转换的任务很可能需要时间。你只需要在db中的某个地方注明你需要做什么,并在外部线程中执行,而不是在星号中。

这样你就不会阻止星号线程了。