Index: /trunk/op_server.pl =================================================================== --- /trunk/op_server.pl (revision 83) +++ /trunk/op_server.pl (revision 86) @@ -115,4 +115,5 @@ my %client_queue_nocrypt = (); my %ip_addy = (); +my %held_channel = (); my %agents_available_on_queue = (); my $queue_object = {}; @@ -2987,4 +2988,6 @@ elsif ( $evento =~ /^OriginateFailure$/ ) { $evento = "originatefailure"; } elsif ( $evento =~ /^ChannelReload$/ ) { $evento = "channelreload"; } + elsif ( $evento =~ /^Hold$/ ) { $evento = "hold"; } + elsif ( $evento =~ /^Unhold$/ ) { $evento = "unhold"; } elsif ( $evento =~ /^response-/ ) { $evento = "monitor"; } else { log_debug( "$heading No event match ($evento)", 32 ); } @@ -4824,4 +4827,10 @@ push @return, "$canal|$estado_final|$texto|$unico_id|$canalid"; $evento = ""; + } + elsif ( $evento eq "hold" ) { + $held_channel{$hash_temporal{"Channel"}}=1; + } + elsif ( $evento eq "unhold" ) { + delete $held_channel{$hash_temporal{"Channel"}}; } elsif ( $evento eq "extensionstatus" ) { @@ -5588,4 +5597,5 @@ if ( $quehace eq "corto" ) { log_debug( "$heading erasing datos{$uniqueid}", 256 ) if DEBUG; + delete $held_channel{$canalid}; delete $datos{$uniqueid}; delete $chanvar{$uniqueid}; @@ -7802,4 +7812,6 @@ my $indice = $origin_server . "^" . $origin_channel . $contextoaagregar; my $originate = $extension_transfer{$indice}; + my $transfiero_finalmente=""; + $originate =~ s/-?\d+\^(.*)/$1/; foreach ( keys(%buttons) ) { @@ -7817,4 +7829,12 @@ my @links = extraer_todos_los_enlaces_de_un_canal( $canal, $button_server{$datosflash} ); my @canal_transferir = @{ $sesbot{$btn_destino} }; + + foreach my $testchan (@canal_transferir) { + if ( defined( $held_channel{$testchan} ) ) { + log_debug( "$heading skip $testchan because it is on hold", 1 ) + } else { + $transfiero_finalmente = $testchan; + } + } my $cuantos = @links; @@ -7835,4 +7855,9 @@ else { + if($transfiero_finalmente eq "") { + $transfiero_finalmente=$canal_transferir[0]; + } + print "atxfer $transfiero_finalmente\n"; + log_debug( "** $canal_transferir[0] $links[0] will be transferred to $origin_channel ($originate)", 1 ) if DEBUG; @@ -7840,5 +7865,5 @@ my ( $vmext, $vmctx ) = split( /@/, $originate ); $comando = "Action: Atxfer\r\n"; - $comando .= "Channel: " . $canal_transferir[0] . "\r\n"; + $comando .= "Channel: " . $transfiero_finalmente . "\r\n"; $comando .= "Exten: $vmext\r\n"; $comando .= "Context: $vmctx\r\n";