其实很简单啦,首先要搭好asterisk系统,八戒这里一直用的是elastix系统,升级到2.0了
写个网页,准备提交(这台机器的ip是192.168.1.1,而elastix是192.168.1.2):
<center><font class="title"><font face=verdana size=2>VOIP电话互通系统, 八戒制作</font></font></center>
<center>
<form method="POST" action="action.php" name="loginform">
<table border="0" cellspacing="2" cellpadding="4">
<tr>
<td bgcolor="#E2E2E2"><font face=verdana size=2>你的电话号码: </font></td>
<td bgcolor="#E2E2E2"><input type="text" name="user1" size="11"></td>
</tr>
<tr>
<td bgcolor="#E2E2E2"><font face=verdana size=2>你要拨打的电话号码: </font></td>
<td bgcolor="#E2E2E2"><input type="text" name="user2" size="11"></td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" value="提交"></p>
</td>
</tr>
</table>
</form>
</center>
重点是要剖析的action.php
<?php
$user1 = $_POST["user1"];
$user2 = $_POST["user2"];
$socket = fsockopen ("192.168.1.2", 5038, $errno, $errstr, 20);
fputs($socket, "Action: Login\r\n");
fputs($socket, "UserName: phpagi\r\n");
fputs($socket, "Secret: phpagi\r\n\r\n");
fputs($socket, "Action: Originate\r\n");
fputs($socket, "Channel: Local/00".$user1."@from-internal\r\n");
fputs($socket, "MaxRetries: 18\r\n");
fputs($socket, "RetryTime: 15\r\n");
fputs($socket, "WaitTime: 15\r\n");
fputs($socket, "Context: outrt-001-9_outside\r\n");
fputs($socket, "Exten: 00".$user2."\r\n");
fputs($socket, "Priority: 1\r\n\r\n");
$wrets=fgets($socket,128);
fclose($socket);
echo "<big>发送成功!!请等待拨叫.</big><br/>";
?>
这里有几个地方要注意:
一个就是 Local/00,主意这个00,因为是elasix接了2个分机的线,所以一个0是出elastix,一个0是出实际的分机。
outrt-001-9_outside已经被改,出局的号码由9改成了0。如果用缺省的,应该是Local/09和Exten: 09
还有就是这里用的是phpagi的方式,所以这台的ip必须是在phpagi允许访问的范围内,修改:
/etc/asterisk/manager_custom.conf
[phpagi]
secret = phpagi
deny=0.0.0.0/0.0.0.0
permit=192.168.1.1/255.255.255.0
read = system,call,log,verbose,command,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,log,verbose,command,agent,user,config,command,reporting,originate
然后asterisk -r -vvvvvgc
reload一下,开始通话吧,哈哈。
Popularity: 36% [?]