I'm wondering if anyone has any experience recording an ARI bridge to separate files, unmixed (or at least to separate L and R channels of a stereo file). It seems this can be achieved by recording separate Channels but then these channels are not able to be bridged.
Recording two bridged channels always results in a mixed audio file.
I'd appreciate it if anyone could point me in the direction of successfully recording the In and Out channels of a bridge discretely, similar to the Monitor dial plan application. Or even bridging two channels that are already being independently recorded.
Are there any workaround for this that I'm not seeing?
I know I can get there without ARI but I'd love to use ARI. It can do everything I'd need it to do but this.
Thanks!
Application Monitor not mix channel.
Application MixMonitor do mix, but create stereo.
You can transfer you call to dialplan which do Mix/Monitor after that bridge it back via ARI.
From my understanding, what you have to do is create a seperate spy channel attached to each participant in the bridge. Then you can record the spy channel. And you can set the Spy to only monitor the direction you want. Then you would need to manually mix the calls down yourself afterwards.
Waking up an old post.
If you want to have ‘stereo’ recordings, i.e. channel A on the left and channel B on the right...
All you need to do is Record channel A and B separately and combine them after a call using a tool like SoX
Normal dialplan MixMonitor is the equivalent of recording a bridge with ARI
Normal dialplan Monitor is the equivalent of recording channel with ARI.
Related
I am trying to collect some info about the ongoing call in asterisk but during hangup I want to log which peer initiated the process of hangup. I am new to asterisk so I have no idea if its possible or not. Please help me if it can be done. I have tried to use HANGUPCAUSE_KEYS but it does not provide much information.
Actually I want to know who has released the line first? If A and B are connected with bridge and B releases I want to record that B has released the channel and vice versa.
Thanks!
I can see 2 ways.
1) Set a Hangup Handler in your dialplan (extensions.conf). Maybe it is the easiest way, but limited. WIKI: Hangup Handler
2) Use AMI and try to monitor the channels. It can be complicated, but almost limitless and powerful. WIKI: Asterisk AMI
We are working on a project to create a V2V ad-hoc network between vehicles. Basically we are deploying Raspberry Pis in vehicles and we are using Xbee modules and Zigbee protocol in order to exchange data between vehicles if they are near from each other.
Our ad-hoc network is completely dynamic and decentralized (We cannot have any static nodes in the network). Our problem is that the topology of the mesh network created by the Zigbee protocol requires a coordinator to be always in the network and the network will fail in case this coordinator failed down.
It seems that using Zigbee protocol requires knowing the topology of the network beforehand.
We do not know whether it is feasible to create our dynamic network using the Zigbee protocol without knowing the topology of the network beforehand and without the requirement of the coordinator. Can we have more than 1 coordinator in the network to overcome this problem? Thanks in advance.
Is there a particular reason you are looking to use Zigbee? if you are after a truely decentralised network you would be better off using either a different protocol (one that has no need for a coordinator) or by defining your own using basic RF modems (which is a lot more complicated)
however XBee modules are configurable by AT commands, with a bit of work you could probably set them up to periodically change mode (when it is running as coordinator) to check for other coordinators and if it finds one then stay as a standard node, and if the coordinator drops out (stops replying) then steps up to be coordinator.
this approach would require you to solve a few issues though:
how do the remaining modules in the network decide which becomes coordinator
how often would the coordinator scan for other coordinators in order to effect a reasonable response time, yet not disrupt data flow
i would suggest that you provide a bit more information relevant to the question such as:
how much data is being transferred?
how often is this data being transferred?
how are you planning to define where the data gets sent (addresses? or multicast to everywhere?)
hopefully this helps you in the right direction, but in the mean time i'd suggest you look at the XBee datasheets for the AT commands and what is possible (has been a while since i used them)
James
Digi sells XBee modules that implement protocols other than ZigBee. Both the plain 802.15.4 module and their proprietary DigiMesh module would be possible candidates for your project if you don't need to be ZigBee-compliant.
I think that you could send broadcast messages with 802.15.4.
With DigiMesh, all nodes are of the same node type. But I do not know how well it will handle having networks come together and fragment on a regular basis. You could contact Digi's technical support or sales support teams to see if they can provide any guidance.
I'm trying to complete software which does all call logic via AMI on it's own using Asterisk only as interface to VOIP, SIP/GSM. Almost everything works great, but...:
Here is my scenario:
- incoming call is forwarded to announcement and then to MOH forever
- my app decides which extensions to dial (7777) using AMI Action: Originate
- once somebody picks up on extension, his/her channel (SIP/306-xxxxx for example) is bridged with waiting call's channel using AMI Action: Bridge
Until this point everything is working fine, both connected parties can hear each other, recording on demand works. All is fine.
Now I'm trying to make assisted transfer to another extension (Atxfer) using AMI on one of the bridged channels. And it doesn't work. I got couple of ami events about DTMF's on a channel (audio is muted while they are played). Every DTMF digit couses quick Bridge:unlink and Bridge:link event on AMI.
I tried to change dtmfmode, upgrade from asterisk 1.8 to 11 (asterisk now) and it always was the same.
While having this problems with Atxfer blind transfer on those channels works (using AMI Action: Redirect).
full log shows nothing something like this:
[2013-11-11 20:24:57] DEBUG[9457]: features.c:3740 feature_interpret: Feature interpret: chan=SIP/306-00000017, peer=SIP/GTS-00000016, code=*2, sense=1, features=0, dynamic=apprecord#apprecord
I recommend you read some asterisk book for beginner like ORelly's "Asterisk the future of telephony".
In you case correct solution is use asterisk Dial command for first channel instead of second call creation.
It is not clear how you do transfer using AMI. If you want do it via ami(which is VERY bad way), you have do something like following
On transfer request(digit) unbridge channels. Better put it in AsyncAGI after that.
Collect digits where to transfer using Read command
Transfer to new destination
If fail bridge again
NOTE: You resulting application will be really buggy and not scalable. AMI interface is not designed to do such things and work very bad when you have alot of actions and channels running on same box. So you have test your app under hi concurrent load to ensure it work(or more likly not work).
I'd like to broadcast an Asterisk agent's conversation to a ShoutCast server. As each queued caller gets through in turn to the agent, his current conversation with his current caller needs to be sent to a specific stream.
I can find lots of info on setting up Asterisk to receive a ShoutCast broadcast, and I can find some info on using Ices to send a MeetMe conference to ShoutCast. The latter is no good for me as I need the queueing system and as far as I can see there's no way to be in a queue and a conference at the same time. Any other information is eluding me.
Thanks.
[edit] - whilst I've said ShoutCast above, any broadcast server would do. Preferably one I can run locally.
[UPDATE] -
This question is no longer relevant to my particular problem. This functionality is no longer required for my project and therefore I don't need an answer anymore. However, it received 2 up votes so I can only assume that some other people would like an answer. Not sure of the etiquette in this case but should I leave it open so someone else can answer for others to reference?
You can use the asterisk ices command [1] or install a parallel freeswitch server, bridge both servers and use freeswitch's mod_shout [3].
[EDIT]
To capture the conversation use a conference room and setup a new call using a Local channel to the conference and to a dialplan context where you can run the ices command. [4]
More... you can use freeswitch and asterisk together to solve this. Make a call to freeswitch from asterisk Instead the ices command.
REFERENCES
[1] http://www.voip-info.org/wiki/view/Asterisk+cmd+Ices
[2] http://en.wikipedia.org/wiki/Icecast
[3] http://wiki.freeswitch.org/wiki/Mod_shout
[4] Join two conferences in asterisk
I am trying to build an application where I am required to record and playback simultaneously. The application needs to go live on an asterisk telephony server. My problem is:
A user calls the asterisk server and starts to speak.
The voice packets being sent by the user are recorded in a wav file on the system.
A copy of the voice packets are sent as feedback simultaneously.
I have taken a look at ChanSpy, but it will not work if one is using Record.
My questions:
1. If a user calls an asterisk server, does that channel become a simplex or half-duplex channel?
2. Are there any commands etc. that allow us to do the above?
3. If not, does that mean I need to go into C programming for asterisk (agi-bin)?
P.S: Please let me know in case more information is needed.
Why not try MixMonitor? That allows you to record the call, and doesn't interfere with ChanSpy usage. ChanSpy IS the best way to do this, by the way.
You are wanting to feed to voice channel from the caller back to the same caller correct?
Have you tried the Echo command?