- 浏览: 399180 次
文章分类
- 全部博客 (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 855Configuring an Asterisk server ... -
asterisk ami
2013-06-28 08:56 1356Asterisk Manager Interface主要提供 ... -
Originate Using Asterisk Local Channels
2013-01-24 17:30 1283Whenever you want to place a c ... -
Asterisk 1.8 chan_sip模块代码分析
2013-01-18 16:33 1860和以前版本相比,Asterisk在架构上有了不小的变动,本文 ... -
Asterisk Kernel analysis 2 channel
2013-01-17 17:44 811从内核的角度去分析问题时,弄清楚呼叫流程是非常关键的,只有 ... -
Asterisk Kernel analysis 1
2013-01-17 17:44 817一、内核初始化。 从 main入口。Asterisk ... -
astersik bridge 支持
2013-01-17 17:27 661为支持通话过程中双方按键的接受及处理,asterisk 通过 ... -
Asterisk 之${BRIDGEPEER} 函数说明
2013-01-17 16:38 673${BRIDGEPEER} :个人理解是 获取当前通道类型 ... -
Asterisk拨号函数Dial()详解
2012-12-27 13:33 1563Asterisk的拨号函数/命令是Dial,下面就介绍一 ... -
asterisk中常用函数说明
2012-12-15 11:56 936int ast_strlen_zero(co ... -
什么是1号信令、7号信令和PRI信令?
2012-04-11 14:26 1479按照信令的信道来分类,信令可以分为:随路信令和公共信道信 ... -
FreeSWITCH 与 Asterisk 比较
2012-03-29 15:45 3456VoIP通信,与传统的电话技术相比,不仅仅在于绝对的资费 ... -
Asterisk命令MeetMe详解
2012-03-29 14:44 958MeetMe 概要 MeetMe ... -
Asterisk local channels
2012-03-12 15:09 830Asterisk local channels ... -
35个最棒的Asterisk免费应用
2012-03-12 14:51 2187Hi, I was looking round o ... -
Asterisk Originate 内部执行流程
2012-03-11 20:34 9521. originate的执行 向客户端发起呼叫,将客 ... -
模拟板卡疑难杂症(转)
2012-03-11 20:34 2176转自:http://sun4love.javaeye.c ... -
Asterisk 通话过程中执行动作(即applicationmap )的使用方法和电话转会议的实现
2012-03-11 20:34 937asterisk在正常通话过程中执行拨号计划中动作是通过 ... -
asterisk feature applicationmap 的caller和callee 的区别
2012-03-11 20:34 989经过测试,在applicationmap 中定 ... -
asterisk中关于实现会议室meetme的笔记
2012-03-09 11:07 1801一、资料: 1.http: ...
相关推荐
asterisk 使用info 触发录音,http告知服务器;带有主叫信息,被叫信息等。
1、创建数据库: 2、创建存储过程: 3、测试存储过程: 1、添加头文件: 2、添加数据库测试代码: 3、在 mixmonitor_thread 函数里面添加调
Asterisk 标准 录音 GSM格式,上传到asterisk可以直接使用,大家可以参考
现在G729语音编解码包免费的只支持单线程,如果IP电话应用在IVR开发中,为了避免IVR程序处理G729编解码问题,可以采用G729格式的文件,省去了编解码处理,这个工具就是解决G729文件和WAV文件转换,VC6.0
Asterisk是一套可以运行在Linux上...通过Asterisk,你能与六十年代的脉冲拨号的电话通话,也能与最新的VoIP设备通话,并能提供从简单的电路交换一直到现在的蓝牙与DUNDi技术的功能。可贵的是,这个项目是开放源代码的。
Asterisk-电话未来之路.pdf
Asterisk,电话未来之路2nd 中文版
wav->mp3中的引用中添加此文件夹中的生成的dll,详细见http://download.csdn.net/source/1687062 wav->mp3中的ReadMe.txt文件
Asterisk电话通讯行业的未来-Chinese
Asterisk 简介 Asterisk 架构 Asterisk程序框图
ubuntu系统环境构建Asterisk通信应用程序的sounds文件夹下moh-opsound-wav-2.03压缩包
Asterisk一款优秀的sippbx开源软件,便于在其技术上做sip方面的开发等。
Asterisk权威指南中文(第3版) Asterisk权威指南(第3版)第15章自动话务员 Asterisk权威指南(第3版)第02章Asterisk体系结构 Asterisk权威指南(第3版)第05章用户设备配置 Asterisk权威指南(第3版)第06章Dialplan基础 ...
astisk入门手册 如果你想了解Asterisk,我给你推荐本书
This is a book for anyone who is new to Asterisk™. Asterisk is an open source, converged telephony platform, which is designed primarily to run on Linux. Asterisk combines over 100 years of ...
Asterisk,电话未来之路第二书签版.pdf
Asterisk,电话未来之路第二书签版.pdf 这本书适用于任何刚开始学习Asterisk 的人。 第一章 一次电话的革命 在这一章里,我们摩擦火柴,并且点燃火焰。 Asterisk 将要改变整个世界的 电信行业,在这一章里我们所...
Asterisk,电话未来之路第二书签版,希望帮到大家
Asterisk 分机注册-互通-中继配置
asterisk 电话未来之路,轻松掌握trixbox