【问题标题】:Call hangup take time - asterisk dialplan呼叫挂断需要时间 - 星号拨号方案
【发布时间】:2014-09-15 13:51:16
【问题描述】:

我为我的 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 执行完成后调用 hangup 并且 my_uploader.php 执行需要时间。但我需要在播放感谢信息后立即挂断。系统只在通话完全挂断后执行 AGI 文件。我怎么解决这个问题 ?

【问题讨论】:

  • 你用的是女巫版的星号?由于 1.6 DeadAgi 已被弃用,在 h exten 中,您应该改用 AGI。您可以针对这种情况发布星号输出吗?因为我怀疑,感谢消息是在my_uploader 脚本之后播放的。
  • 我正在使用星号 11.9.0 并且模拟 pstn 已连接到星号服务器。感谢消息首先播放,my_uploader 最后执行

标签: asterisk


【解决方案1】:

那是因为你的拨号方案中有 h 个分机

因此,您在 h 扩展上的 agi 结束需要一些时间。

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

您的上传或转换任务很可能需要一些时间。您只需在 db 中的某处注明您必须做什么,并在外部线程中执行此操作,而不是在星号中。

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

【讨论】:

  • 如果我的拨号方案中没有包含 h 分机。通话挂断后如何运行我的脚本?
  • 我知道这是一个旧线程,但如果有人发现它,您可以在后台运行您的调用后处理 - 在命令末尾输入&
  • 它仍然会阻止星号。因为 & 将在 shell 的后台执行,所以 shell 仍然处于活动状态。您已经避免在 h 扩展中进行任何处理。只需将信息保存在 mysql 或其他队列中,并通过外部守护进程处理复杂/高延迟任务。
猜你喜欢
  • 1970-01-01
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多