需要一个云FreePBX系统来管理我的sip号码。同时,我需要把数据库中存储所有的CDR(包括来电和呼出等)传递给一个前端应用。此外,即时来电信息(如号码,接听、挂断、保持)需要显示在我的前端应用程序的一个网页上。暂时想到的是AMI,ARI等asterisk API调用。但不熟悉此类API,希望付费需求大家帮助解决。谢谢。此问答仅为描述现象,欢迎感兴趣者进一步联系。
7条回答 默认 最新
- |__WhoAmI__| 2023-01-13 01:10关注
可以使用Asterisk Manager Interface (AMI)或Asterisk REST Interface (ARI)等API来获取数据。
AMI是一个Asterisk的管理接口,提供了电话状态信息和控制命令,例如挂断电话等。
ARI是Asterisk的一种新的开发接口,提供了与AMI相同的功能,但是通过HTTP和Websocket来访问。
可以在FreePBX上安装一个AMI模块,并使用AMI的API来获取CDR数据和即时来电信息。然后通过web API将这些信息发送到前端应用程序。
在使用这些API之前,需要先学习相关知识,并且熟悉Asterisk相关的概念,然后再根据需求来编写代码。
实现思路:
1、需要先在云上搭建一个FreePBX系统,并配置好SIP号码。2、安装AMI模块,并在FreePBX中启用AMI。这样可以访问Asterisk管理接口。
3、编写代码来使用AMI API获取CDR数据和即时来电信息。可以使用PHP或其他编程语言来编写代码。
4、创建一个web API来将获取的数据发送到前端应用程序。这样前端应用程序就可以通过调用web API来获取数据。
5、在前端应用程序中编写代码来显示CDR数据和即时来电信息。可以使用Javascript等编程语言来实现。
6、完成这些步骤后,系统就可以实时显示来电信息和CDR数据,并且可以通过FreePBX管理SIP号码。
7、测试和调试 系统,确保数据能正常传递,并且符合需求。
使用PHP编写的示例代码,用于使用AMI获取CDR数据。
<?php // Connect to AMI $socket = fsockopen("127.0.0.1", "5038", $errno, $errstr, 30); if (!$socket) { die("Could not connect to AMI: $errstr ($errno)\n"); } // Login fputs($socket, "Action: Login\r\n"); fputs($socket, "Username: admin\r\n"); fputs($socket, "Secret: admin\r\n"); fputs($socket, "Events: off\r\n\r\n"); // Send the GetCDRAction fputs($socket, "Action: GetCDRAction\r\n"); fputs($socket, "ActionID: 123\r\n"); fputs($socket, "Filter: channel=SIP/1234\r\n\r\n"); // Read the response $response = ""; while (!feof($socket)) { $response .= fgets($socket, 1024); } // Close the connection fclose($socket); // Process the response $lines = explode("\r\n", $response); foreach ($lines as $line) { if (strlen($line) > 0) { list($key, $value) = explode(":", $line); echo "$key = $value\n"; } } ?>
这段代码使用fsockopen()函数连接到AMI,使用fputs()函数发送登录求和获取CDR数据的求。然后使用fgets()函数读取响应,并使用explode()函数将响应拆分成行。遍历每行并将其输出。
仅供参考,望采纳,谢谢。解决 无用评论 打赏 举报