⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asi.php

📁 最近在做软交换时研究的一个软交换的东东
💻 PHP
字号:
<?php/** * @file * Asterisk manager interface for access to asterisk api (astdb) *//**  * Asterisk Manager Interface  */class AsteriskManagerInterface {  var $socket;  /**   * constructor    */  function AsteriskManagerInterface() {  }  /*   * Reloads Asterisk Configuration   *   * @param $username   *   asterisk manager interface username   * @param $password   *   asterisk manager interface password    */  function connect($host,$username,$password) {    // connect    $fp = fsockopen($host, 5038, $errno, $errstr, 10);    if (!$fp) {      return FALSE;    }     else {      $buffer='';      if(version_compare(phpversion(), '4.3', '>=')) {        stream_set_timeout($fp, 5);      }       else {        socket_set_timeout($fp, 5);      }      $buffer = fgets($fp);      if (!preg_match('/Asterisk Call Manager/i', $buffer)) {        $_SESSION['ari_error'] = _("Asterisk Call Manager not responding") . "<br />\n";        return FALSE;      }      else {        $out="Action: Login\r\nUsername: ".$username."\r\nSecret: ".$password."\r\n\r\n";        fwrite($fp,$out);        $buffer=fgets($fp);        if ($buffer!="Response: Success\r\n") {          $_SESSION['ari_error'] =  _("Asterisk authentication failed:") . "<br />" . $buffer . "<br />\n";          return FALSE;        }        else {          $buffers=fgets($fp); // get rid of Message: Authentication accepted          // connected          $this->socket = $fp;        }      }    }    return TRUE;  }  /*   * Reloads Asterisk Configuration   */  function disconnect() {    if ($this->socket) {      fclose($this->socket);    }  }  /*   * Reloads Asterisk Configuration   *   * @param $command   *   Command to be sent to the asterisk manager interface    * @return $ret   *   response from asterisk manager interface    */  function command($command) {    $response = '';    fwrite($this->socket,$command);    $count = 0;    while (($buffer = fgets($this->socket)) && (!preg_match('/Response: Follows/i', $buffer))) {      if ($count>100) {        $_SESSION['ari_error'] =  _("Asterisk command not understood") . "<br />" . $buffer . "<br />\n";        return FALSE;      }      $count++;    }    $count = 0;    while (($buffer = fgets($this->socket)) && (!preg_match('/END COMMAND/i', $buffer))) {      if (preg_match('/Value/',$buffer)) {        $parts = split(' ',trim($buffer));        $response = $parts[1];      }      if ($count>100) {        $_SESSION['ari_error'] =  _("Asterisk command not understood") . "<br />" . $buffer . "<br />\n";        return;      }      $count++;    }    return $response;  }}  ?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -