我正在使用PHP和Asterisk服务器开发应用程序.该应用程序的一个功能是检查特定呼叫者ID的呼叫状态(振铃,应答,挂起...),所以我想知道如何做到这一点,因为我正在尝试使用套接字和命令状态,但我认为它必须是一个更好的方法.
提前致谢.
你用什么 API 来编写这个程序?AMI?通用人工智能?快速AGI?死AGI?调用文件?有很多方法可以获取此信息。
注意:除非您使用呼叫文件和/或 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 在通话文件的底部附加了一个状态,它将告诉您通话的最终状态。
获取此信息的最佳方法是让 PHP 脚本从 Asterisk 服务器上的 CDR 记录中读取。将您的 CDR 记录记录到 MySQL 数据库,然后从数据库中提取您的呼叫记录。