Move implementation of an attended-transfer-complete sound from one channel

driver into a common place for multiple channel drivers.
(closes issue #13152)
 Reported by: caio1982
 Patches: 
       atxfer_complete_sound3.diff uploaded by caio1982 (license 22)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@134401 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Tilghman Lesher 2008-07-30 16:40:43 +00:00
parent f4fe5be9df
commit 853f6a8b3e
7 changed files with 39 additions and 17 deletions

View File

@ -109,8 +109,6 @@ Application Changes
SIP Changes
-----------
* The ATTENDED_TRANSFER_COMPLETE_SOUND can now be set using setvar to cause a given
audio file to be played upon completion of an attended transfer.
* Added DNS manager support to registrations for peers referencing peer entries.
DNS manager runs in the background which allows DNS lookups to be run asynchronously
as well as periodically updating the IP address. These properties allow for
@ -180,6 +178,13 @@ Queue changes
"QUEUE TIMING OPTIONS" in configs/queues.conf.sample for a detailed explanation of the option
as well as an explanation about timeout options in general
Miscellaneous
-------------
* The channel variable ATTENDED_TRANSFER_COMPLETE_SOUND can now be set using
the 'setvar' option to cause a given audio file to be played upon completion
of an attended transfer. Currently it works for DAHDI, IAX2, SIP, and
Skinny channels only.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 1.4.X to Asterisk 1.6.0 -------------
------------------------------------------------------------------------------

View File

@ -17748,17 +17748,6 @@ static int local_attended_transfer(struct sip_pvt *transferer, struct sip_dual *
ast_set_flag(&transferer->flags[0], SIP_DEFER_BYE_ON_TRANSFER); /* Delay hangup */
/* If we are performing an attended transfer and we have two channels involved then copy sound file information to play upon attended transfer completion */
if (target.chan2) {
const char *chan1_attended_sound = pbx_builtin_getvar_helper(target.chan1, "ATTENDED_TRANSFER_COMPLETE_SOUND"), *chan2_attended_sound = pbx_builtin_getvar_helper(target.chan2, "ATTENDED_TRANSFER_COMPLETE_SOUND");
if (!ast_strlen_zero(chan1_attended_sound)) {
pbx_builtin_setvar_helper(target.chan1, "BRIDGE_PLAY_SOUND", chan1_attended_sound);
}
if (!ast_strlen_zero(chan2_attended_sound)) {
pbx_builtin_setvar_helper(target.chan2, "BRIDGE_PLAY_SOUND", chan2_attended_sound);
}
}
/* Perform the transfer */
manager_event(EVENT_FLAG_CALL, "Transfer", "TransferMethod: SIP\r\nTransferType: Attended\r\nChannel: %s\r\nUniqueid: %s\r\nSIP-Callid: %s\r\nTargetChannel: %s\r\nTargetUniqueid: %s\r\n",
transferer->owner->name,

View File

@ -538,7 +538,11 @@ callgroup=1
pickupgroup=1
; Channel variable to be set for all calls from this channel
;setvar=CHANNEL=42
;setvar=CHANNEL=42
;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep ; This channel variable will
; cause the given audio file to
; be played upon completion of
; an attended transfer.
;
; Specify whether the channel should be answered immediately or if the simple

View File

@ -368,7 +368,10 @@ inkeys=freeworlddialup
;context=local
;auth=md5,plaintext,rsa
;secret=markpasswd
;setvar=foo=bar
;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep ; This channel variable will
; cause the given audio file to
; be played upon completion of
; an attended transfer.
;dbsecret=mysecrets/place ; Secrets can be stored in astdb, too
;transfer=no ; Disable IAX native transfer
;transfer=mediaonly ; When doing IAX native transfers, transfer

View File

@ -961,8 +961,10 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls
;defaultuser=goran ; Username to use when calling this device before registration
; Normally you do NOT need to set this parameter
;setvar=CUSTID=5678 ; Channel variable to be set for all calls from this device
;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep ; This channel variable will cause the given audio file to be played
; upon completion of an attended transfer
;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep ; This channel variable will
; cause the given audio file to
; be played upon completion of
; an attended transfer.
;[pre14-asterisk]
;type=friend

View File

@ -87,6 +87,10 @@ keepalive=120
;nat=yes
;callerid="George W. Bush" <202-456-1414>
;setvar=CUSTID=5678 ; Channel variable to be set for all calls from this device
;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep ; This channel variable will
; cause the given audio file to
; be played upon completion of
; an attended transfer.
;mailbox=500
;callwaiting=yes
;transfer=yes

View File

@ -1235,6 +1235,21 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st
l = strlen(xferto);
snprintf(xferto + l, sizeof(xferto) - l, "@%s/n", transferer_real_context); /* append context */
/* If we are performing an attended transfer and we have two channels involved then
copy sound file information to play upon attended transfer completion */
if (transferee) {
const char *chan1_attended_sound = pbx_builtin_getvar_helper(transferer, "ATTENDED_TRANSFER_COMPLETE_SOUND");
const char *chan2_attended_sound = pbx_builtin_getvar_helper(transferee, "ATTENDED_TRANSFER_COMPLETE_SOUND");
if (!ast_strlen_zero(chan1_attended_sound)) {
pbx_builtin_setvar_helper(transferer, "BRIDGE_PLAY_SOUND", chan1_attended_sound);
}
if (!ast_strlen_zero(chan2_attended_sound)) {
pbx_builtin_setvar_helper(transferee, "BRIDGE_PLAY_SOUND", chan2_attended_sound);
}
}
newchan = ast_feature_request_and_dial(transferer, transferee, "Local", ast_best_codec(transferer->nativeformats),
xferto, atxfernoanswertimeout, &outstate, transferer->cid.cid_num, transferer->cid.cid_name, 1, transferer->language);