星号:don';不要等到AGI脚本(bash)完成后再继续拨号计划

星号:don';不要等到AGI脚本(bash)完成后再继续拨号计划,bash,asterisk,agi,Bash,Asterisk,Agi,我有一个星号拨号计划,它执行一个bash脚本,该脚本将被调用方与数据库相匹配,以地理定位调用方(通过匹配国家和地区代码)。由于数据库相当大(全局规模),因此需要15秒才能完成 我需要在接听电话后立即运行此脚本(以防用户在通话结束前挂断电话),但不希望用户等待脚本执行。理想情况下,返回值应该在挂断前的拨号计划结束时处理 问题1:我找到了解决perl脚本问题的方法。如何在bash中实现同样的功能?我知道我可以通过在末尾添加一个“&”将任何bash脚本发送到后台,但我不知道如何在dialplan/使用

我有一个星号拨号计划,它执行一个bash脚本,该脚本将被调用方与数据库相匹配,以地理定位调用方(通过匹配国家和地区代码)。由于数据库相当大(全局规模),因此需要15秒才能完成

我需要在接听电话后立即运行此脚本(以防用户在通话结束前挂断电话),但不希望用户等待脚本执行。理想情况下,返回值应该在挂断前的拨号计划结束时处理

问题1:我找到了解决perl脚本问题的方法。如何在bash中实现同样的功能?我知道我可以通过在末尾添加一个“&”将任何bash脚本发送到后台,但我不知道如何在dialplan/使用AGI脚本时做到这一点

问题2:即使用户在拨号计划“退出非零”之前挂断电话,我如何处理这些值


谢谢你的帮助

使用fastagi接口。或使用AMI侦听器触发UserEvent

AGI的设计目的不是按照您想要的方式工作,因此它不会工作


当然,您可以使用nohup命令来获取不朽的bash脚本,但事实并非如此。

您能详细说明一下吗?使用fastAGI是否会更好,因为我可以将负载分配给其他机器,还是可以在脚本运行时继续执行拨号计划,然后在以后处理返回值?fastAGI是外部TCP服务器。您可以将消息放在服务器中,也可以做任何您想做的事情。Connect将关闭,但线程通常不会关闭(取决于服务器实现)。例如,如果用户perl Asterisk::FastAGI,您可以只将函数映射到dialplan,然后在需要时将相同的调用引用到其他函数等。您可以使用AMI执行调用操作(从FastAGI服务器到Asterisk的通信),或者您可以要求Asterisk dialplan执行其他操作,无论您想要什么。感谢您的澄清。我对这一切都很陌生,所以这很有帮助。我将在接下来的几天内尝试实现这一点,但无论如何我都会将问题标记为已解决。谢谢