我正在使用PHP和Asterisk服务器开发应用程序.该应用程序的一个功能是检查特定呼叫者ID的呼叫状态(振铃,应答,挂起…),所以我想知道如何做到这一点,因为我正在尝试使用套接字和命令状态,但我认为它必须是一个更好的方法.
提前致谢.
最佳答案:
你用什么API来编写这个程序? AMI? AGI? FastAGI? DeadAGI?调用文件?有很多方法可以获得这些信息.
注意:除非使用呼叫文件和/或CDR访问,否则您无法判断某个频道是否已挂起.
使用AMI,您可以使用Status命令(此处记录:http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+Status).
使用AGI,您将知道您的程序确定的状态.如果您仍在AGI脚本中,则呼叫仍在进行中且已经应答.
如果您正在使用调用文件,并且Archive属性设置为“yes”,那么一旦调用完成,您就可以检查调用文件的outoing_done目录(通常是/ var / lib / asterisk / outgoing_done /).当您读取调用文件时,您会注意到Asterisk在调用文件的底部附加了一个状态,该状态将告诉您调用的最终状态.
获取此信息的最佳方法是从Asterisk服务器上的CDR记录中读取PHP脚本.让您的CDR记录登录到MySQL数据库,然后从数据库中提取您的呼叫记录.