Sorry, just to make sure this is clear, in #2 below, when I said "We would like 
for the AGI script to stay running for the life of the call...", I also meant 
after the call is transfered to the customer service queue. This is so because 
we need to note that the call ended (update callend = NOW()) regardless of 
whether the call stayed only in the IVR or the caller spoke with a customer 
service agent.

Thanks again

On Mon, May 14, 2007 5:40 pm, [EMAIL PROTECTED] said:

> Hi,
> 
> We have a "simple" AGI script that provides some IVR functionality. It 
> connects to
> a MySQL database in order to create a call record and capture IVR data.
> 
> During the IVR process, we need to store the time the call started, so 
> basically
> we INSERT a new MySQL row with callstart = NOW(), uniqueid = 
> AGI(agi_uniqueid). As
> the user selects different options, we update the row to reflect the user's
> selection. There are a couple of options within the IVR that allows the user 
> to
> speak with a live customer service rep. So, in those cases, we do a AGI exec 
> to
> Dial out to the customer service queue and transfer the caller there. In the
> dialplan, we have extension h, execute DeadAGI which basically looks up the
> agi_uniqueid and updates the time the call ended in MySQL (e.g. callend = 
> NOW()).
> 
> All this seems to be working. However, we just don't feel we are doing things
> properly and reading up on the wiki more about AGI and dialing out, etc, just
> makes me feel we could be doing things better.
> 
> Here are some of the things we think we could be doing better but are not 
> sure:
> 
> 1) Ideally, we would like for the AGI script to know when the call hangs up so
> that it properly updates "callend" without having to run the DeadAGI command 
> in
> the h extension.
> 
> 2) We would like for the AGI script to stay running for the life of the call 
> and
> keep in memory all the user's IVR selections until the call is hung up. At 
> which
> point, we could actually INSERT the row in MySQL with all the data, instead of
> constantly hitting the database with updates.
> 
> 3) We read on the wiki the following: "If the AGI application dials outward by
> executing Dial, control over the call returns to the dialplan and the script 
> loses
> contact with the Asterisk server. The script continues to run in the 
> background by
> itself and is free to clean up and do post-dial processing." In our IVR, we 
> always
> exit with -1. So, this statement confused us. Does it mean that when we 
> transfer
> the call to the queue, we should actually return 0 instead of -1 to indicate 
> that
> the AGI is still running? Can anyone explain this further?
> 
> 4) When should we close the database handle? Currently, we have it at the end 
> of
> the AGI script and also as part of the DeadAGI script. However, which one is
> actually closing it, we don't know.
> 
> Comments are extremely welcomed and appreciated.
> 
> Thanks
> 
> _______________________________________________
> --Bandwidth and Colocation provided by Easynews.com --
> 
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users
> 

_______________________________________________
--Bandwidth and Colocation provided by Easynews.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to