qq_26784109 2023-01-12 22:22 采纳率: 0%
浏览 60
已结题

Freepbx搭建和前端的连接

需要一个云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()函数将响应拆分成行。遍历每行并将其输出。
    仅供参考,望采纳,谢谢。

    展开全部

    评论
  • hurp13 2023-01-13 02:58
    关注

    您可以使用 FreePBX 作为您的云电话系统。FreePBX 是一个开源的电话系统管理平台,可以帮助您管理 SIP 号码和通话记录。您可以安装在您的云服务器上,这样就可以通过互联网进行管理。

    您可以使用 Asterisk Manager Interface (AMI) 和 Asterisk REST Interface (ARI) 来收集和访问通话记录数据。AMI 是一种用于管理 Asterisk 服务器的接口,可以用来监控实时呼叫信息并执行控制操作。

    评论
  • BLOOMOK 2023-01-13 03:56
    关注

    FreePBX是一个开源的电话系统管理平台,它可以帮助您管理您的SIP号码,并将CDR(呼叫详单)数据传递给前端应用程序。

    对于您的要求,您可以使用Asterisk Manager Interface (AMI) 或 Asterisk REST Interface (ARI) 来实现实时来电信息的获取。

    AMI是Asterisk的一个内部接口,它允许您通过TCP连接来管理Asterisk服务器。您可以使用它来发送命令并获取实时状态信息。您可以使用AMI来获取实时来电信息,并将其传递给您的前端应用程序。

    ARI是Asterisk的另一个接口,它允许您使用HTTP请求来管理Asterisk服务器。您可以使用它来获取实时来电信息,并将其传递给您的前端应用程序。

    此外,您还可以使用FreePBX本身提供的API来获取CDR数据,并将其传递给您的前端应用程序。

    评论
  • 鑫鑫缺点金 2023-01-13 05:55
    关注

    您可以使用FreePBX系统来管理您的SIP号码。FreePBX是一个开源的电话系统管理平台,可以帮助您管理SIP号码、呼叫转移、IVR等功能。您可以在云上部署FreePBX系统,并使用Asterisk Manager Interface (AMI) 或Asterisk REST Interface (ARI) 来访问系统的API。 AMI和ARI都是Asterisk的API,可以帮助您编写代码来访问FreePBX系统的功能。您可以使用这些API来收集CDR数据并将其传递给前端应用程序。您还可以使用API来获取即时呼叫信息,并将其显示在网页上。

    评论
  • 五度鱼Java 2023-01-15 09:04
    关注

    在 add() 方法中,插入数据并返回新插入的 ID。在 __call() 方法中,判断后面是否还有其他需要执行的方法,如果有则返回 $this,没有则返回新插入的 ID。
    示例:

    class DB{
        private $last_insert_id;
    
        public function add($data){
            // insert data and get last insert id
            $this->last_insert_id = $id;
            return $this;
        }
    
        public function __call($method, $args){
            if(method_exists($this, $method)){
                call_user_func_array([$this, $method], $args);
                return $this;
            }
            else{
                return $this->last_insert_id;
            }
        }
    }
    
    $db = new DB();
    $res = $db->add(['name'=>'王富贵','age'=>23])->select();
    echo $res;
    
    
    

    这样的话,当你调用$db->add(['name'=>'王富贵','age'=>23])->select()时,因为__call方法中返回了$this,所以会继续调用select()方法,如果是$db->add(['name'=>'王富贵','age'=>23])时,因为__call方法中返回了last_insert_id,所以会返回新插入数据的ID。
    望采纳,谢谢!

    评论
  • 哇小侠 2023-01-18 16:40
    关注

    您可以使用云 FreePBX 系统来管理您的 SIP 号码。FreePBX是一个开源的电话系统平台,提供了许多功能,包括呼叫转移、自动应答、会议等。

    您可以使用 Asterisk Manager Interface (AMI) 或 Asterisk REST Interface (ARI) 来获取系统中的通话记录数据 (CDR) 。AMI 提供了一组命令,允许管理员远程监控和控制 Asterisk 系统。而ARI 是一个 web-based API, 提供了对Asterisk 的高级控制,适用于Asterisk 11及以上版本。

    您可以使用这些 API 来获取实时通话信息,并将其传递给您的前端应用程序。您可以使用 Node.js 等服务端语言来实现对 API 的调用,并将数据存储在数据库中。

    在实现这些功能之前,您需要对 Asterisk 和 FreePBX 系统有一定的了解,并确保您有足够的编程知识

    评论
  • 天寒雨落 全栈领域新星创作者 2023-01-19 07:50
    关注

    可以尝试使用第三方库或API封装层来简化使用。例如,可以使用node-ari-client库或PHPAGI类库来调用ARI接口。

    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 1月20日
  • 创建了问题 1月12日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部