Hey all,
I just wanted to create a new thread for this subject. I did bring it up in another thread the other week but it was a bit out of scope for that thread really and I really would like to get some opionions from people on this one as I am desperately trying to sway kerry into the idea and benefits of adding 'SendURL' support to the soon to be released HUD3.
PS. Thanks to all those who responded in the other thread, I had some really useful responses.
For those that don't know what SendURL is or CRM, just read on. Sorry if this is a bit long but it is worth it I promise ;o)
Imagine this;
When a caller comes into the IVR (Option menu), and the caller presses 1 for the support team, pressing 1 sends the call to a custom section in extensions_custom.conf.
Here our PABX prompts to the caller to enter a case number/ticket number (As logged on the CRM system), Asterisk then listens for the DTMF tones and stores them (Done with a single command (‘Read’) in the dial plan).
Asside; A CRM (Customer Relation Manager) is usually a web based job management system that allows 'calls' or support cases to be logged (Often called tickets) detailing issues a customer might have for what ever reason. Staff can then add comments to the ticket and so on until the call be closed when the problem is resolved.
See SugarCRM for an example. http://www.sugarcrm.com
Now that the user has entered their ticket number we have the information that will allow us to do some very powerful and clever things.
We could stop right here, as the CRM page for the ticket is nearly always something like http://urltocrmserver/somefile.php?ticketnumber, where the first part of the URL never changes. Thus with only one line of code we already have everything we need!
For example, we could now run the asterisk function;
"SendURL(‘http://urltocrmserver/somefile.php?ticketnumber’)".
This set’s the URL SIP header, we then simply ring the support ring group/queue and the agent who answers the call will have the CRM web page popup with all the support ticket info open in front of him or her as soon as they pick up the phone...... How cool would that be!
What we have done is to take this a bit further (As HUD currently doesn't support SendURL anyway :( ).
For example how about if we could work out who the support ticket was currently assigned to, and route the call to only that person...!
Well that was actually surprisingly easy. I wrote a simple .agi script (Perl script you place in /var/lib/asterisk/agi-bin/) which you call from the dial plan passing it the ticket number you collected with the Read() command.
In the AGI script you simply load the Asterisk-perl modules (Asterisk::AGI) and database modules (Perl::DBI) thus providing you access to any database you want.
In my script I then make a database connection to the CRM database, and simply call something called a ‘stored procedure’ passing it the ticket number.
The stored procedure resides on the database. It forms part of the database schema but is in essence program code that resides on the database. It sounds complex but it honestly isn’t.
Anyway, you can write one (less that 10 lines of code even) which you simply add to the existing CRM database. My stored proc simply uses the ticket number to select the data from the database relating to the support ticket, in particular returning the name of the agent the ticket is assigned too......
Here I did have to use a tiny user map to map agent names in the CRM to extensions......
The stored proc now simply returns the agents extension number to the AGI script, which in turn passes it straight back to the dial plan.
Now we simply run the SendURL() command just as we did before, we could also set the ALERT_INFO variable too if we wanted to make the phone ring with a different sound. And finally actually ring only the extension that the ticket is assigned too.
Obviously during all of this we can add some simple validation code to make sure valid key presses are detected, etc etc.
In our case we don’t actually use SugarCRM, we use a proprietary CRM system that was written for us, but by using the above simple method you could hook into any CRM you like.
So why go to all this hassle you may ask?
Using the above process cut down on call time by a HUGE amount, (As much as 25% in some cases) as the caller was no longer having to ask "Is bob there?" (If you are lucky enough that the caller even knew the ticket was with bob!), then the agent havng to transfer the call to bob (Wasting the time of two agents!), then when bob finally gets the call he has to ask what the ticket number is (Probably again!), open his browser and type it in and searcj for it.
This all adds up to a surprising large amount of wasted agent time
Instead the call goes straight to the right person, and the only missing piece of the puzzle is having the web page open up in front of him/her without having to do anything allowing the agent to respond to the issue instantly.
Pheww, I knew that was a bit long. thanks for reading this far.
I would really appreciate anyone reading this thread who can think of other great uses for the SendURL() function to post your ideas here to help persuade Kerry to add support for it in HUD3 as I so want to place the final missing piece of the puzzle.
How about if i made all my code available for the above functionality? Would people be interested?
It's not that complex or well written for that matter, but it works, and I guess what I have put together may be enough to help others in similar positions get started.
Or even better, is trixbox ever planning on rolling out SugarCRM? Could this be a good bit of integration others might like?
Anything that will encourage HUD3 to support SendURL :o)
Thanks for your time.

Member Since:
2007-01-21