Update on this one. I finally went back to AMI only for implementing this particular feature, but ofcourse I had to make an addition of a couple of lines for my particular requirement.
On "Dial", the 'dial' event is sent over AMI which I capture. Unfortunately the event didn't have any field identifying the account/or other user settable data for that particular call. So, I added lines in app_dial.c to send even the CDR userfield in the event. So, before doing the 'Dial' I set CDR userfield with my own data, which is captured by the AMI user and populates/updates the correct row in my DB with the dialed channel, etc. >From this point on, I can hangup the required channel, even before it has been >answered/ even before it has started ringing. static void senddialevent(struct ast_channel *src, struct ast_channel *dst) { manager_event(EVENT_FLAG_CALL, "Dial", "Source: %s\r\n" "Destination: %s\r\n" "CallerID: %s\r\n" "CallerIDName: %s\r\n" "SrcUniqueID: %s\r\n" "DestUniqueID: %s\r\n" "CDRUserfield: %s\r\n", src->name, dst->name, src->cid.cid_num ? src->cid.cid_num : "<unknown>", src->cid.cid_name ? src->cid.cid_name : "<unknown>", src->uniqueid, dst->uniqueid, (dst->cdr)?(dst->cdr->userfield):""); } I am writing this mail from home, so don't really have the exact field names. cheers - Ben. --- On Thu, 5/8/08, Tzafrir Cohen <[EMAIL PROTECTED]> wrote: > From: Tzafrir Cohen <[EMAIL PROTECTED]> > Subject: Re: [asterisk-users] update DB on ringing/ catch ringing event > To: asterisk-users@lists.digium.com > Date: Thursday, May 8, 2008, 12:00 AM > On Thu, May 08, 2008 at 12:19:52AM +0300, Atis Lezdins > wrote: > > On Wed, May 7, 2008 at 5:43 PM, Philipp Kempgen > > <[EMAIL PROTECTED]> wrote: > > > Benjamin Jacob schrieb: > > > > > > > > > > Anyway in Asterisk to update a DB/ do some > action on > > > > events like ringing. > > > > The issue is I need to be able to > hangup/cancel a > > > > call, if it's ringing(decided by the > admin). This is > > > > independant of the timeout that we can > specify in the > > > > Dial command. > > > > > > > > If I could somehow update a DB with the > channel name > > > > on ringing, it would solve my problem. > > > > > > > > I assume NVlinedetect is one way to do it, > but that > > > > isn't visible anymore, more so for > Asterisk 1.4 and > > > > above. > > > > > > > > Any bright ideas on this one? > > > > > > I think there is no other solution but to listen > to events on > > > the Asterisk manager interface. > > > > > > > For now, not really. > > > > You could try Realtime Channels patch I just mentioned > here: > > > http://lists.digium.com/pipermail/asterisk-users/2008-May/211136.html > > > > This should give you up-to-date list of channels in > database, so you can use > > > > SELECT * FROM channels WHERE state="Ring"; > > > > to get currently ringing channels. > > > > If You find this patch useful, please add a comment to > issue > > http://bugs.digium.com/view.php?id=12556 > > that you would like to see Realtime status implemented > in future > > versions of Asterisk. > > So you constantly poll the status of all channels? Waiting > on manager > interface event sounds more effective to me. > > But what exact "ringing" is it? Isn't the > call by then already in the > dialplan (and could be hung up before answered?) > > -- > Tzafrir Cohen > icq#16849755 jabber:[EMAIL PROTECTED] > +972-50-7952406 mailto:[EMAIL PROTECTED] > http://www.xorcom.com iax:[EMAIL PROTECTED]/tzafrir > > _______________________________________________ > -- Bandwidth and Colocation Provided by > http://www.api-digital.com -- > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users _______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users