`

asterisk电话录音后wav转mp3以及加密录音文件问题

 
阅读更多

本文旨在解决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!

 

分享到:
评论

相关推荐

    asterisk info 录音实现方案

    这需要Asterisk电话系统具备录音功能,以及能处理DTMF(双音多频)信号来开始和结束录音。Asterisk录音方案通常要借助于其配置文件,例如features.conf,来实现对DTMF信号的响应。 描述中说明了方案涉及到的关键...

    20120412_Asterisk录音记录(SQLServer)1

    Asterisk录音记录(SQLServer)1 在Asterisk PBX系统中,录音记录是非常重要的功能,它允许管理员和用户追踪通话记录以便于分析、审计或存档。本篇文章将介绍如何利用SQL Server来存储Asterisk的录音记录,并对其进行...

    Asterisk标准录音

    在Asterisk系统中,录音功能是极其重要的,它允许用户记录通话、创建欢迎消息、提示信息以及IVR导航菜单的声音。 标题"Asterisk标准录音"指的是使用Asterisk系统进行的高质量录音,这些录音通常遵循特定的格式和...

    G729文件和WAV文件转换

    现在G729语音编解码包免费的只支持单线程,如果IP电话应用在IVR开发中,为了避免IVR程序处理G729编解码问题,可以采用G729格式的文件,省去了编解码处理,这个工具就是解决G729文件和WAV文件转换,VC6.0

    20120329_asterisk自动录音(AMI接口实现)1

    Asterisk自动录音(AMI接口实现)是使用AMI接口实现自动录音的方法,可以实现对所有呼入电话的录音,或者对指定号码的录音。这种方法可以广泛应用于呼叫中心、自动客服系统、语音邮件系统等领域。

    Asterisk 中文文档说明

    Asterisk是一款强大的开源通信平台,它被广泛用于构建VoIP(Voice over Internet Protocol)电话系统,SIP(Session Initiation Protocol)服务器以及各种通信应用。这个“Asterisk中文文档说明”涵盖了从基础概念到...

    wav->mp3中引用的类文件

    在音频处理领域,将WAV...总的来说,"wav-&gt;mp3中引用的类文件"是指利用ManWMF DLL来实现WAV到MP3的转换,这涉及到音频处理的基本原理,DLL的使用方法,以及编程技巧,对于进行音频软件开发的人员来说是一项重要的技能。

    Asterisk 简介 Asterisk 架构 Asterisk程序框图

    Asterisk是一款开源的电话交换机软件,它允许用户创建高度自定义的通信系统,包括VoIP(Voice over IP)电话、会议桥、自动呼叫分配(ACD)以及许多其他电信功能。Asterisk的核心设计理念是灵活性和可扩展性,这使得...

    asterisk--moh-opsound-wav-2.03.tar

    在IT行业中,Asterisk是一款开源的电话交换机软件,它允许用户构建自己的VoIP(Voice over Internet Protocol)系统。这个“asterisk-moh-opsound-wav-2.03.tar”压缩包是专门为Asterisk设计的,用于在Ubuntu系统...

    Asterisk,电话未来之路2nd 中文版

    这涉及到VoIP(Voice over Internet Protocol)技术,如SIP(Session Initiation Protocol)协议,以及如何在Asterisk中配置电话线路和设备,如模拟电话线、数字E1/T1接口或VoIP网络。 其次,书中会讲解Asterisk的...

    asterisk的G729和G723编码配置

    下载完成后,需要上传模块到服务器的/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-moh-opsound-wav-2.03.tar.gz" 是一个用于Asterisk系统的挂机音乐资源包,包含了多个高质量的WAV音频文件以及相关的文档资料。它不仅提供了丰富的音乐选择,还遵循了开源社区的标准,确保了合法...

    Asterisk,电话未来之路第二书签版.pdf

    - **丰富的功能集**:除了基本的电话服务外,Asterisk还支持IVR(交互式语音应答)、会议电话、录音等多种高级功能。 #### 六、Asterisk的应用案例 - **企业内部通信**:许多企业采用Asterisk构建内部电话系统,...

    Asterisk 之数据库配置方案 asterisk数据库

    我们需要两台 x86 PC,一个 Hub 或者 Switch,一部外线虚拟电话(电话号码比如:82085471),一部 SIP 电话(内部设置分机号为:82081001),Asterisk 卡(Open Vox A1200p),一条电话线(比如电话号码为 ...

    Asterisk 1.4 官方使用手册

    这份文档对于系统管理员、开发者以及任何希望利用Asterisk构建高效、经济的通信平台的人来说,都是不可或缺的参考资料。 总之,Asterisk 1.4 官方使用手册是一个全面的学习资源,涵盖了从初学者到高级用户的各个...

    Asterisk AMI 接口代码

    Asterisk AMI(Asterisk Manager Interface)接口是Asterisk PBX系统提供的一种用于远程管理和监控的强大工具。这个接口允许开发者通过编程方式与Asterisk进行交互,执行诸如控制呼叫、获取状态、监听通话等多种操作...

    电话录音反编译代码及资源

    电话录音涉及隐私权问题,因此在实施电话录音系统时,必须遵守当地的法律法规,确保录音的合法性。例如,在某些地区,录音需要获得通话双方的同意。 7. **安全与保护**: 录音数据的安全性同样重要,防止未授权...

Global site tag (gtag.js) - Google Analytics