mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-18 15:49:56 +00:00
Add updated SMDI documentation that I had only sitting in my email ... oops
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@106507 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
136
doc/smdi.txt
136
doc/smdi.txt
@@ -1,25 +1,125 @@
|
||||
Asterisk SMDI (Simple Message Desk Interface) integration
|
||||
---------------------------------------------------------
|
||||
===============================================================================
|
||||
===============================================================================
|
||||
=== Asterisk SMDI (Simple Message Desk Interface) integration =================
|
||||
===============================================================================
|
||||
===============================================================================
|
||||
|
||||
SMDI integration is configured in smdi.conf, zaptel.conf, and voicemail.conf.
|
||||
Various characteristics of the SMDI interfaces to be used (serial ports) are
|
||||
defined in smdi.conf. SMDI integration for callerid and MWI are defined in
|
||||
zaptel.conf and voicemail.conf respectively. SMDI only works with Zaptel
|
||||
interfaces configured for FXS signalling.
|
||||
===============================================================================
|
||||
===== 1) Accessing SMDI information in the dialplan. ==========================
|
||||
===============================================================================
|
||||
|
||||
When SMDI is enabled and a call comes into Asterisk, the forwarding station
|
||||
number is used as the destination for the call and any callerid information
|
||||
present is used. This way you can configure your extensions.conf as follows to
|
||||
behave as a message desk.
|
||||
There are two dialplan functions that can be used to access the details of
|
||||
incoming SMDI messages.
|
||||
|
||||
[default]
|
||||
*CLI> core show function SMDI_MSG_RETRIEVE
|
||||
|
||||
exten => _XXXXXXX,1,VoiceMail(${EXTEN}|${SMDI_VM_TYPE})
|
||||
exten => _XXXXXXX,n,Hangup
|
||||
-= Info about function 'SMDI_MSG_RETRIEVE' =-
|
||||
|
||||
exten => s,1,VoiceMailMain(${CALLERID(num)})
|
||||
exten => s,n,Hangup
|
||||
[Syntax]
|
||||
SMDI_MSG_RETRIEVE(<smdi port>,<station>[,timeout])
|
||||
|
||||
The ${SMDI_VM_TYPE} variable will be set to u, b, or nothing depending on the
|
||||
contents of the type of SMDI message received.
|
||||
[Synopsis]
|
||||
Retrieve an SMDI message.
|
||||
|
||||
[Description]
|
||||
This function is used to retrieve an incoming SMDI message. It returns
|
||||
an ID which can be used with the SMDI_MSG() function to access details of
|
||||
the message. Note that this is a destructive function in the sense that
|
||||
once an SMDI message is retrieved using this function, it is no longer in
|
||||
the global SMDI message queue, and can not be accessed by any other Asterisk
|
||||
channels. The timeout for this function is optional, and the default is
|
||||
3 seconds. When providing a timeout, it should be in milliseconds.
|
||||
|
||||
|
||||
*CLI> core show function SMDI_MSG
|
||||
|
||||
-= Info about function 'SMDI_MSG' =-
|
||||
|
||||
[Syntax]
|
||||
SMDI_MSG(<message_id>,<component>)
|
||||
|
||||
[Synopsis]
|
||||
Retrieve details about an SMDI message.
|
||||
|
||||
[Description]
|
||||
This function is used to access details of an SMDI message that was
|
||||
pulled from the incoming SMDI message queue using the SMDI_MSG_RETRIEVE()
|
||||
function.
|
||||
Valid message components are:
|
||||
station - The forwarding station
|
||||
callerid - The callerID of the calling party that was forwarded
|
||||
type - The call type. The value here is the exact character
|
||||
that came in on the SMDI link. Typically, example values
|
||||
are: D - Direct Calls, A - Forward All Calls,
|
||||
B - Forward Busy Calls, N - Forward No Answer Calls
|
||||
|
||||
|
||||
Here is an example of how to use these functions:
|
||||
|
||||
; Retrieve the SMDI message that is associated with the number that
|
||||
; was called in Asterisk.
|
||||
exten => _0XXX,1,Set(SMDI_MSG_ID=${SMDI_MSG_RETRIEVE(${EXTEN})})
|
||||
|
||||
; Ensure that the message was retrieved.
|
||||
exten => _0XXX,n,GotoIf($["x${SMDI_MSG_ID}" != "x"]?processcall:hangup)
|
||||
exten => _0XXX,n(hangup),NoOp(No SMDI message retrieved for ${EXTEN})
|
||||
|
||||
; Grab the details out of the SMDI message.
|
||||
exten => _0XXX,n(processcall),NoOp(Message found for ${EXTEN})
|
||||
exten => _0XXX,n,Set(SMDI_EXTEN=${SMDI_MSG(${SMDI_MSG_ID},station)})
|
||||
exten => _0XXX,n,Set(SMDI_CID=${SMDI_MSG(${SMDI_MSG_ID},callerid)})
|
||||
|
||||
; Map SMDI message types to the right voicemail option. If it is "B", use the
|
||||
; busy option. Otherwise, use the unavailable option.
|
||||
exten => _0XXX,n,GotoIf($["${SMDI_MSG(${SMDI_MSG_ID},type)}" == "B"]?usebusy:useunavail)
|
||||
|
||||
exten => _0XXX,n(usebusy),Set(SMDI_VM_TYPE=b)
|
||||
exten => _0XXX,n,Goto(continue)
|
||||
|
||||
exten => _0XXX,n,(useunavil),Set(SMDI_VM_TYPE=u)
|
||||
|
||||
exten => _0XXX,n(continue),NoOp( Process the rest of the call ... )
|
||||
|
||||
|
||||
===== 2) Ensuring complete MWI information over SMDI ==========================
|
||||
|
||||
Another change has been made to ensure that MWI state is properly propagated
|
||||
over the SMDI link. This replaces the use of externnotify=smdi for
|
||||
voicemail.conf. The issue is that we have to poll mailboxes occasionally for
|
||||
changes that were made using an IMAP client. So, this ability was added to
|
||||
res_smdi. To configure this, there is a new section in smdi.conf. It looks
|
||||
like this:
|
||||
|
||||
[mailboxes]
|
||||
; This section configures parameters related to MWI handling for the SMDI link.
|
||||
;
|
||||
; This option configures the polling interval used to check to see if the
|
||||
; mailboxes have any new messages. This option is specified in seconds.
|
||||
; The default value is 10 seconds.
|
||||
;
|
||||
;pollinginterval=10
|
||||
;
|
||||
; Before specifying mailboxes, you must specify an SMDI interface. All mailbox
|
||||
; definitions that follow will correspond to that SMDI interface. If you
|
||||
; specify another interface, then all definitions following that will correspond
|
||||
; to the new interface.
|
||||
;
|
||||
; Every other entry in this section of the configuration file is interpreted as
|
||||
; a mapping between the mailbox ID on the SMDI link, and the local Asterisk
|
||||
; mailbox name. In many cases, they are the same thing, but they still must be
|
||||
; listed here so that this module knows which mailboxes it needs to pay
|
||||
; attention to.
|
||||
;
|
||||
; Syntax:
|
||||
; <SMDI mailbox ID>=<Asterisk Mailbox Name>[@Asterisk Voicemail Context]
|
||||
;
|
||||
; If no Asterisk voicemail context is specified, "default" will be assumed.
|
||||
;
|
||||
;
|
||||
;smdiport=/dev/ttyS0
|
||||
;2565551234=1234@vmcontext1
|
||||
;2565555678=5678@vmcontext2
|
||||
;smdiport=/dev/ttyS1
|
||||
;2565559999=9999
|
||||
|
||||
===============================================================================
|
||||
|
||||
Reference in New Issue
Block a user