in default configuration in freeswitch, when a call falls into the queue and is routed to an agent, he immediately answers, I want to change that ...
so is there a way (is this possible) for off-hook agents (always connected agents) to acknowledge the call before bridge (for example by pressing DTMF code) ?
Yes, this is possible. In Freeswitch callcenter module (mod_callcenter.c), you can change it according to your need before bridge to agent. And you can write the code for sending dtmf to off-hook agents. I used to do the changes as per my requirement and I also wrote many custom specific modules.
you can achieve exporting group_confirm variables before executing the callcenter app.
-- first set the variables that you want to export
session:setVariable('group_confirm_file', 'file_string:///var/lib/freeswitch/confirm.wav')
session:setVariable('group_confirm_key', '1')
session:setVariable('confirm', 'true')
-- Exporting varibles, this variables the callcenter app will use and add to agents
session:setVariable('cc_export_vars', 'group_confirm_file,group_confirm_key,confirm')
-- Then now execute the callcenter app
session:execute('callcenter', 'QUEUE-NAME-HERE')
Note: This example I used LUA, but it will be the same on XML
Related
I am new to Omnetpp, and I am trying to send messages from one node to another wirelessly.
Basically, I would like to do something as in the tictoc example of Omnetpp (https://docs.omnetpp.org/tutorials/tictoc/) but then wirelessly.
I have installed INET already, and I have seen the wireless example, which uses the UdpBasicAPP. However, I do not know how to change the data of the message send while using the UdPBasicAPP. In my case, what I am sending (i.e. the data) is very important because it is part of a bigger project. Eventually, the idea is to use the 802.11p standard (which exists in VEINS) and multiple nodes, but I thought this was a good place to start.
I hope someone can help me out.
Kind regards
just to be aware: 802.11p is also supported directly in INET. Just set the opMode parameter on the network interface.
You will need to create your own application module. Take a look/copy UdpBasicApp and modify it according to your needs. Check the sendPacket() function which creates an ApplicationPacket. ApplicationPacket contains only a single sequence number, but you can create your own application level data structure and use that for sending.
I am making a CAN simulator for GPS trackers, they only record CAN data and doesn't send ACK. Is it possible to send CAN data with raspberry, using mcp2515/tja1050, without any device on bus that would trigger ACK?
This will usually generate a continuous retransmit.
Some devices have a "one-shot" transmit mode when just sends the CAN frame and does not attempt a retransmission. If you transmitter has this mode you can do what you describe, otherwise you will get a lot of retransmissions.
No it isn't possible, you need at least 2 nodes that are actively participating in the communication. This can however be fixed by just providing another CAN controller on the bus, which doesn't have to do anything intelligent except the ACK part.
For development/debug/test purposes you can however put your own node in "loopback mode", meaning it will speak to itself. Can be handy if you have to proper hardware available yet.
You can try to set the controlmode presume-ack to on.
Assuming you are using the ip command for creating your can sockets that would be something like
ip link set <DEVICE> type can presume-ack on
This will ignore missing ACKs. However I am not sure whether this works with all controllers.
I need a better way to use my alerting code.Right now I have a code that check for space free on aws ecs and sends a simple notification to slack if space is less than 5gb using slack api.I used this code in jenkins and setup a periodic schedule to run every 15 min.But once the notification is triggered I wanted it to stop the check for 4 hours so, it won't fill the slack channel with messages .So, i used sleep 14400 after condition is triggered.But this leaves an executor of jenkins waiting.Is there a better way to do this?
If you really want a better way, you should use better tools. there are many tools (some free) out there, that can monitor something in a stateful manner (for example, using a daemon).
Writing to log (or slack channel) in this context of using Jenkins is sort of stateless, for example you cannot check whether an alarm is currently triggered or not.
Since you cannot check if an alarm is already triggered - using jenkins with the logic you requested in your question ('snooze feature') can be very ugly.
In general I would recommend using Conditional BuildStep to trigger a step if a condition is met (i.e. if alarm not already triggered), but since there is no way for you to poll this information, or achieve this with Jenkins without the solution being 'hackish' like creating a file to indicate alert is on, and deleting it from another job if it was created more than 4 hrs ago - I would suggest looking at tools more suitable for the job.
I am running a FreeSWITCH server that will function as a call-in radio show. What I want to do is create a platform that will enable the user to edit the show in post-production, which includes creating a custom show/object using the recorded audio.
How I want to do this is record each leg of the call separately, so that way I can record the host separately to the listener calling in. Is this recording action available in FreeSWITCH?
This Question on SO is related:
Call Recording in Freeswitch
and one of the answers mentions the
which according to the official wiki "is used for recording messages, like in a voicemail system".
The question is, Am I able to invoke this record action on both legs of the call? Or any equivalents that exist within FreeSWITCH?
if you set the variable RECORD_STEREO=true and use a FILENAME.wav file as recording destination, the resulting file will have two audio channels, for receiving and sending sides respectively. Then later you can split the channels by your favorite audio editing tool and do what is needed.
Is there any way by which i can receive the information about which agent received the call in queue and what is the duration of call and other information.
I read about the variables that hold this information like cc_agent, cc_queue_answered_epoch etc but how can i access them through freeswitch API in Lua OR it must be evaluated from dialplan only by setting action application to "luarun" with required data.! I am simply forwarding the call to queue
Session:execute("callcenter","Sales")
Basically what i am trying to do is recording all this information in a database after agent hangup the call. Any clue or a direction will be very helpful
Depending on how you have your callcenter app setup, you could parse the CDR data for the following:
cc_agent
That value should be something like:
agent007#pbx.widgetets.local
Given this, you can you simple use regex in your scripting language and you'll be able to quickly see the agent that answered the calls.