[asterisk-dev] Implementing MWI for Definity PBX served by Asterisk VoiceMail

Richard Mudgett rmudgett at digium.com
Thu Feb 3 16:55:56 CST 2011

----- Original Message -----
> Thanks for your reply, Richard.
> >The events needed for using pri_mwi_indicate() are generated by the
> >Asterisk voicemail system. These events are subscribed to by the
> >channel
> >driver.
> How would you propose having the channel driver subscribe to all
> of the possible extensions in the remote PBX (possibly several
> thousand)? The current architecture seems to be targetted at a

The ast_event_subscribe() call specifies what kind of event you
want to get.  The list of IE's in the parameter list are to narrow
down what event you are looking for.  If you do not specify mailbox
but specify context in the sig_pri.c:sig_pri_start_pri() ast_event_subscribe()
call, you will get all mailbox MWI events for that context.

> small number of phones on a BRI channel, which is why the
> 1.4.12-beta3 version of pri_mwi_indicate has "if (!BRI_NT_PTMP(ctrl))
> {return -1;}"

The reason BRI_NT_PTMP() is checked is because libpri does not support
any other signaling mode at the present time for that feature.

> >I think you are really dealing with the MWIActivate/MWIDeactivate
> >messages
> >for PRI. The MWIActivate/MWIDeactivate messages are carried either by
> >a
> >REGISTER or FACILITY message.
> Given these parameters to mwi_message_send
> Encode and queue the Q.SIG MWIActivate/MWIDeactivate invoke message.
> D channel controller for diagnostic messages or global options.
> call Call leg to queue message.
> req Served user setup request information.
> activate Nonzero to do the activate message.
> D channel and activate are obvious. Is the call leg a dummy call, as
> with the others? The req is a pri_sr, which doesn't seem to be quite
> as simple as a pri_party_id. Any pointers, please, to how to construct
> this?

The mwi_message_send() is extremely Q.SIG specific.  The req
parameter is the same parameter used by pri_setup() to initiate
calls.  Q.SIG actually places a call to convey the message.
The call leg is a real call that is used for signaling
purposes only.  Q.SIG uses SETUP like ETSI PRI uses REGISTER.
Both methods establish a signaling link between the endpoints
identified by the call reference.

The dummy call is used by Q.931 almost exclusively to send
FACILITY messages that are not associated with a call.  Also,
the dummy call is mostly used for BRI PTMP mode.  It is not
really used for PRI.


More information about the asterisk-dev mailing list