Asterisk 电话挂断需要时间-星号拨号计划

Asterisk 电话挂断需要时间-星号拨号计划,asterisk,Asterisk,我为我的星号系统写了拨号计划。扩展名.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=

我为我的星号系统写了拨号计划。
扩展名.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执行需要时间之后,调用挂起。但我需要在播放感谢信息后立即挂断。系统仅在呼叫完全挂断后执行AGI文件。我怎样才能解决这个问题

那是因为你的拨号计划中有h分机

因此,当您在h扩展端进行agi时,这需要时间

您可以使用cdr info并在此基础上运行外部脚本。您可以在hexten(非agi)上编写拨号计划。agi可以写得更快(不阻塞)

很可能你的上传或转换任务需要时间。您只需在db中的某个地方记下您必须执行的操作,并在外部线程中执行,而不是在星号中


这样,您就不会阻止星号线程。

您正在使用的星号版本是什么?由于1.6 DeadAgi已被弃用,在h exten中,您应该改用AGI。你能为这种情况发布星号输出吗?因为我怀疑,感谢信息是在
my_uploader
脚本之后播放的。我使用的是asterisk 11.9.0,模拟pstn连接到asterisk服务器。如果我的拨号计划中没有h分机,则首先播放感谢信息,最后执行我的上传程序。呼叫挂断后如何运行脚本?我知道这是一个旧线程,但如果有人发现,您可以在后台运行呼叫后处理-在命令末尾放置
&
。它仍然会阻止星号。因为&将在shell的后台执行,shell仍然处于活动状态。您必须避免在h扩展中进行任何处理。只需将信息保存在mysql或其他队列中,并通过外部守护进程处理复杂/高延迟任务。