环境说明:

Elastix 2.5

ln -s /var/spool/asterisk/monitor /var/www/html/

接口文件(php):

$con=mysql_connect("localhost","root","passwd");

if(!$con) echo "没有连接成功!";

mysql_select_db("asteriskcdrdb", $con);

mysql_query("SET NAMES UTF8");

if(isset($_GET["phone"])){

$phone=$_GET["phone"];

if(isset($_GET["date"])){

$calldate=$_GET["date"];

$q = "SELECT * FROM `cdr` WHERE `dst`='$phone' and cast(`calldate` as date)='$calldate' order by `calldate` desc limit 100"; //此处注意dst和src

}else{

$q = "SELECT * FROM `cdr` WHERE `dst`='$phone' order by `calldate` desc limit 100";

}

$result = mysql_query($q, $con);

if(mysql_num_rows($result)>0){

while($obj=mysql_fetch_object($result)){

$obj->src;

$obj->dst;

$obj->channel;

$obj->billsec;

$obj->calldate;

$recordingfile = $obj->recordingfile;

if($recordingfile){

$a = explode("-",$recordingfile);;

$subdir = substr($a[3],0,4)."/".substr($a[3],4,2)."/".substr($a[3],6,2);

$uri = "/monitor/$subdir/$recordingfile";

}else{

$uri='';

}

echo $obj->src.",".$obj->dst.",".$obj->channel.",".$obj->dstchannel.",".$obj->disposition.",".$obj->billsec.",".$obj->calldate.",".$uri."\n";

}

}

}

mysql_free_result($result);

mysql_close($con);

?>

客户端程序(Autohotkey):

FileCreateDir, %A_ScriptDir%\sox

FileCreateDir, c:\temp\

FileInstall, libgomp-1.dll, %A_ScriptDir%\sox\libgomp-1.dll

FileInstall, pthreadgc2.dll, %A_ScriptDir%\sox\pthreadgc2.dll

FileInstall, sox.exe, %A_ScriptDir%\sox\sox.exe

FileInstall, zlib1.dll, %A_ScriptDir%\sox\zlib1.dll

gui, Add, text, x0 y0 w60 h20, 号码

gui, Add, edit, x60 y0 w140 h20 vphone,

Gui, Add, Checkbox, x200 y0 w100 h20 vcd, 呼叫时间

Gui, add, DateTime, x300 y0 w200 h20 vdate,

Gui, Add, Button, x500 y0 w100 h20 Default gsearch, 查询

Gui, Add, Button, x600 y0 w100 h20 glisten, 听取所选

gui, add, ListView, x0 y20 w700 h300, 被叫|主叫|通道|目标通道|状态|通话时长|呼叫时间|录音链接

Gui, Add, ActiveX, x0 w700 h100 vwmp, {6BF52A52-394A-11D3-B153-00C04F79FAA6}

gui, show, , 本地呼叫系统录音听取

GuiControl, , cd, 1

wmp.Settings.Volume := 100

return

search:

Gui, Submit, NoHide

if cd=1

{

FormatTime, calldate, % date, yyyy-MM-dd

search_url := "http://192.168.1.2/monitor.php?phone=" phone "&date=" calldate

}

else

search_url := "http://192.168.1.2/monitor.php?phone=" phone

result := URLDownloadToVar(search_url)

LV_Delete()

loop, Parse, result, `n, `r

{

obj := StrSplit(A_LoopField,",")

LV_Add("",obj*)

}

LV_ModifyCol()

return

listen:

FocusedRowNumber := LV_GetNext(0, "F")

if not FocusedRowNumber

{

MsgBox, 4144, 提示, 您未选择任何一条记录!

Return

}

LV_GetText(uri, FocusedRowNumber, 8)

if uri

{

url := "http://192.168.1.2" uri

if RegExMatch(uri,".*/(.*)\.gsm$",m)

{

URLDownloadToFile, % url, % "c:\temp\" m1 ".gsm"

RunWait, %A_ScriptDir%\sox\sox.exe c:\temp\%m1%.gsm c:\temp\%m1%.wav rate -v, , hide

}

else

{

RegExMatch(uri,".*/(.*)\.wav$",m)

URLDownloadToFile, % url, % "c:\temp\" m1 ".wav"

}

wmp.Url := "c:\temp\" m1 ".wav"

}

else

MsgBox, 64, 提示, 录音链接不存在!

return

GuiClose:

ExitApp

autohotkey php,Autohotkey+php实现免浏览器听录音相关推荐

  1. AutoHotkey纯命令获取Chrome等浏览器的当前网址

    网上大部分都是模拟手工操作(激活地址栏并复制)的方式获取,从论坛里找到了纯命令的方式,并已转成AutoHotkey v2版本. 是通过浏览器的class类来获取的,相信用AutoHotkey的人对此不 ...

  2. chrome浏览器不能录音:Uncaught TypeError: Cannot read property ‘getUserMedia‘ of undefined解决方法

    Uncaught TypeError: Cannot read property 'getUserMedia' of undefined解决方法 javascript 打不开浏览器录音功能的问题解决方 ...

  3. 13典藏AutoHotKey脚本让您生活更轻松

    AutoHotKey是最好的Windows自动化程序之一,可以执行最简单的操作到最艰巨的任务.AutoHotKey是一个免费的开源程序,通过这种脚本语言您的任何Windows日常任务.即使" ...

  4. AutoHotkey热键脚本语言文件

    ;=== AutoHotkey热键脚本语言文件 autoHotkey.ini 从此行开始 === The Sart Line Of autoHotkey.ini AutoHotkey ScriptFi ...

  5. autohotkey入门_AutoHotkey-入门

    autohotkey入门 Introduction 介绍 I have published numerous articles and five-minute video Micro Tutorial ...

  6. netbeans 代码对齐_加快开发速度:NetBeans代码模板,AutoHotKey和Ditto

    netbeans 代码对齐 Writing an application in PHP or any other language is both a rewarding and sometimes ...

  7. AutoHotKey写一个改键的小脚本

    应D君邀请写一个小的改键软件,用了一上午选择使用的脚本语言,下午开始去写.晚饭的时候,基本的功能完成了.先所说我要完成的脚本的功能吧.软件有一定编程基础的D君用,用户比较特定,功能越简单越好.因此,软 ...

  8. CLAN Studio Toolkits - AutoHotkey

    CLAN Studio Toolkits - AutoHotkey 仓库地址:CSTK_AutoHotkey 下载地址:CLAN AHK.exe SHA-256:64089534c29f18a46b3 ...

  9. AutoHotkey 与 AutoIt 的恩恩怨怨

    对AutoHotkey 和 AutoIt 都感兴趣的不妨看看. 首先有必要让大家了解一点:AutoHotkey和AutoIt的主作者分别是Chris和Jon. AutoHotkey 发布过的最古老的b ...

最新文章

  1. 软件测试培训分享:做软件测试需要掌握数据库的知识吗?
  2. linux服务管理命令systemctl
  3. android工程创建,3.2.1 创建Android 项目(2)
  4. Docker深入浅出2
  5. linux 怎么创建接口文件,我们如何在Linux上创建多个虚拟接口?
  6. js 取得数组下标_剖析JS和Redis的数据结构设计:数组
  7. python的random模块怎么写_Python常用标准库之random模块
  8. Windows Print Spooler服务最新漏洞CVE-2021-34527详解
  9. 这是一台家庭计算机重启无效,我买了一台二手计算机,配置还可以,但有时会自动重启机器,这是为什? 爱问知识人...
  10. 打造丝般顺滑的 H5 翻页库(传送门)
  11. ubuntu vscode通过cmake配置c++和VS2019一样 进行调试
  12. 蓝桥杯2016年七届C/C++省赛C组第一题-报纸页数
  13. 从计算机复试看中国教育——一个面试官的经历
  14. opengl 光线追踪_Vulkan的视频编解码支持将于2020年上半年加入,光线追踪也在路上...
  15. 金仓数据库 Oracle 至 KingbaseES 迁移最佳实践 (4. Oracle数据库移植实战)
  16. imac 蓝牙机械键盘_最好的蓝牙机械键盘
  17. Glide 缓存机制分析二,内存缓存(3.7.0为例 5)
  18. 计算机专业ib选课,IB 课程里,总算发现一个貌似容易的学科了!
  19. 【nexys3】【verilog】小设计——拆弹游戏
  20. 【论文阅读】Tensor Fusion Network for Multimodal Sentiment Analysis

热门文章

  1. Android之moveTaskToBack()方法实现手动隐藏当前Activity
  2. spring之使用Spring Security实现权限管理
  3. php基础教程 第二步 通俗易懂的学习变量、常量与数据类型
  4. python3.6字典有序_为什么从Python 3.6开始字典有序并效率更高
  5. 请问:如何写出没有BUG的代码?
  6. 一分钟教你用Excel从统计局抓数据!
  7. 普通程序员转型深度学习指南
  8. android什么是回调,Android中的回调是什么?
  9. java 有没有with语句_Java中的try-with-resources语句
  10. python统计出现的中文标点_Python处理中文标点符号大集合