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

📄 asterisk.class.php

📁 voip开源项目
💻 PHP
字号:
<?php
/*******************************************************************************
* asterisk.class.php
* astercrm asterisk class

* Revision 0.0456  2007/11/9 10:33:00  modified by solo
* Desc: change .abc to .call

* Revision 0.0451  2007/10/24 20:33:00  modified by solo
* Desc: add function sendCall

********************************************************************************/
require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'phpagi-asmanager.php');

class Asterisk extends AGI_AsteriskManager{

	function dropCall($sID,$arrayPara){
		if (!isset($arrayPara['MaxRetries']) || $arrayPara['MaxRetries'] == '')
			$arrayPara['MaxRetries'] = 0;

		$callfile = "";
		$callfile = $callfile."Channel:".$arrayPara['Channel']."\r\n";
		$callfile = $callfile."WaitTime:".$arrayPara['WaitTime']."\r\n";
		$callfile = $callfile."Extension:".$arrayPara['Exten']."\r\n";
		$callfile = $callfile."Context:".$arrayPara['Context']."\r\n";
		$callfile = $callfile."Priority:".$arrayPara['Priority']."\r\n";
		$callfile = $callfile."MaxRetries:".$arrayPara['MaxRetries']."\r\n";
		$callfile = $callfile."CallerID:".$arrayPara['CallerID']."\r\n";
		$callfile = $callfile."ActionID:".$arrayPara['ActionID']."\r\n";

		// send accountcode	added by solo 2007-11-9
		if (isset($arrayPara['Account']))
			$callfile = $callfile."Account:".$arrayPara['Account']."\r\n";
		else
			$callfile = $callfile."Account:".$arrayPara['CallerID']."\r\n";	


		if ($arrayPara['Variable'] != '')
			foreach ( split("\|",$arrayPara['Variable']) as $strVar)
				$callfile = $callfile."SetVar: $strVar\r\n";


		$filename="/tmp/$sID.call";
		$handle=fopen($filename,"w+");
		fwrite($handle,$callfile);

//		system("chown asterisk.asterisk /tmp/$filename");
		@chmod   ($filename,   0777);
		system("mv $filename /var/spool/asterisk/outgoing/");
		return $callfile;
	}

	function sendCall($channel,
                       $exten=NULL, $context=NULL, $priority=NULL,
                       $application=NULL, $data=NULL,
                       $timeout=NULL, $callerid=NULL, $variable=NULL, $account=NULL, $async=NULL, $actionid=NULL){
		
      $req = "Action: Originate\r\n";
      $parameters = array('Channel'=>$channel);

      if($exten) $parameters['Exten'] = $exten;
	
	  //$parameters['Accountcode'] = $exten;

      if($context) $parameters['Context'] = $context;
      if($priority) $parameters['Priority'] = $priority;

      if($application) $parameters['Application'] = $application;
      if($data) $parameters['Data'] = $data;

      if($timeout) $parameters['WaitTime'] = $timeout;
      if($callerid) $parameters['CallerID'] = $callerid;
      if($variable) $parameters['Variable'] = $variable;
      
	  if($account) 
		  $parameters['Account'] = $account;
	  else
		  $parameters['Account'] = $callerid;


      if(!is_null($async)) $parameters['Async'] = ($async) ? 'true' : 'false';
      if($actionid) $parameters['ActionID'] = $actionid;

      foreach($parameters as $var=>$val)
        $req .= "$var: $val\r\n";
      $req .= "\r\n";
		//print 
	  //print $req;
	  //exit;
      fwrite($this->socket, $req);
	  return;
	}

	function getSipChannels(){
		global $config;
		$myAsterisk = new Asterisk();
		$myAsterisk->config['asmanager'] = $config['asterisk'];
		$res = $myAsterisk->connect();
		$channels = $myAsterisk->Command("sip show channels");
		$myAsterisk->disconnect();
		return  $channels['data'];
	}

	function getChannels($verbose = null){
		global $config;
		$myAsterisk = new Asterisk();
		$myAsterisk->config['asmanager'] = $config['asterisk'];
		$res = $myAsterisk->connect();
		$channels = $myAsterisk->Command("show channels");	
		$myAsterisk->disconnect();
		return  $channels['data'];
	}

	function getCommandData($command){
		global $config;
		$myAsterisk = new Asterisk();
		$myAsterisk->config['asmanager'] = $config['asterisk'];
		$res = $myAsterisk->connect();
		$channels = $myAsterisk->Command("show channels verbose");	
		$myAsterisk->disconnect();
		return  $channels['data'];
	}

	function getPeerIP($name, $type = 'sip'){
		global $config;
		$myAsterisk = new Asterisk();
		$myAsterisk->config['asmanager'] = $config['asterisk'];
		$res = $myAsterisk->connect();
		$peer = $myAsterisk->Command($type." show peer ".$name);	
		$myAsterisk->disconnect();
		$peer = $peer['data'];
		$peer =split(chr(10),$peer);
		return $peer[31];
	}

	function getPeerStatus($name, $type = 'sip'){
		global $config;
		$myAsterisk = new Asterisk();
		$myAsterisk->config['asmanager'] = $config['asterisk'];
		$res = $myAsterisk->connect();
		$peer = $myAsterisk->Command($type." show peer ".$name);	
		$myAsterisk->disconnect();
		$peer = $peer['data'];
		$peer =split(chr(10),$peer);
		return $peer[37];
	}

	/*
	*	$spy:		鐩戝惉鏂

⌨️ 快捷键说明

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