[asterisk-dev] [Code Review] Add FEATURE() and FEATUREMAP() functions.

Russell Bryant reviewboard at asterisk.org
Tue Apr 24 19:50:25 CDT 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1871/
-----------------------------------------------------------

(Updated April 24, 2012, 7:50 p.m.)


Review request for Asterisk Developers.


Summary
-------

This patch adds two new dialplan functions: FEATURE() and FEATUREMAP().
FEATURE() is indended to be used to allow customizing general feature
settings on a per-channel basis.  It currently allows you to set a
custom parkingtime for a channel.

FEATUREMAP() is similar, but allows customizing the built-in feature
mappings on a per-channel basis.  Currently you can customize the digit
string for activating blind or attended transfers.

More options and feature mappings could be added to this over time as
desired.


Diffs (updated)
-----

  /trunk/main/features.c 363426 

Diff: https://reviewboard.asterisk.org/r/1871/diff


Testing
-------

Using the following dialplan:

1) Dial 101, make sure normal transfers work (I tested transferring to 100).
2) Dial 102, make sure transfers using channel specific feature mappings work.
3) Dial 101, transfer to parking and observe normal parkingtime.
4) Dial 103, transfer to parking and verify that the custom parkingtime is used.


[featuretest]

include => parkedcalls

; Dummy extension for a Local channel.  We'll call this and transfer it.
exten => foo,1,Answer()
    same => n(wait),Wait(300)
    same => n,Goto(wait)

; Transfer target.
exten => 100,1,Answer()
    same => n(wait),Wait(300)
    same => n,Goto(wait)

; Call this and make sure blindxfer and atxfer still work using default mappings.
exten => 101,1,Answer()
    same => n,Verbose(0,Regular transfer test.)
    same => n,Verbose(0,Blind Transfer: ${FEATUREMAP(blindxfer)})
    same => n,Verbose(0,Attended Transfer: ${FEATUREMAP(atxfer)})
    same => n,Dial(Local/foo at featuretest,,tT)

; Call this and make sure blindxfer and atxfer work with custom mappings.
exten => 102,1,Answer()
    same => n,Verbose(0,Custom transfer test.)
    same => n,Verbose(0,Setting blindxfer to '77' and atxfer to '88')
    same => n,Set(FEATUREMAP(blindxfer)=77)
    same => n,Set(FEATUREMAP(atxfer)=88)
    same => n,Verbose(0,Blind Transfer: ${FEATUREMAP(blindxfer)})
    same => n,Verbose(0,Attended Transfer: ${FEATUREMAP(atxfer)})
    same => n,Dial(Local/foo at featuretest,,tT)

; Test setting a parkingtime.  Start with calling '101' and then parking.
; Then, call this and verify that the new parkingtime is used.
exten => 103,1,Answer()
    same => n,Verbose(0,Test custom parkingtime.)
    same => n,Verbose(0,Blind Transfer: ${FEATUREMAP(blindxfer)})
    same => n,Dial(Local/foo at featuretest,,tTU(setparkingtime^3))


; GoSub routine for setting parkingtime on a dialed channel.
[setparkingtime]

exten => s,1,Verbose(0,Setting custom parkingtime to '${ARG1}')
    same => n,Verbose(0,Old value: ${FEATURE(parkingtime)})
    same => n,Set(FEATURE(parkingtime)=${ARG1})
    same => n,Verbose(0,New value: ${FEATURE(parkingtime)})
    same => n,Return()


Thanks,

Russell

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120425/2d92fde4/attachment.htm>


More information about the asterisk-dev mailing list