<html>
<head>
    <base href="https://wiki.asterisk.org/wiki">
            <link rel="stylesheet" href="/wiki/s/en/2176/25/9/_/styles/combined.css?spaceKey=AST&amp;forWysiwyg=true" type="text/css">
    </head>
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+12+Bridging+Use+Cases">Asterisk 12 Bridging Use Cases</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://wiki.asterisk.org/wiki/display/~mjordan">Matt Jordan</a>
    </h4>
        <br/>
                         <h4>Changes (3)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-added-lines" style="background-color: #dfd;">The following are use cases for Bridging in Asterisk. These are written at a very high level, so details regarding the specific mechanism that causes a Bridge to be created may be implied. <br></td></tr>
            <tr><td class="diff-changed-lines" ><span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">asdf</span> <span class="diff-added-words"style="background-color: #dfd;"> </span> <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{note:title=Note} <br>Unless otherwise specified, it is assumed that all channels are hung up, resources disposed of, and the bridge destroyed at the end of any use case. <br>{note} <br> <br>{toc} <br> <br>h1. Two Party Bridging <br> <br>h2. Basic Bridging <br> <br>h3. Core Bridging, Alice initiates hang up <br> <br>* Alice calls Bob using a configuration that does not allow for native bridging <br>* Bob Answers and Alice and Bob enter a bridge <br>* Alice and Bob can both converse with each other <br>* Alice hangs up <br>* Bob is hung up on <br> <br>h3. Core Bridging, Bob initiates hang up <br> <br>* Alice calls Bob using a configuration that does not allow for native bridging <br>* Bob Answers and Alice and Bob enter a bridge <br>* Alice and Bob can both converse with each other <br>* Bob hangs up <br>* Alice is hung up on <br> <br>h3. Native Bridging, Alice initiates hang up <br> <br>* Alice calls Bob using a configuration allows for native bridging <br>* Bob Answers and Alice and Bob enter a bridge <br>* Alice and Bob can both converse with each other <br>* Alice hangs up <br>* Bob is hung up on <br> <br>h3. Native Bridging, Bob initiates hang up <br> <br>* Alice calls Bob using a configuration that allows for native bridging <br>* Bob Answers and Alice and Bob enter a bridge <br>* Alice and Bob can both converse with each other <br>* Bob hangs up <br>* Alice is hung up on <br> <br>h2. Mid-Call Events <br> <br>h3. Party Identification <br> <br>h4. Connected Line Update <br> <br>* Alice calls Bob <br>* Bob Answers and Alice and Bob enter a bridge <br>* Alice causes a connected line update to be sent to Bob <br>* Bob causes a connected line update to be sent to Alice <br>* The party identification information for both Alice and Bob is changed. <br>* Alice hangs up. <br>* Bob is hung up on. <br> <br>h4. Redirecting Update <br> <br>* Alice calls Bob <br>* Bob Answers and Alice and Bob enter a bridge <br>* Alice causes a redirecting update to be sent to Bob <br>* Bob causes a redirecting update to be sent to Alice <br>* Alice hangs up. <br>* Bob is hung up on. <br> <br>h3. Timed Features <br> <br>h4. Timed Call <br> <br>* Alice calls Bob using an application that warns periodically throughout the call when there is time {{T}} left in the call and causing the call to end after time {{H}} <br>* Bob Answers and Alice and Bob enter a bridge <br>* Warnings are played to Alice and Bob when there is time {{T}} left in the call <br>* Warnings are repeated based on the configured interval <br>* The call ends after {{H}} time has elapsed <br>* Both Bob and Alice are hung up on. <br> <br>h4. Call Time Limit <br> <br>* Alice calls Bob using an application that terminates the call after {{H}} time <br>* Bob Answers and Alice and Bob enter a bridge <br>* The call ends after {{H}} time has elapsed <br>* Both Bob and Alice are hung up on <br> <br>h2. Two-party Features <br> <br>h3. DTMF Disconnect <br> <br>h4. Caller Nominal <br> <br>* Alice calls Bob using an application to allow DTMF disconnect by the caller <br>* Bob Answers and Alice and Bob enter a bridge <br>* Alice attempts to disconnect the call by pressing the appropriate DTMF <br>* Both Bob and Alice are hung up on <br> <br>h4. Callee Nominal <br> <br>* Alice calls Bob using an application to allow DTMF disconnect by the callee <br>* Bob Answers and Alice and Bob enter a bridge <br>* Bob attempts to disconnect the call by pressing the appropriate DTMF <br>* Both Bob and Alice are hung up on <br> <br>h4. Callee Prevention <br> <br>* Alice calls Bob using an application to allow DTMF disconnect by the caller <br>* Bob Answers and Alice and Bob enter a bridge <br>* Bob attempts to disconnect the call by pressing the appropriate DTMF <br>* The call continues, as Bob cannot hang up the call <br>* Alice hangs up <br>* Bob is hung up on <br> <br>h4. Caller Prevention <br> <br>* Alice calls Bob using an application to allow DTMF disconnect on the callee <br>* Bob Answers and Alice and Bob enter a bridge <br>* Alice attempts to disconnect the call by pressing the appropriate DTMF <br>* The call continues, as Alice cannot hang up the call <br>* Alice hangs up <br>* Bob is hung up on <br> <br>h3. Auto-Monitor and Auto-MixMonitor <br> <br>Auto-Monitor and Auto-MixMonitor <br>The following tests are written using the &#39;W&#39; and &#39;w&#39; options and the word &quot;Auto-Monitor&quot;. The tests should be run a second time with the &#39;X&#39; and &#39;x&#39; options and with &quot;Auto-MixMonitor&quot; though. The important thing to test is that the feature is detected and that the task is farmed out appropriately. The tests are not interested in the actual call recording process. <br> <br>Test 1: <br>Party A dials Party B with the &#39;W&#39; Dial option set. <br>Party B attempts to record the call using the configured Auto-Monitor key (this should fail) <br>Party A presses the configured Auto-Monitor key to record the call <br>Party B attempts to end the recording using the configured Auto-Monitor key (this should fail) <br>Party A presses the configured Auto-Monitor key to end the call recording <br>Either party hangs up <br> <br>Test 2: <br>Party A sets the BRIDGE_FEATURES channel variable to &#39;W&#39; <br>Party A dials Party B <br>Party B attempts to record the call using the configured Auto-Monitor key (this should fail) <br>Party A presses the configured Auto-Monitor key to record the call <br>Party B attempts to end the recording using the configured Auto-Monitor key (this should fail) <br>Party A presses the configured Auto-Monitor key to end the call recording <br>Either party hangs up <br>(NOTE: This test currently does not apply to the &#39;X&#39; option for Auto-MixMonitor) <br> <br>Test 3: <br>Party A dials Party B with the &#39;w&#39; Dial option set. <br>Party A attempts to record the call using the configured Auto-Monitor key (this should fail) <br>Party B presses the configured Auto-Monitor key to record the call <br>Party A attempts to end the recording using the configured Auto-Monitor key (this should fail) <br>Party B presses the configured Auto-Monitor key to end the call recording <br>Either party hangs up <br> <br>Test 4: <br>Party A sets the BRIDGE_FEATURES channel variable to &#39;w&#39; <br>Party A dials Party B <br>Party A attempts to record the call using the configured Auto-Monitor key (this should fail) <br>Party B presses the configured Auto-Monitor key to record the call <br>Party A attempts to end the recording using the configured Auto-Monitor key (this should fail) <br>Party B presses the configured Auto-Monitor key to end the call recording <br>Either party hangs up <br>(NOTE: This test currently does not apply to the &#39;x&#39; option for Auto-MixMonitor) <br> <br>One touch parking <br>Like with previous tests for DTMF features, the focus of this test is that the DTMF is recognized and the task is farmed out to the appropriate handler. There will be many more call parking tests described later. These will focus on the results of parking much more closely than this test will. They will also focus on off-nominal scenarios such as attempting to park a caller in a full lot. <br> <br>Test 1: <br>Party A dials Party B with the &#39;K&#39; Dial option set. <br>Party B attempts to park the call using the configured one touch parking key (this should fail) <br>Party A presses the configured one touch parking key to park the call <br>Party A hangs up <br> <br>Test 2: <br>Party A sets the BRIDGE_FEATURES channel variable to &#39;K&#39; <br>Party A dials Party B <br>Party B attempts to park the call using the configured one touch parking key (this should fail) <br>Party A presses the configured one touch parking key to park the call <br>Party A hangs up <br> <br>Test 3: <br>Party A dials Party B with the &#39;k&#39; Dial option set. <br>Party A attempts to park the call using the configured one touch parking key (this should fail) <br>Party B presses the configured one touch parking key to park the call <br>Party B hangs up <br> <br>Test 4: <br>Party A sets the BRIDGE_FEATURES channel variable to &#39;k&#39; <br>Party A dials Party B <br>Party A attempts to park the call using the configured one touch parking key (this should fail) <br>Party B presses the configured one touch parking key to park the call <br>Party B hangs up <br> <br>Transfer tests <br>These tests are designed to test call transfers. The initial tests will be much like the two-party DTMF feature tests above: they will simply test that DTMF is recognized and that the task gets distributed to the proper handler. Follow-up tests will focus more on the transfer operation to ensure that behavior is as expected. <br> <br>When testing transfers, keep in mind that multiple bridges will be involved. Therefore, the standard bridge checks need to be performed for each bridge involved. Blind transfers should all check the BLINDTRANSFER channel variable. <br> <br>Test 1: <br>Party A dials Party B with the &#39;T&#39; Dial option set. <br>Party B attempts to transfer the call with the configured blind transfer key (this should fail) <br>Party B attempts to transfer the call with the configured attended transfer key (this should fail) <br>Party A attempts to transfer the call with the configured blind transfer key <br>Party A waits until the time to dial the transfer target times out <br>Party A attempts to transfer the call with the configured attended transfer key <br>Party A waits until the time to dial the transfer target times out <br>Either party hangs up. <br> <br>Test 2: <br>Party A sets the BRIDGE_FEATURES channel variable to &#39;T&#39; <br>Party A dials Party B <br>Party B attempts to transfer the call with the configured blind transfer key (this should fail) <br>Party B attempts to transfer the call with the configured attended transfer key (this should fail) <br>Party A attempts to transfer the call with the configured blind transfer key <br>Party A waits until the time to dial the transfer target times out <br>Party A attempts to transfer the call with the configured attended transfer key <br>Party A waits until the time to dial the transfer target times out <br>Either party hangs up. <br> <br>Test 3: <br>Party A dials Party B with the &#39;t&#39; Dial option set. <br>Party A attempts to transfer the call with the configured blind transfer key (this should fail) <br>Party A attempts to transfer the call with the configured attended transfer key (this should fail) <br>Party B attempts to transfer the call with the configured blind transfer key <br>Party B waits until the time to dial the transfer target times out <br>Party B attempts to transfer the call with the configured attended transfer key <br>Party B waits until the time to dial the transfer target times out <br>Either party hangs up. <br> <br>Test 4: <br>Party A sets the BRIDGE_FEATURES channel variable to &#39;t&#39; <br>Party A dials Party B <br>Party A attempts to transfer the call with the configured blind transfer key (this should fail) <br>Party A attempts to transfer the call with the configured attended transfer key (this should fail) <br>Party B attempts to transfer the call with the configured blind transfer key <br>Party B waits until the time to dial the transfer target times out <br>Party B attempts to transfer the call with the configured attended transfer key <br>Party B waits until the time to dial the transfer target times out <br>Either party hangs up. <br> <br>Test 5: <br>Party A dials Party B with the &#39;T&#39; Dial option set <br>Party A attempts to transfer the call with the configured blind transfer key to Party C, Party C answers <br>Party C hangs up. <br> <br>Test 6: <br>The same as test 5 except that it is an attended transfer <br> <br>Test 7: <br>The same as test 5 except that it is a blonde transfer <br> <br>Test 8: <br>Party A dials Party B with the &#39;t&#39; Dial option set <br>Party B attempts to transfer the call with the configured blind transfer key to Party C, Party C answers <br>Party C hangs up. <br> <br>Test 9: <br>The same as test 8 except that it is an attended transfer <br> <br>Test 10: <br>The same as test 8 except that it is a blonde transfer <br> <br>Test 11: <br>Party A dials Party B with the &#39;T&#39; Dial option set <br>Party A attempts to transfer the call with the configured blind transfer key to a non-existent dialplan extension <br>Party A hangs up <br> <br>Test 12: <br>Same as test 11 except that it is an attended transfer <br> <br>Test 13: <br>Party A dials Party B with the &#39;t&#39; Dial option set <br>Party B attempts to transfer the call with the configured blind transfer key to a non-existent dialplan extension <br>Party B hangs up <br> <br>Test 14: <br>Same as test 13 except that it is an attended transfer <br> <br>Test 15: <br>Party A dials Party B with the &#39;T&#39; Dial option set <br>Party A attempts to transfer the call with the configured blind transfer key to Party C, who is busy <br> <br>Test 16: <br>Party A dials Party B with the &#39;T&#39; Dial option set <br>Party A attempts to transfer the call with the configured attended transfer key to Party C, who is busy <br>After parties A and B are re-bridged, Party A hangs up <br> <br>Test 17: <br>Party A dials Party B with the &#39;T&#39; Dial option set <br>Party A attempts a blonde transfer of the call with the configured attended transfer key to Party C, who does not answer within a time limit <br>Party A should be called back. Party A answers. <br>Party A hangs up. <br>(NOTE: This test appears to fail in current Asterisk trunk. A gets called back, but once he answers, the call is immediately dropped) <br> <br>Test 18: <br>Party A dials Party B with the &#39;T&#39; Dial option set <br>Party A attempts a blonde transfer of the call with the configured attended transfer key to Party C, who does not answer within a time limit <br>Party A should be called back. Party A does not answer. <br> <br>Test 19: <br>Party A dials Party B with the &#39;t&#39; Dial option set <br>Party B attempts to transfer the call with the configured blind transfer key to Party C, who is busy <br> <br>Test 20: <br>Party A dials Party B with the &#39;t&#39; Dial option set <br>Party B attempts to transfer the call with the configured attended transfer key to Party C, who is busy <br>After parties A and B are re-bridged, Party B hangs up <br> <br>Test 21: <br>Party A dials Party B with the &#39;t&#39; Dial option set <br>Party B attempts a blonde transfer of the call with the configured attended transfer key to Party C, who does not answer within a time limit <br>Party B should be called back. Party B answers. <br>Party B hangs up. <br>(NOTE: This test appears to fail in current Asterisk trunk. B gets called back, but once he answers, the call is immediately dropped) <br> <br>Test 22: <br>Party A dials Party B with the &#39;t&#39; Dial option set <br>Party B attempts a blonde transfer of the call with the configured attended transfer key to Party C, who does not answer within a time limit <br>Party B should be called back. Party B does not answer. <br> <br>Call Parking <br>Call parking has four main elements to test <br> <br>The act of parking the call <br>The effect of allowing a parked call to time out <br>The features allowed on a retrieved parked call <br>Parking the call <br>The following tests should be run three times <br> <br>In the first run, no parking lot is configured. <br>In the second, a specific pre-configured parking lot is chosen using the PARKINGLOT channel variable. <br>In the third, a dynamically-created parking lot is used. <br>Some tests do not apply for specific runs, and they will be noted. <br>In addition, each test should be run with the parties reversed. <br> <br>Test 1: <br>Party A dials Party B with the &#39;T&#39; Dial option set <br>Party A transfers Party B to the parking extension using the configured blind transfer key <br> <br>Test 2: <br>Party A dials Party B with the &#39;T&#39; Dial option set <br>Party A transfers Party B to the parking extension using the configured attended transfer key <br> <br>Tests 3 and 4: <br>Tests 1 and 2 are re-run but the parking lot is full <br> <br>Tests 5 and 6: <br>Tests 1 and 2 are re-run but with no configured parking extension <br> <br>Allowing the parked call to time out <br>All tests start with the precondition that there is a parked party and that the parked call timeout has been reached. <br>All tests should make sure after the timeout that the PARKINGSLOT, PARKEDLOT, and PARKER variables are set properly. <br> <br>Test 1: <br>comebacktoorigin is set to yes. <br>Parker is called back. <br>Parker answers the call. <br>Parker hangs up. <br> <br>Test 2: <br>comebacktoorigin is set to yes. <br>comebackdialtime is set to 3 seconds. <br>Parker is called back. <br>Parker does not answer the call within the configured time. <br>Ensure the call moves on to park-dial,t,1 extension <br> <br>Test 3: <br>comebacktoorigin is set to yes. <br>Parker is called back, but is busy. <br>Ensure the call moves on to park-dial,h,1 extension <br> <br>Test 4: <br>comebacktoorigin is set to no. <br>comebackcontext is set to &quot;park_context&quot; <br>Ensure that extension corresponding to parker&#39;s channel name is called back. <br>Parker answers the call, then hangs up. <br> <br>Test 5: <br>comebacktoorigin is set to no. <br>comebackcontext is set to &quot;park_context&quot; <br>Ensure that extension corresponding to parker&#39;s channel name is called back. <br>Parker does not answer <br> <br>Test 6: <br>comebacktoorigin is set to no. <br>comebackcontext is set to &quot;park_context&quot; <br>Ensure that extension corresponding to parker&#39;s channel name is called back. <br>Parker is busy <br> <br>Test 7: <br>comebacktoorigin is set to no. <br>comebackcontext is set to &quot;park_context&quot; <br>There is no extension corresponding to parker&#39;s channel name. <br>Ensure that &#39;s&#39; extension is called. <br> <br>Test 8: <br>comebacktoorigin is set to no. <br>comebackcontext is set to &quot;park_context&quot; <br>There is no extension corresponding to parker&#39;s channel name. <br>There is no &#39;s&#39; extension <br>Ensure parked call is hung up properly <br> <br>Features allowed after call parking retrieval <br>These tests have the precondition that a caller is parked <br> <br>Test 1: <br>With default options set, Party A retrieves the parked call. <br>Parties A and B both attempt blind and attended transfers. They should not work. <br>Parties A and B both attempt one-touch recording. They should not work. <br>Parties A and B both attempt one-touch parking. They should not work. <br>Parties A and B both attempt DTMF hangup. They should not work. <br> <br>Test 2: <br>parkedcalltransfers is set to caller <br>Party A retrieves parked call. <br>Party B attempts to transfer the call with blind and attended transfer keys. They should not work. <br>Party A transfers party B to party C. <br> <br>Test 3: <br>Re-run Test 2 with parkedcalltransfers set to callee and reverse parties&#39; roles. <br> <br>Test 4: <br>parkedcalltransfers is set to both <br>Party A retrieves parked call <br>Party A transfers party B to party C <br> <br>Test 5: <br>Same as Test 4 but Party B makes the transfer <br> <br>Tests 6-9: <br>Same as tests 2-5, but applicable to the parkedcallhangup setting. <br> <br>Tests 10-13: <br>Same as tests 2-5, but applicable to the parkedcallreparking setting. <br> <br>Tests 14-17: <br>Same as tests 2-5, but applicable to the parkedcallrecording setting. <br> <br>Tests 18-33: <br>Same as tests 2-17, but instead of using features.conf settings, have settings <br>inherited from the original bridge by using the h, H, k, K, w, W, x, and X settings for Dial. <br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <p>The following are use cases for Bridging in Asterisk. These are written at a very high level, so details regarding the specific mechanism that causes a Bridge to be created may be implied.</p>

<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/wiki/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b>Note</b><br />Unless otherwise specified, it is assumed that all channels are hung up, resources disposed of, and the bridge destroyed at the end of any use case.</td></tr></table></div>

<div>
<ul>
    <li><a href='#Asterisk12BridgingUseCases-TwoPartyBridging'>Two Party Bridging</a></li>
<ul>
    <li><a href='#Asterisk12BridgingUseCases-BasicBridging'>Basic Bridging</a></li>
<ul>
    <li><a href='#Asterisk12BridgingUseCases-CoreBridging%2CAliceinitiateshangup'>Core Bridging, Alice initiates hang up</a></li>
    <li><a href='#Asterisk12BridgingUseCases-CoreBridging%2CBobinitiateshangup'>Core Bridging, Bob initiates hang up</a></li>
    <li><a href='#Asterisk12BridgingUseCases-NativeBridging%2CAliceinitiateshangup'>Native Bridging, Alice initiates hang up</a></li>
    <li><a href='#Asterisk12BridgingUseCases-NativeBridging%2CBobinitiateshangup'>Native Bridging, Bob initiates hang up</a></li>
</ul>
    <li><a href='#Asterisk12BridgingUseCases-MidCallEvents'>Mid-Call Events</a></li>
<ul>
    <li><a href='#Asterisk12BridgingUseCases-PartyIdentification'>Party Identification</a></li>
<ul>
    <li><a href='#Asterisk12BridgingUseCases-ConnectedLineUpdate'>Connected Line Update</a></li>
    <li><a href='#Asterisk12BridgingUseCases-RedirectingUpdate'>Redirecting Update</a></li>
</ul>
    <li><a href='#Asterisk12BridgingUseCases-TimedFeatures'>Timed Features</a></li>
<ul>
    <li><a href='#Asterisk12BridgingUseCases-TimedCall'>Timed Call</a></li>
    <li><a href='#Asterisk12BridgingUseCases-CallTimeLimit'>Call Time Limit</a></li>
</ul>
</ul>
    <li><a href='#Asterisk12BridgingUseCases-TwopartyFeatures'>Two-party Features</a></li>
<ul>
    <li><a href='#Asterisk12BridgingUseCases-DTMFDisconnect'>DTMF Disconnect</a></li>
<ul>
    <li><a href='#Asterisk12BridgingUseCases-CallerNominal'>Caller Nominal</a></li>
    <li><a href='#Asterisk12BridgingUseCases-CalleeNominal'>Callee Nominal</a></li>
    <li><a href='#Asterisk12BridgingUseCases-CalleePrevention'>Callee Prevention</a></li>
    <li><a href='#Asterisk12BridgingUseCases-CallerPrevention'>Caller Prevention</a></li>
</ul>
    <li><a href='#Asterisk12BridgingUseCases-AutoMonitorandAutoMixMonitor'>Auto-Monitor and Auto-MixMonitor</a></li>
</ul>
</ul>
</ul></div>

<h1><a name="Asterisk12BridgingUseCases-TwoPartyBridging"></a>Two Party Bridging</h1>

<h2><a name="Asterisk12BridgingUseCases-BasicBridging"></a>Basic Bridging</h2>

<h3><a name="Asterisk12BridgingUseCases-CoreBridging%2CAliceinitiateshangup"></a>Core Bridging, Alice initiates hang up</h3>

<ul>
        <li>Alice calls Bob using a configuration that does not allow for native bridging</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Alice and Bob can both converse with each other</li>
        <li>Alice hangs up</li>
        <li>Bob is hung up on</li>
</ul>


<h3><a name="Asterisk12BridgingUseCases-CoreBridging%2CBobinitiateshangup"></a>Core Bridging, Bob initiates hang up</h3>

<ul>
        <li>Alice calls Bob using a configuration that does not allow for native bridging</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Alice and Bob can both converse with each other</li>
        <li>Bob hangs up</li>
        <li>Alice is hung up on</li>
</ul>


<h3><a name="Asterisk12BridgingUseCases-NativeBridging%2CAliceinitiateshangup"></a>Native Bridging, Alice initiates hang up</h3>

<ul>
        <li>Alice calls Bob using a configuration allows for native bridging</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Alice and Bob can both converse with each other</li>
        <li>Alice hangs up</li>
        <li>Bob is hung up on</li>
</ul>


<h3><a name="Asterisk12BridgingUseCases-NativeBridging%2CBobinitiateshangup"></a>Native Bridging, Bob initiates hang up</h3>

<ul>
        <li>Alice calls Bob using a configuration that allows for native bridging</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Alice and Bob can both converse with each other</li>
        <li>Bob hangs up</li>
        <li>Alice is hung up on</li>
</ul>


<h2><a name="Asterisk12BridgingUseCases-MidCallEvents"></a>Mid-Call Events</h2>

<h3><a name="Asterisk12BridgingUseCases-PartyIdentification"></a>Party Identification</h3>

<h4><a name="Asterisk12BridgingUseCases-ConnectedLineUpdate"></a>Connected Line Update</h4>

<ul>
        <li>Alice calls Bob</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Alice causes a connected line update to be sent to Bob</li>
        <li>Bob causes a connected line update to be sent to Alice</li>
        <li>The party identification information for both Alice and Bob is changed.</li>
        <li>Alice hangs up.</li>
        <li>Bob is hung up on.</li>
</ul>


<h4><a name="Asterisk12BridgingUseCases-RedirectingUpdate"></a>Redirecting Update</h4>

<ul>
        <li>Alice calls Bob</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Alice causes a redirecting update to be sent to Bob</li>
        <li>Bob causes a redirecting update to be sent to Alice</li>
        <li>Alice hangs up.</li>
        <li>Bob is hung up on.</li>
</ul>


<h3><a name="Asterisk12BridgingUseCases-TimedFeatures"></a>Timed Features</h3>

<h4><a name="Asterisk12BridgingUseCases-TimedCall"></a>Timed Call</h4>

<ul>
        <li>Alice calls Bob using an application that warns periodically throughout the call when there is time <tt>T</tt> left in the call and causing the call to end after time <tt>H</tt></li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Warnings are played to Alice and Bob when there is time <tt>T</tt> left in the call</li>
        <li>Warnings are repeated based on the configured interval</li>
        <li>The call ends after <tt>H</tt> time has elapsed</li>
        <li>Both Bob and Alice are hung up on.</li>
</ul>


<h4><a name="Asterisk12BridgingUseCases-CallTimeLimit"></a>Call Time Limit</h4>

<ul>
        <li>Alice calls Bob using an application that terminates the call after <tt>H</tt> time</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>The call ends after <tt>H</tt> time has elapsed</li>
        <li>Both Bob and Alice are hung up on</li>
</ul>


<h2><a name="Asterisk12BridgingUseCases-TwopartyFeatures"></a>Two-party Features</h2>

<h3><a name="Asterisk12BridgingUseCases-DTMFDisconnect"></a>DTMF Disconnect</h3>

<h4><a name="Asterisk12BridgingUseCases-CallerNominal"></a>Caller Nominal</h4>

<ul>
        <li>Alice calls Bob using an application to allow DTMF disconnect by the caller</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Alice attempts to disconnect the call by pressing the appropriate DTMF</li>
        <li>Both Bob and Alice are hung up on</li>
</ul>


<h4><a name="Asterisk12BridgingUseCases-CalleeNominal"></a>Callee Nominal</h4>

<ul>
        <li>Alice calls Bob using an application to allow DTMF disconnect by the callee</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Bob attempts to disconnect the call by pressing the appropriate DTMF</li>
        <li>Both Bob and Alice are hung up on</li>
</ul>


<h4><a name="Asterisk12BridgingUseCases-CalleePrevention"></a>Callee Prevention</h4>

<ul>
        <li>Alice calls Bob using an application to allow DTMF disconnect by the caller</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Bob attempts to disconnect the call by pressing the appropriate DTMF</li>
        <li>The call continues, as Bob cannot hang up the call</li>
        <li>Alice hangs up</li>
        <li>Bob is hung up on</li>
</ul>


<h4><a name="Asterisk12BridgingUseCases-CallerPrevention"></a>Caller Prevention</h4>

<ul>
        <li>Alice calls Bob using an application to allow DTMF disconnect on the callee</li>
        <li>Bob Answers and Alice and Bob enter a bridge</li>
        <li>Alice attempts to disconnect the call by pressing the appropriate DTMF</li>
        <li>The call continues, as Alice cannot hang up the call</li>
        <li>Alice hangs up</li>
        <li>Bob is hung up on</li>
</ul>


<h3><a name="Asterisk12BridgingUseCases-AutoMonitorandAutoMixMonitor"></a>Auto-Monitor and Auto-MixMonitor</h3>

<p>Auto-Monitor and Auto-MixMonitor<br/>
The following tests are written using the 'W' and 'w' options and the word "Auto-Monitor". The tests should be run a second time with the 'X' and 'x' options and with "Auto-MixMonitor" though. The important thing to test is that the feature is detected and that the task is farmed out appropriately. The tests are not interested in the actual call recording process.</p>

<p>Test 1:<br/>
Party A dials Party B with the 'W' Dial option set.<br/>
Party B attempts to record the call using the configured Auto-Monitor key (this should fail)<br/>
Party A presses the configured Auto-Monitor key to record the call<br/>
Party B attempts to end the recording using the configured Auto-Monitor key (this should fail)<br/>
Party A presses the configured Auto-Monitor key to end the call recording<br/>
Either party hangs up</p>

<p>Test 2:<br/>
Party A sets the BRIDGE_FEATURES channel variable to 'W'<br/>
Party A dials Party B<br/>
Party B attempts to record the call using the configured Auto-Monitor key (this should fail)<br/>
Party A presses the configured Auto-Monitor key to record the call<br/>
Party B attempts to end the recording using the configured Auto-Monitor key (this should fail)<br/>
Party A presses the configured Auto-Monitor key to end the call recording<br/>
Either party hangs up<br/>
(NOTE: This test currently does not apply to the 'X' option for Auto-MixMonitor)</p>

<p>Test 3:<br/>
Party A dials Party B with the 'w' Dial option set.<br/>
Party A attempts to record the call using the configured Auto-Monitor key (this should fail)<br/>
Party B presses the configured Auto-Monitor key to record the call<br/>
Party A attempts to end the recording using the configured Auto-Monitor key (this should fail)<br/>
Party B presses the configured Auto-Monitor key to end the call recording<br/>
Either party hangs up</p>

<p>Test 4:<br/>
Party A sets the BRIDGE_FEATURES channel variable to 'w'<br/>
Party A dials Party B<br/>
Party A attempts to record the call using the configured Auto-Monitor key (this should fail)<br/>
Party B presses the configured Auto-Monitor key to record the call<br/>
Party A attempts to end the recording using the configured Auto-Monitor key (this should fail)<br/>
Party B presses the configured Auto-Monitor key to end the call recording<br/>
Either party hangs up<br/>
(NOTE: This test currently does not apply to the 'x' option for Auto-MixMonitor)</p>

<p>One touch parking<br/>
Like with previous tests for DTMF features, the focus of this test is that the DTMF is recognized and the task is farmed out to the appropriate handler. There will be many more call parking tests described later. These will focus on the results of parking much more closely than this test will. They will also focus on off-nominal scenarios such as attempting to park a caller in a full lot.</p>

<p>Test 1:<br/>
Party A dials Party B with the 'K' Dial option set.<br/>
Party B attempts to park the call using the configured one touch parking key (this should fail)<br/>
Party A presses the configured one touch parking key to park the call<br/>
Party A hangs up</p>

<p>Test 2:<br/>
Party A sets the BRIDGE_FEATURES channel variable to 'K'<br/>
Party A dials Party B<br/>
Party B attempts to park the call using the configured one touch parking key (this should fail)<br/>
Party A presses the configured one touch parking key to park the call<br/>
Party A hangs up</p>

<p>Test 3:<br/>
Party A dials Party B with the 'k' Dial option set.<br/>
Party A attempts to park the call using the configured one touch parking key (this should fail)<br/>
Party B presses the configured one touch parking key to park the call<br/>
Party B hangs up</p>

<p>Test 4:<br/>
Party A sets the BRIDGE_FEATURES channel variable to 'k'<br/>
Party A dials Party B<br/>
Party A attempts to park the call using the configured one touch parking key (this should fail)<br/>
Party B presses the configured one touch parking key to park the call<br/>
Party B hangs up</p>

<p>Transfer tests<br/>
These tests are designed to test call transfers. The initial tests will be much like the two-party DTMF feature tests above: they will simply test that DTMF is recognized and that the task gets distributed to the proper handler. Follow-up tests will focus more on the transfer operation to ensure that behavior is as expected.</p>

<p>When testing transfers, keep in mind that multiple bridges will be involved. Therefore, the standard bridge checks need to be performed for each bridge involved. Blind transfers should all check the BLINDTRANSFER channel variable.</p>

<p>Test 1:<br/>
Party A dials Party B with the 'T' Dial option set.<br/>
Party B attempts to transfer the call with the configured blind transfer key (this should fail)<br/>
Party B attempts to transfer the call with the configured attended transfer key (this should fail)<br/>
Party A attempts to transfer the call with the configured blind transfer key<br/>
Party A waits until the time to dial the transfer target times out<br/>
Party A attempts to transfer the call with the configured attended transfer key<br/>
Party A waits until the time to dial the transfer target times out<br/>
Either party hangs up.</p>

<p>Test 2:<br/>
Party A sets the BRIDGE_FEATURES channel variable to 'T'<br/>
Party A dials Party B<br/>
Party B attempts to transfer the call with the configured blind transfer key (this should fail)<br/>
Party B attempts to transfer the call with the configured attended transfer key (this should fail)<br/>
Party A attempts to transfer the call with the configured blind transfer key<br/>
Party A waits until the time to dial the transfer target times out<br/>
Party A attempts to transfer the call with the configured attended transfer key<br/>
Party A waits until the time to dial the transfer target times out<br/>
Either party hangs up.</p>

<p>Test 3:<br/>
Party A dials Party B with the 't' Dial option set.<br/>
Party A attempts to transfer the call with the configured blind transfer key (this should fail)<br/>
Party A attempts to transfer the call with the configured attended transfer key (this should fail)<br/>
Party B attempts to transfer the call with the configured blind transfer key<br/>
Party B waits until the time to dial the transfer target times out<br/>
Party B attempts to transfer the call with the configured attended transfer key<br/>
Party B waits until the time to dial the transfer target times out<br/>
Either party hangs up.</p>

<p>Test 4:<br/>
Party A sets the BRIDGE_FEATURES channel variable to 't'<br/>
Party A dials Party B<br/>
Party A attempts to transfer the call with the configured blind transfer key (this should fail)<br/>
Party A attempts to transfer the call with the configured attended transfer key (this should fail)<br/>
Party B attempts to transfer the call with the configured blind transfer key<br/>
Party B waits until the time to dial the transfer target times out<br/>
Party B attempts to transfer the call with the configured attended transfer key<br/>
Party B waits until the time to dial the transfer target times out<br/>
Either party hangs up.</p>

<p>Test 5:<br/>
Party A dials Party B with the 'T' Dial option set<br/>
Party A attempts to transfer the call with the configured blind transfer key to Party C, Party C answers<br/>
Party C hangs up.</p>

<p>Test 6:<br/>
The same as test 5 except that it is an attended transfer</p>

<p>Test 7:<br/>
The same as test 5 except that it is a blonde transfer</p>

<p>Test 8:<br/>
Party A dials Party B with the 't' Dial option set<br/>
Party B attempts to transfer the call with the configured blind transfer key to Party C, Party C answers<br/>
Party C hangs up.</p>

<p>Test 9:<br/>
The same as test 8 except that it is an attended transfer</p>

<p>Test 10:<br/>
The same as test 8 except that it is a blonde transfer</p>

<p>Test 11:<br/>
Party A dials Party B with the 'T' Dial option set<br/>
Party A attempts to transfer the call with the configured blind transfer key to a non-existent dialplan extension<br/>
Party A hangs up</p>

<p>Test 12:<br/>
Same as test 11 except that it is an attended transfer</p>

<p>Test 13:<br/>
Party A dials Party B with the 't' Dial option set<br/>
Party B attempts to transfer the call with the configured blind transfer key to a non-existent dialplan extension<br/>
Party B hangs up</p>

<p>Test 14:<br/>
Same as test 13 except that it is an attended transfer</p>

<p>Test 15:<br/>
Party A dials Party B with the 'T' Dial option set<br/>
Party A attempts to transfer the call with the configured blind transfer key to Party C, who is busy</p>

<p>Test 16:<br/>
Party A dials Party B with the 'T' Dial option set<br/>
Party A attempts to transfer the call with the configured attended transfer key to Party C, who is busy<br/>
After parties A and B are re-bridged, Party A hangs up</p>

<p>Test 17:<br/>
Party A dials Party B with the 'T' Dial option set<br/>
Party A attempts a blonde transfer of the call with the configured attended transfer key to Party C, who does not answer within a time limit<br/>
Party A should be called back. Party A answers.<br/>
Party A hangs up.<br/>
(NOTE: This test appears to fail in current Asterisk trunk. A gets called back, but once he answers, the call is immediately dropped)</p>

<p>Test 18:<br/>
Party A dials Party B with the 'T' Dial option set<br/>
Party A attempts a blonde transfer of the call with the configured attended transfer key to Party C, who does not answer within a time limit<br/>
Party A should be called back. Party A does not answer.</p>

<p>Test 19:<br/>
Party A dials Party B with the 't' Dial option set<br/>
Party B attempts to transfer the call with the configured blind transfer key to Party C, who is busy</p>

<p>Test 20:<br/>
Party A dials Party B with the 't' Dial option set<br/>
Party B attempts to transfer the call with the configured attended transfer key to Party C, who is busy<br/>
After parties A and B are re-bridged, Party B hangs up</p>

<p>Test 21:<br/>
Party A dials Party B with the 't' Dial option set<br/>
Party B attempts a blonde transfer of the call with the configured attended transfer key to Party C, who does not answer within a time limit<br/>
Party B should be called back. Party B answers.<br/>
Party B hangs up.<br/>
(NOTE: This test appears to fail in current Asterisk trunk. B gets called back, but once he answers, the call is immediately dropped)</p>

<p>Test 22:<br/>
Party A dials Party B with the 't' Dial option set<br/>
Party B attempts a blonde transfer of the call with the configured attended transfer key to Party C, who does not answer within a time limit<br/>
Party B should be called back. Party B does not answer.</p>

<p>Call Parking<br/>
Call parking has four main elements to test</p>

<p>The act of parking the call<br/>
The effect of allowing a parked call to time out<br/>
The features allowed on a retrieved parked call<br/>
Parking the call<br/>
The following tests should be run three times</p>

<p>In the first run, no parking lot is configured.<br/>
In the second, a specific pre-configured parking lot is chosen using the PARKINGLOT channel variable.<br/>
In the third, a dynamically-created parking lot is used.<br/>
Some tests do not apply for specific runs, and they will be noted.<br/>
In addition, each test should be run with the parties reversed.</p>

<p>Test 1:<br/>
Party A dials Party B with the 'T' Dial option set<br/>
Party A transfers Party B to the parking extension using the configured blind transfer key</p>

<p>Test 2:<br/>
Party A dials Party B with the 'T' Dial option set<br/>
Party A transfers Party B to the parking extension using the configured attended transfer key</p>

<p>Tests 3 and 4:<br/>
Tests 1 and 2 are re-run but the parking lot is full</p>

<p>Tests 5 and 6:<br/>
Tests 1 and 2 are re-run but with no configured parking extension</p>

<p>Allowing the parked call to time out<br/>
All tests start with the precondition that there is a parked party and that the parked call timeout has been reached.<br/>
All tests should make sure after the timeout that the PARKINGSLOT, PARKEDLOT, and PARKER variables are set properly.</p>

<p>Test 1:<br/>
comebacktoorigin is set to yes.<br/>
Parker is called back.<br/>
Parker answers the call.<br/>
Parker hangs up.</p>

<p>Test 2:<br/>
comebacktoorigin is set to yes.<br/>
comebackdialtime is set to 3 seconds.<br/>
Parker is called back.<br/>
Parker does not answer the call within the configured time.<br/>
Ensure the call moves on to park-dial,t,1 extension</p>

<p>Test 3:<br/>
comebacktoorigin is set to yes.<br/>
Parker is called back, but is busy.<br/>
Ensure the call moves on to park-dial,h,1 extension</p>

<p>Test 4:<br/>
comebacktoorigin is set to no.<br/>
comebackcontext is set to "park_context"<br/>
Ensure that extension corresponding to parker's channel name is called back.<br/>
Parker answers the call, then hangs up.</p>

<p>Test 5:<br/>
comebacktoorigin is set to no.<br/>
comebackcontext is set to "park_context"<br/>
Ensure that extension corresponding to parker's channel name is called back.<br/>
Parker does not answer</p>

<p>Test 6:<br/>
comebacktoorigin is set to no.<br/>
comebackcontext is set to "park_context"<br/>
Ensure that extension corresponding to parker's channel name is called back.<br/>
Parker is busy</p>

<p>Test 7:<br/>
comebacktoorigin is set to no.<br/>
comebackcontext is set to "park_context"<br/>
There is no extension corresponding to parker's channel name.<br/>
Ensure that 's' extension is called.</p>

<p>Test 8:<br/>
comebacktoorigin is set to no.<br/>
comebackcontext is set to "park_context"<br/>
There is no extension corresponding to parker's channel name.<br/>
There is no 's' extension<br/>
Ensure parked call is hung up properly</p>

<p>Features allowed after call parking retrieval<br/>
These tests have the precondition that a caller is parked</p>

<p>Test 1:<br/>
With default options set, Party A retrieves the parked call.<br/>
Parties A and B both attempt blind and attended transfers. They should not work.<br/>
Parties A and B both attempt one-touch recording. They should not work.<br/>
Parties A and B both attempt one-touch parking. They should not work.<br/>
Parties A and B both attempt DTMF hangup. They should not work.</p>

<p>Test 2:<br/>
parkedcalltransfers is set to caller<br/>
Party A retrieves parked call.<br/>
Party B attempts to transfer the call with blind and attended transfer keys. They should not work.<br/>
Party A transfers party B to party C.</p>

<p>Test 3:<br/>
Re-run Test 2 with parkedcalltransfers set to callee and reverse parties' roles.</p>

<p>Test 4:<br/>
parkedcalltransfers is set to both<br/>
Party A retrieves parked call<br/>
Party A transfers party B to party C</p>

<p>Test 5:<br/>
Same as Test 4 but Party B makes the transfer</p>

<p>Tests 6-9:<br/>
Same as tests 2-5, but applicable to the parkedcallhangup setting.</p>

<p>Tests 10-13:<br/>
Same as tests 2-5, but applicable to the parkedcallreparking setting.</p>

<p>Tests 14-17:<br/>
Same as tests 2-5, but applicable to the parkedcallrecording setting.</p>

<p>Tests 18-33:<br/>
Same as tests 2-17, but instead of using features.conf settings, have settings<br/>
inherited from the original bridge by using the h, H, k, K, w, W, x, and X settings for Dial.</p>
    </div>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;" class="grey">
                        <a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST">Stop watching space</a>
            <span style="padding: 0px 5px;">|</span>
                <a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action">Change email notification preferences</a>
</div>
        <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+12+Bridging+Use+Cases">View Online</a>
        |
        <a href="https://wiki.asterisk.org/wiki/pages/diffpagesbyversion.action?pageId=22088050&revisedVersion=2&originalVersion=1">View Changes</a>
                |
        <a href="https://wiki.asterisk.org/wiki/display/AST/Asterisk+12+Bridging+Use+Cases?showComments=true&amp;showCommentArea=true#addcomment">Add Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>