- 浏览: 417515 次
-
文章分类
- 全部博客 (327)
- Android (114)
- Java (13)
- Java基础 (14)
- Glib (2)
- linux (15)
- extjs (5)
- eclipse (2)
- Asterisk (56)
- MYSQL (6)
- 数据库 (9)
- PHP (7)
- C# (18)
- 杂谈~~ (1)
- web开发前端 (3)
- 网络编程 (2)
- Opensips (2)
- voip (3)
- debian (7)
- openfire (15)
- wordpress (1)
- 版本控制 (1)
- Android 线程服务广播 (1)
- SRTP (2)
- 单片机及ARM等 (3)
- 基础知识 (5)
- asp.net (2)
- 单片机 (1)
- 设计模式及架构 (1)
- 安全 (1)
- Cubieboard 草莓树莓各类派 Android开发板 (1)
- J2EE (2)
- BootStrap (3)
- BootStrap web前端开发 (1)
- web前端开发 (4)
- object-c (1)
- openwrt (8)
- 智能家居 (4)
- Node.js (4)
最新评论
-
xiaoxiecomeon:
你这个程序一存在线程的时间片相互抢占的问题,运行时间长了很可能 ...
Runnable 和 Thread -
dotjar:
我觉得话应该这么说:引用TestThread tt = new ...
Runnable 和 Thread -
dagf113225:
调用TelephonyManager的隐藏API是先参考Fra ...
Android提高第十四篇之探秘TelephonyManager
本文旨在解决asterisk电话录音后wav转mp3以及加密录音文件问题
首先上拨号规则(/etc/asterisk/extensions.conf):
[macro-Monitor]
exten => s,1,Set(PATH=/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y-%m-%d)})
exten => s,n,Set(FILENAME=${STRFTIME(${EPOCH},,%Y-%m-%d-@-%H:%M:%S)}--${CALLERID(num)}-${DIALEDPEERNUMBER:2})
exten => s,n,Set(MONITOR_EXEC=/etc/asterisk/scripts/mce ${PATH} ${FILENAME})
exten => s,n,Monitor(wav,${PATH}/${FILENAME},mb)
然后你需要在/etc/asterisk/features.conf添加几条新规则:
Monitor => #1,caller,Macro,Monitor ;Allow the caller to initialize a calling monitor
pauseMonitor => #2,self/caller,PauseMonitor ;Allow the caller to pause monitoring on their channel
unpauseMonitor => #3,self/caller,UnPauseMonitor ;Allow the caller to unpause monitoring on their channel
这样你就可以在通话时按电话机的#1,#2,#3组合键来实现:录音,暂停录音,继续录音功能了
怎么调用这些功能呢,去你想要这些功能生效的context,在context的第一行插入如下命令:
exten => s,1,Set(DYNAMIC_FEATURES=Monitor#pauseMonitor#unpauseMonitor)
如果想对每个通话都录音,那么你需要这么一个宏:
[macro-outbound]
exten => s,1,Set(PATH=/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y-%m-%d)})
exten => s,n,Set(FILENAME=${STRFTIME(${EPOCH},,%Y-%m-%d-%H%M%S)}--${CALLERID(num)}-${ARG2})
exten => s,n,Set(MONITOR_EXEC=/etc/asterisk/scripts/mce ${PATH} ${FILENAME})
exten => s,n,Monitor(wav,${PATH}/${FILENAME},mb)
exten => s,n,Dial(${ARG1}/${ARG2},,tTm)
调用这个宏:
exten => _NXXXXXXX,1,Macro(outbound,DAHDI/1,${EXTEN})
exten => _NXXXXXXX,n,Macro(outbound,DAHDI/2,${EXTEN})
exten => _NXXXXXXX,n,Macro(outbound,DAHDI/3,${EXTEN})
exten => _NXXXXXXX,n,Macro(outbound,SIP/T,008621${EXTEN})
exten => _NXXXXXXX,n,Macro(outbound,SIP/S,008621${EXTEN})
exten => _NXXXXXXX,n,Congestion()
下面给出monitor_exec执行的脚本,在/etc/asterisk 目录下建个新目录用于存放脚本,此脚本名为mce(意为mix convert encrypt)
继续之前请确认你安装了以下软件包及其依赖关系包,它们是:gnupg、lame、sox
脚本正文:
# /bin/bash
KEY='Asterisk Server'
#you should never change the variables below
GPG=/usr/bin/gpg
LAME=/usr/bin/lame
RM=/bin/rm
SOX=/usr/bin/sox
PATH=$1
FILENAME=$2
mix() {
$SOX -m "$PATH/$FILENAME-in.wav" "$PATH/$FILENAME-out.wav" "$PATH/$FILENAME.wav"
$RM $PATH/$FILENAME-*.wav
}
convert() {
$LAME -b16 --noshort -S $PATH/$FILENAME.wav $PATH/$FILENAME.mp3
$RM $PATH/$FILENAME.wav
}
encrypt() {
$GPG --homedir /var/lib/asterisk/\.gnupg -r "$KEY" --yes -o $PATH/$FILENAME.mp3.asc -e $PATH/$FILENAME.mp3
$RM $PATH/$FILENAME.mp3
}
#this function seems doesn't run properly, so we don't use it now, but kept it and debug later.
mce() {
$SOX -m "$PATH/$FILENAME-in.wav" "$PATH/$FILENAME-out.wav" -t wav -q - | $LAME -S - - | $GPG -r $KEY --yes -o $PATH/$FILENAME.mp3.asc -e -
$RM $FILENAME-*.wav
}
mix
convert
encrypt
下说说如何配置加密,当然如果你感觉加密没有必要或者太麻烦不想弄,直接将上面脚本最后一行用#注释掉即可。
先面说说gpg的用法:
创建一对密匙对:
gpg --gen-key
你将会交互式的回答一些问题,然后gpg将会在你的匙扣上生成它们
导出公匙到纯ASCII码文件:
gpg -a --export KEYNAME > KEYFILE
导入公匙:
gpg --import KEYFILE
修改公私匙的信任度:
gpg --edit-key KEYNAME
你将会进入交互式修改模式
导出私匙到纯ASCII码文件:
gpg -a --export-secret-keys KEYNAME > yourprivatekey.asc
从你的匙扣上删除一个公匙:
gpg --delete-keys KEYNAME
从你的匙扣上删除一个私匙:
gpg --delete-secret-key KEYNAME
加密一个文件:
gpg -r KEYNAME --output OUTFILE.asc --encrypt INFILE
解密一个文件:
gpg -r KEYNAME --output OUTFILE --decrypt INFILE.asc
现在先让我们去你的工作机上创建一对gpg密匙对:
ubuntu@Simon:~$ gpg --gen-key
gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: Simon Zhang
Email address: simon.zhang@domain
Comment:
You selected this USER-ID:
"Simon Zhang <simon.zhang@domain>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
++++++++++++++++++++.+++++.++++++++++.+++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++..++++++++++++++++++++..+++++>++++++++++..............................+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
++++++++++++++++++++++++++++++.+++++.+++++.+++++....+++++.+++++.....++++++++++.++++++++++..+++++.+++++.+++++..+++++.+++++...++++++++++.+++++++++++++++.+++++....+++++.+++++..+++++..+++++.+++++....+++++..+++++>.+++++++++++++++...+++++.+++++.....+++++++++++++++.+++++.+++++>+++++>..+++++.....>.+++++.................................................................................................+++++^^^
gpg: key 3532FD44 marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 4 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 4u
gpg: next trustdb check due at 2010-01-06
pub 1024D/3532FD44 2009-10-15
Key fingerprint = 17CD 4A5A 9A6D F817 0796 ACD5 8651 E9E8 3532 FD44
uid Simon Zhang <simon.zhang@domain>
sub 4096g/E14D2527 2009-10-15
然后导出公匙:
你可以用刚刚设定问题中的Real name或者是电子邮件地址为名称导出公匙:
gpg -a --export Simon\ Zhang > Simon_PUBKEY.asc
或者:
gpg -a --export simon.zhang@domain > Simon_PUBKEY.asc
然后复制这个公匙到asterisk服务器,要想操作asterisk用户的匙扣,你要给asterisk用户一个shell
用vi打开/etc/passwd, 找到asterisk用户,将行尾的/bin/false改为/bin/bash,保存退出
然后以root用户身份su到asterisk用户并导入它:
root@server:~# su asterisk
asterisk@server:/root$ gpg --import Simon_PUBKEY.asc
编辑信任度:
asterisk@server:~$ gpg --edit-key simon.zhang@domain
gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Secret key is available.
pub 1024D/166B2755 created: 2009-06-11 expires: never usage: SC
trust: undefined validity: ultimate
sub 4096g/2C66CF1E created: 2009-06-11 expires: never usage: E
[ultimate] (1). Simon Zhang (this key pair is for external mail transfer) <simon.zhang@domain>
Command> trust
pub 1024D/166B2755 created: 2009-06-11 expires: never usage: SC
trust: undefined validity: ultimate
sub 4096g/2C66CF1E created: 2009-06-11 expires: never usage: E
[ultimate] (1). Simon Zhang (this key pair is for external mail transfer) <simon.zhang@domain>
Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)
1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu
Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y
pub 1024D/166B2755 created: 2009-06-11 expires: never usage: SC
trust: ultimate validity: ultimate
sub 4096g/2C66CF1E created: 2009-06-11 expires: never usage: E
[ultimate] (1). Simon Zhang (this key pair is for external mail transfer) <simon.zhang@domain>
Command> quit
asterisk@server:/root$ exit
root@server:~#
完成后别忘记把asterisk用户的shell改回false喔。
ALL DONE!
发表评论
-
Configuring an Asterisk server
2013-06-28 09:05 921Configuring an Asterisk server ... -
asterisk ami
2013-06-28 08:56 1414Asterisk Manager Interface主要提供 ... -
Originate Using Asterisk Local Channels
2013-01-24 17:30 1343Whenever you want to place a c ... -
Asterisk 1.8 chan_sip模块代码分析
2013-01-18 16:33 1936和以前版本相比,Asterisk在架构上有了不小的变动,本文 ... -
Asterisk Kernel analysis 2 channel
2013-01-17 17:44 843从内核的角度去分析问题时,弄清楚呼叫流程是非常关键的,只有 ... -
Asterisk Kernel analysis 1
2013-01-17 17:44 858一、内核初始化。 从 main入口。Asterisk ... -
astersik bridge 支持
2013-01-17 17:27 693为支持通话过程中双方按键的接受及处理,asterisk 通过 ... -
Asterisk 之${BRIDGEPEER} 函数说明
2013-01-17 16:38 705${BRIDGEPEER} :个人理解是 获取当前通道类型 ... -
Asterisk拨号函数Dial()详解
2012-12-27 13:33 1701Asterisk的拨号函数/命令是Dial,下面就介绍一 ... -
asterisk中常用函数说明
2012-12-15 11:56 964int ast_strlen_zero(co ... -
什么是1号信令、7号信令和PRI信令?
2012-04-11 14:26 1517按照信令的信道来分类,信令可以分为:随路信令和公共信道信 ... -
FreeSWITCH 与 Asterisk 比较
2012-03-29 15:45 3579VoIP通信,与传统的电话技术相比,不仅仅在于绝对的资费 ... -
Asterisk命令MeetMe详解
2012-03-29 14:44 1017MeetMe 概要 MeetMe ... -
Asterisk local channels
2012-03-12 15:09 861Asterisk local channels ... -
35个最棒的Asterisk免费应用
2012-03-12 14:51 2224Hi, I was looking round o ... -
Asterisk Originate 内部执行流程
2012-03-11 20:34 10131. originate的执行 向客户端发起呼叫,将客 ... -
模拟板卡疑难杂症(转)
2012-03-11 20:34 2255转自:http://sun4love.javaeye.c ... -
Asterisk 通话过程中执行动作(即applicationmap )的使用方法和电话转会议的实现
2012-03-11 20:34 983asterisk在正常通话过程中执行拨号计划中动作是通过 ... -
asterisk feature applicationmap 的caller和callee 的区别
2012-03-11 20:34 1018经过测试,在applicationmap 中定 ... -
asterisk中关于实现会议室meetme的笔记
2012-03-09 11:07 1943一、资料: 1.http: ...
相关推荐
这需要Asterisk电话系统具备录音功能,以及能处理DTMF(双音多频)信号来开始和结束录音。Asterisk录音方案通常要借助于其配置文件,例如features.conf,来实现对DTMF信号的响应。 描述中说明了方案涉及到的关键...
Asterisk录音记录(SQLServer)1 在Asterisk PBX系统中,录音记录是非常重要的功能,它允许管理员和用户追踪通话记录以便于分析、审计或存档。本篇文章将介绍如何利用SQL Server来存储Asterisk的录音记录,并对其进行...
在Asterisk系统中,录音功能是极其重要的,它允许用户记录通话、创建欢迎消息、提示信息以及IVR导航菜单的声音。 标题"Asterisk标准录音"指的是使用Asterisk系统进行的高质量录音,这些录音通常遵循特定的格式和...
现在G729语音编解码包免费的只支持单线程,如果IP电话应用在IVR开发中,为了避免IVR程序处理G729编解码问题,可以采用G729格式的文件,省去了编解码处理,这个工具就是解决G729文件和WAV文件转换,VC6.0
Asterisk自动录音(AMI接口实现)是使用AMI接口实现自动录音的方法,可以实现对所有呼入电话的录音,或者对指定号码的录音。这种方法可以广泛应用于呼叫中心、自动客服系统、语音邮件系统等领域。
Asterisk是一款强大的开源通信平台,它被广泛用于构建VoIP(Voice over Internet Protocol)电话系统,SIP(Session Initiation Protocol)服务器以及各种通信应用。这个“Asterisk中文文档说明”涵盖了从基础概念到...
在音频处理领域,将WAV...总的来说,"wav->mp3中引用的类文件"是指利用ManWMF DLL来实现WAV到MP3的转换,这涉及到音频处理的基本原理,DLL的使用方法,以及编程技巧,对于进行音频软件开发的人员来说是一项重要的技能。
Asterisk是一款开源的电话交换机软件,它允许用户创建高度自定义的通信系统,包括VoIP(Voice over IP)电话、会议桥、自动呼叫分配(ACD)以及许多其他电信功能。Asterisk的核心设计理念是灵活性和可扩展性,这使得...
在IT行业中,Asterisk是一款开源的电话交换机软件,它允许用户构建自己的VoIP(Voice over Internet Protocol)系统。这个“asterisk-moh-opsound-wav-2.03.tar”压缩包是专门为Asterisk设计的,用于在Ubuntu系统...
这涉及到VoIP(Voice over Internet Protocol)技术,如SIP(Session Initiation Protocol)协议,以及如何在Asterisk中配置电话线路和设备,如模拟电话线、数字E1/T1接口或VoIP网络。 其次,书中会讲解Asterisk的...
下载完成后,需要上传模块到服务器的/usr/lib/asterisk/modules/目录下,并将其重命名为codec_g729.so和codec_g723.so。然后,需要赋予这些模块执行权限,例如chmod 777 codec_g729.so和chmod 777 codec_g723.so。 ...
总结来说,"asterisk-moh-opsound-wav-2.03.tar.gz" 是一个用于Asterisk系统的挂机音乐资源包,包含了多个高质量的WAV音频文件以及相关的文档资料。它不仅提供了丰富的音乐选择,还遵循了开源社区的标准,确保了合法...
- **丰富的功能集**:除了基本的电话服务外,Asterisk还支持IVR(交互式语音应答)、会议电话、录音等多种高级功能。 #### 六、Asterisk的应用案例 - **企业内部通信**:许多企业采用Asterisk构建内部电话系统,...
我们需要两台 x86 PC,一个 Hub 或者 Switch,一部外线虚拟电话(电话号码比如:82085471),一部 SIP 电话(内部设置分机号为:82081001),Asterisk 卡(Open Vox A1200p),一条电话线(比如电话号码为 ...
这份文档对于系统管理员、开发者以及任何希望利用Asterisk构建高效、经济的通信平台的人来说,都是不可或缺的参考资料。 总之,Asterisk 1.4 官方使用手册是一个全面的学习资源,涵盖了从初学者到高级用户的各个...
Asterisk AMI(Asterisk Manager Interface)接口是Asterisk PBX系统提供的一种用于远程管理和监控的强大工具。这个接口允许开发者通过编程方式与Asterisk进行交互,执行诸如控制呼叫、获取状态、监听通话等多种操作...
电话录音涉及隐私权问题,因此在实施电话录音系统时,必须遵守当地的法律法规,确保录音的合法性。例如,在某些地区,录音需要获得通话双方的同意。 7. **安全与保护**: 录音数据的安全性同样重要,防止未授权...