FireBrick Call Recording: Difference between revisions
Appearance
Content deleted Content added
| (24 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
[[File:2700-small.png|link=:Category:FireBrick]] |
|||
=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 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. |
||
| Line 32: | Line 28: | ||
There are two elements to the A&A/FireBrick call recording software: |
There are two elements to the A&A/FireBrick call recording software: |
||
* a C application, ''voip- |
* a C application, ''voip-answer'', which acts as a SIP endpoint and handles the call recording; and |
||
* a python script |
* a python script |
||
from: https://github.com/revk/voip-answer |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
1.) the Makefile is dependent on deps/siptools.c. If you do not have access to the A&A svn, you'll need to: |
1.) the Makefile is dependent on deps/siptools.c. If you do not have access to the A&A svn, you'll need to: |
||
| Line 43: | Line 41: | ||
a.) comment out the following lines in the Makefile: |
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/ |
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: |
2.) depending on your version of voip-answer.c, you may need to 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) |
to whatever email address you want to the recordings to be sent from. (%c is the unique ID of the call recording) |
||
(As of 9 August 2018, this has been replaced in voip-answer.c with "sip:%s%.*s", so no modification is necessary.) |
|||
3.) By default, the (temporary) path for the recordings is /tmp/. If you want to change this, amend line 62: |
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''. |
Once you have configured the script to your preferences, install it by running ''make''. |
||
(If you do not have it installed already, you might need to install libpopt-dev.) |
|||
| Line 78: | Line 80: | ||
* ''dump'' / ''V'': outputs a packet dump |
* ''dump'' / ''V'': outputs a packet dump |
||
So, for example, if you wanted to run ''voip- |
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 /voipuser/voip-answer/python/voip-rec-email/voip_rec_email.py -d /voipuser/voip-answer/sounds/ |
|||
If you want to run it as a background process (which you probably do...), append an ampersand: |
|||
./voip-answer -r /voipuser/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)= |
||
As well as acting as a SIP endpoint for recording calls, ''voip- |
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 == |
== Creating the announcement / playback files == |
||
| Line 91: | Line 97: | ||
* .wav |
* .wav |
||
* A-LAW |
* A-LAW |
||
* |
* 8000 Hz sample rate |
||
* mono only |
* mono only |
||
You can easily use Audacity to create suitable files; just remember to set the sample rate to |
You can easily use Audacity to create suitable files; just remember to set the sample rate to 8000 Hz, and to set the track to mono only, first. |
||
| ⚫ | |||
If you have a recording at a different sample rate, using Audacity, change the project's sample rate to 8000, then change the recording's sample rate to 8000, and then use the "Change Speed" effect on the recording — if the original rate was 44100 Hz, apply a speed multiple of 5.50. |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
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 |
|||
You can download aai.wav and sit.wav [https://support.aa.net.uk/images/9/98/Firebrick_tones.zip here]. |
|||
=== 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 "onholiday.wav", you would specify the following SIP URI: |
|||
''--onholiday@hostname/address'' |
|||
=Pre-call announcements (e.g. "this call will be recorded")= |
|||
You can combine these features with the REFER function ("#"), to create an extension which will first play back an announcement (such as "This call will be recorded"), before referring the call to your chosen destination. |
|||
| ⚫ | |||
You do not need to do anything with the voip-answer.c script (other than make sure your chosen recordings are in the right place). |
|||
| ⚫ | |||
Configure your FireBrick: |
|||
| ⚫ | |||
# As at 10 August 2018, make sure you have alphas enabled, and have at least alpha V1.48.123 |
|||
| ⚫ | |||
# Create a new telephone extension (or amend an existing one) |
|||
# Give it the username "Voicemail" and do not give it a password |
|||
# Add the URI: <your-pre-call-sound-file>#<extension you want to refer to>@hostname/address |
|||
So if you wanted to first play an announcement of called "callsarerecorded.wav", followed by a refer to your extension or hunt group number 500, you would use: |
|||
callsarerecorded#500@hostname/address |
|||
| ⚫ | |||
Reference in SIP URI in FireBrick config (e.g. recording-name@hostname/address) |
|||