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: [email protected]
> 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