Passing channel variables to mod_fifo and xml_cdr
When sending a call through mod_fifo I seem to be losing my custom channel variables that were assigned during prior processing of the call. In my example, I am trying to assign a unique identifier at the time the call enters my FreeSWITCH system in order to more easily tie the xml_cdr logs together. This works great, until a call is processed through mod_fifo, which drops my custom channel variable in the calls that it generates. Is it likely that I have something wrong with my config? Or does mod_fifo not support the passing of custom channel variables? The overall problem I am trying to solve is that mod_fifo generates a separate a-leg for every time it rings an agent. If the agent answers, the a-leg log gets tied to the associated b-leg log with the uuids and I am able to see the entire call in xml_cdr. However, if the agent rejects the call or doesn't answer, the a-leg is abandoned with seemingly no association back to a b-leg log. Anyone have a better suggestion for tying all these xml_cdr logs together for a full picture of the call? -Adam
There is no association if the agent does not accept the call. When fifo has calls waiting for agents, it will call as many agents as it needs for calls waiting to be handled, when those agents accept the call, only then does it go and grab a specific caller to attach to the agent. What most people assume incorrectly is that it is calling the agent using the waiting caller. There is no connection at all at the time the call is made. This is the same reason that you do not get caller id of the caller until you answer. This is how mod_fifo is architected and a behavior that can not be changed without writing a completely different call queue system. Mike On Feb 4, 2010, at 9:09 PM, Adam Ford wrote:
When sending a call through mod_fifo I seem to be losing my custom channel variables that were assigned during prior processing of the call. In my example, I am trying to assign a unique identifier at the time the call enters my FreeSWITCH system in order to more easily tie the xml_cdr logs together. This works great, until a call is processed through mod_fifo, which drops my custom channel variable in the calls that it generates. Is it likely that I have something wrong with my config? Or does mod_fifo not support the passing of custom channel variables?
The overall problem I am trying to solve is that mod_fifo generates a separate a-leg for every time it rings an agent. If the agent answers, the a-leg log gets tied to the associated b-leg log with the uuids and I am able to see the entire call in xml_cdr. However, if the agent rejects the call or doesn’t answer, the a-leg is abandoned with seemingly no association back to a b-leg log. Anyone have a better suggestion for tying all these xml_cdr logs together for a full picture of the call?
-Adam _______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org
On Thu, Feb 4, 2010 at 6:09 PM, Adam Ford <lists@redbonez.net> wrote:
When sending a call through mod_fifo I seem to be losing my custom channel variables that were assigned during prior processing of the call. In my example, I am trying to assign a unique identifier at the time the call enters my FreeSWITCH system in order to more easily tie the xml_cdr logs together. This works great, until a call is processed through mod_fifo, which drops my custom channel variable in the calls that it generates. Is it likely that I have something wrong with my config? Or does mod_fifo not support the passing of custom channel variables?
The overall problem I am trying to solve is that mod_fifo generates a separate a-leg for every time it rings an agent. If the agent answers, the a-leg log gets tied to the associated b-leg log with the uuids and I am able to see the entire call in xml_cdr. However, if the agent rejects the call or doesn’t answer, the a-leg is abandoned with seemingly no association back to a b-leg log. Anyone have a better suggestion for tying all these xml_cdr logs together for a full picture of the call?
Just curious - are you looking at this from the caller's perspective or the agent's perspective? An unanswered/rejected call from FIFO to an agent doesn't tell you very much. However, if you're trying to gather statistics on an individual agent then I could see why you'd want to know how many FIFO calls they failed to answer. As far as the "new" A leg not being tied back to a B leg - Mike J is 100% correct: A FIFO call to an agent has absolutely no correlation to any caller waiting in queue. (I suppose the only exception to this rule would be if there was only one caller in the queue when the FIFO called out to the agents.) Like Mike said, FIFO is not ACD. FIFO is "get the caller to a human as efficiently and quickly as possible." ACD is more of "connect the longest waiting caller to the longest waiting agent, with possible exceptions for skills, etc." Check out Andrew Thompson's SpiceCSM for a possible solution to your scenario. http://www.opencsm.org/wiki/index.php/SpiceCSM_Community_Edition -MC
On Tue, Feb 09, 2010 at 02:55:11PM -0800, Michael Collins wrote:
On Thu, Feb 4, 2010 at 6:09 PM, Adam Ford <lists@redbonez.net> wrote:
When sending a call through mod_fifo I seem to be losing my custom channel variables that were assigned during prior processing of the call. In my example, I am trying to assign a unique identifier at the time the call enters my FreeSWITCH system in order to more easily tie the xml_cdr logs together. This works great, until a call is processed through mod_fifo, which drops my custom channel variable in the calls that it generates. Is it likely that I have something wrong with my config? Or does mod_fifo not support the passing of custom channel variables?
The overall problem I am trying to solve is that mod_fifo generates a separate a-leg for every time it rings an agent. If the agent answers, the a-leg log gets tied to the associated b-leg log with the uuids and I am able to see the entire call in xml_cdr. However, if the agent rejects the call or doesn?t answer, the a-leg is abandoned with seemingly no association back to a b-leg log. Anyone have a better suggestion for tying all these xml_cdr logs together for a full picture of the call?
Just curious - are you looking at this from the caller's perspective or the agent's perspective? An unanswered/rejected call from FIFO to an agent doesn't tell you very much. However, if you're trying to gather statistics on an individual agent then I could see why you'd want to know how many FIFO calls they failed to answer. As far as the "new" A leg not being tied back to a B leg - Mike J is 100% correct: A FIFO call to an agent has absolutely no correlation to any caller waiting in queue. (I suppose the only exception to this rule would be if there was only one caller in the queue when the FIFO called out to the agents.)
Like Mike said, FIFO is not ACD. FIFO is "get the caller to a human as efficiently and quickly as possible." ACD is more of "connect the longest waiting caller to the longest waiting agent, with possible exceptions for skills, etc." Check out Andrew Thompson's SpiceCSM for a possible solution to your scenario.
http://www.opencsm.org/wiki/index.php/SpiceCSM_Community_Edition
Actually http://github.com/Vagabond/OpenACD is the place to go now (although its pretty short on documentation right now). I actually deployed it last friday and its been running fairly well since then. After I get a few remaining TODOs out of the way I'll cut a 1.0 RC1 and do a real announcement (and write some documentation). On a related note, OpenACD tracks agent ringouts and ring cancels so you can see if an agent is being lazy and bouncing calls. Andrew
participants (4)
-
Adam Ford
-
Andrew Thompson
-
Michael Collins
-
Michael Jerris