]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
AMI: Add parking position parameter to Park action
authorJiajian Zhou <zhou_0611@163.com>
Fri, 19 May 2023 02:48:11 +0000 (10:48 +0800)
committerasterisk-org-access-app[bot] <120671045+asterisk-org-access-app[bot]@users.noreply.github.com>
Mon, 12 Jun 2023 13:56:34 +0000 (13:56 +0000)
Add a parking space extension parameter (ParkingSpace) to the Park action.
Park action will attempt to park the call to that extension.
If the extension is already in use, then execution will continue at the next priority.

UserNote: New ParkingSpace parameter has been added to AMI action Park.

res/parking/parking_manager.c

index 83558ba74ec7b5031f84c9b7ab1795e88f02127d..905a9b2b80d6e6a7c1394b1d6f4db6e417122c79 100644 (file)
                        <parameter name="Parkinglot" required="false">
                                <para>The parking lot to use when parking the channel</para>
                        </parameter>
+                       <parameter name="ParkingSpace" required="false">
+                               <para>The parking space extension in the parking lot.
+                                       If the space is already in use then execution will continue at the next priority.
+                               </para>
+                       </parameter>
                </syntax>
                <description>
                        <para>Park an arbitrary channel with optional arguments for specifying the parking lot used, how long
@@ -523,6 +528,7 @@ static int manager_park(struct mansession *s, const struct message *m)
        const char *announce_channel = astman_get_header(m, "AnnounceChannel");
        const char *timeout = astman_get_header(m, "Timeout");
        const char *parkinglot = astman_get_header(m, "Parkinglot");
+       const char *parkingspace = astman_get_header(m, "ParkingSpace");
        char buf[BUFSIZ];
        int timeout_override = -1;
 
@@ -557,7 +563,11 @@ static int manager_park(struct mansession *s, const struct message *m)
                ast_bridge_set_transfer_variables(chan, timeout_channel, 0);
                ast_channel_unlock(chan);
        }
-
+       
+       if (!ast_strlen_zero(parkingspace)) {
+               pbx_builtin_setvar_helper(chan, "PARKINGEXTEN", parkingspace);
+       }
+       
        parker_chan = ast_channel_bridge_peer(chan);
        if (!parker_chan || strcmp(ast_channel_name(parker_chan), timeout_channel)) {
                if (!ast_strlen_zero(announce_channel)) {