FireBrick Call Recording: Difference between revisions

From AAISP Support Site
No edit summary
No edit summary
Line 78: Line 78:
So, for example, if you wanted to run ''voip-answer'' with a call recording script at ''/voipuser/voip-answer/python/voip-rec-email/voip_rec_email.py'', serving wav files for announcements from ''/voipuser/voip-answer/sounds/'', you would run it with:
So, for example, if you wanted to run ''voip-answer'' with a call recording script at ''/voipuser/voip-answer/python/voip-rec-email/voip_rec_email.py'', serving wav files for announcements from ''/voipuser/voip-answer/sounds/'', you would run it with:


''./voip-answer -r /root/voip-answer/python/voip-rec-email/voip_rec_email.py -d /voipuser/voip-answer/sounds/''
./voip-answer -r /root/voip-answer/python/voip-rec-email/voip_rec_email.py -d /voipuser/voip-answer/sounds/


=Using the A&A / FireBrick call recording software for announcements (e.g. out of hours announcement)=
=Using the A&A / FireBrick call recording software for announcements (e.g. out of hours announcement)=
Line 100: Line 100:
Files to be played back can be put in any directory readable by ''voip-answer''. You tell it which directory to look in by using the ''directory'' or ''-d'' switch. For example:
Files to be played back can be put in any directory readable by ''voip-answer''. You tell it which directory to look in by using the ''directory'' or ''-d'' switch. For example:


''./voip-answer -d /voipuser/voip-answer/sounds/''
./voip-answer -d /voipuser/voip-answer/sounds/


== Triggering the announcement / playback files ==
== Triggering the announcement / playback files ==
Line 109: Line 109:


=== Prefixes (in this order) ===
=== Prefixes (in this order) ===
XXX= This call is not to be answered, but call progress. XXX is final status
XXX= This call is not to be answered, but call progress. XXX is final status
= This call is not to be answered, but call progress. End with constant ringing
= This call is not to be answered, but call progress. End with constant ringing
- Add a ring, may be repeated
- Add a ring, may be repeated
! Add a SIT, may be repeated
! Add a SIT, may be repeated
N* The playback sequence is to be repeated N times
N* The playback sequence is to be repeated N times


=== Filenames ===
=== Filenames ===
Line 123: Line 123:
=== Suffixes, one applies ===
=== Suffixes, one applies ===
=filename Record to file
=filename Record to file
* Silence
* Silence
# Refer to #
# Refer to #


So if you wanted two rings, followed by playback of a file called "on-holiday.wav", you would specify the following SIP URI:
So if you wanted two rings, followed by playback of a file called "on-holiday.wav", you would specify the following SIP URI:

Revision as of 05:33, 27 July 2018

Overview

The FireBrick supports call recording by teeing off the two way audio from a call leg and sending to a SIP endpoint. The SIP endpoint will then record the call and handle it in any way you wish.

The recording is controlled by setting an email address on a call leg. This can be configured for telephone users and set to automatically record incoming one, outgoing only, or all calls. You can also set this on a hunt group to record all incoming calls to the hunt group (attaching the recording to the calling leg).

The recording server can be any SIP endpoint, such as an asterisk box. A Linux-based call recording app is available to FireBrick customers for this purpose (see below).

If the SIP endpoint supports stereo A-law then the recording is made in stereo with each side of the conversation on a channel. Our call recording app makes stereo A-law WAV files, and can be configured to send these by email as each call ends.

Configuring the FireBrick for call recording

To set up automatic call recording you must, at a minimum:

  • give the FireBrick the location of your call recording server; and
  • configure each extension you wish to record.

Give the FireBrick the location of your call recording server

You give the FireBrick the location of your call recording server by setting the record-server property. This can be either a hostname or IP address.

By default, the FireBrick will play a beep before recording begins. If you want to stop this, set record-beep to false. This is an additional attribute, as part of the main voip config. It applies to all recordings.

Configure each extension you wish to record

You must set the record property for each extension you wish to record automatically. By default this is set to false; to record automatically, on both inbound and outbound calls, set this to true. If you want to record only inbound or outbound calls, set the property to either in-only or out-only accordingly.

If you want the recording to be emailed to the user, you need to set the user's email address, via the email property. This is passed to the call recording application, which handles the email sending.

Configuring the A&A / FireBrick call recording and emailing software

There are two elements to the A&A/FireBrick call recording software:

  • a C application, voip-answer, which acts as a SIP endpoint and handles the call recording; and
  • a python script

Setting up voip-answer

The voip-answer application comes with a Makefile, but I found I needed to make a couple of tweaks to get it to work:

1.) the Makefile is dependent on deps/siptools.c. If you do not have access to the A&A svn, you'll need to:

a.) comment out the following lines in the Makefile:

svn export --force -r 28442 svn://changeless.aa.net.uk/fb6000/trunk/apps/siptools.c $@ touch $@ # SVN sets the timestamp to the committed one (which triggers "building" every time)

b.) make sure that you have siptools.c in dep/

2.) set the email address parameter (i.e. the from address). Change line 803 from:

sprintf (temp, "sip:%c@voiceless.aa.net.uk", done);

to whatever email address you want to the recordings to be sent from. (%c is the unique ID of the call recording)

3.) By default, the (temporary) path for the recordings is /tmp/. If you want to change this, amend line 62:

char template[] = "/tmp/voip-answer-XXXXXX";


Once you have configured the script to your preferences, install it by running make.


Setting up python email script

Coming soon...

Running the A&A / FireBrick call recording and emailing software

The A&A/Firebrick call recording software has seven possible arguments / switches:

  • rec-script / r: path to your recording script
  • save-script / s: path to your saved file script
  • bind-host / h: binds host to the hostname you provide
  • bind-port / p: binds to the port you provide
  • directory / d: sets the directory path for wav files to be used in audio playback / announcements (see below)
  • debug / v: enables verbose / debug mode
  • dump / V: outputs a packet dump

So, for example, if you wanted to run voip-answer with a call recording script at /voipuser/voip-answer/python/voip-rec-email/voip_rec_email.py, serving wav files for announcements from /voipuser/voip-answer/sounds/, you would run it with:

./voip-answer -r /root/voip-answer/python/voip-rec-email/voip_rec_email.py -d /voipuser/voip-answer/sounds/

Using the A&A / FireBrick call recording software for announcements (e.g. out of hours announcement)

As well as acting as a SIP endpoint for recording calls, voip-answer doubles as a playback system, which you can use to play announcements.

Creating the announcement / playback files

The sound files used for announcements / playback must meet all the following:

  • .wav
  • A-LAW
  • 8000Hz sample rate
  • mono only

You can easily use Audacity to create suitable files; just remember to set the sample rate to 8000Hz, and to set the track to mono only, first.

If, when you play the files back through voip-answer, they sound distorted, chances are you have either got the sample rate wrong, or else accidentally recorded them in stereo.

Hosting the announcement / playback files

Files to be played back can be put in any directory readable by voip-answer. You tell it which directory to look in by using the directory or -d switch. For example:

./voip-answer -d /voipuser/voip-answer/sounds/

Triggering the announcement / playback files

You send traffic to the announcement / playback files by configuring a new extension on the FireBrick, and giving it a SIP URI containing the relevant parameters.

The parameters you can choose from are:

Prefixes (in this order)

XXX=         This call is not to be answered, but call progress. XXX is final status
=            This call is not to be answered, but call progress. End with constant ringing
-            Add a ring, may be repeated
!            Add a SIT, may be repeated
N*           The playback sequence is to be repeated N times

Filenames

Following the prefix are dot separated filenames, assumed to be wav files, to play.

A filename can have a ? after it followed by another filename. This skips the second file if the first exists.

Each dot is also a small time delay, so several dots can be used for a pause.

Suffixes, one applies

=filename    Record to file
*            Silence
#            Refer to #

So if you wanted two rings, followed by playback of a file called "on-holiday.wav", you would specify the following SIP URI:

--on-holiday@hostname/address