%%%----------------------------------------------------------------------------- %%% @copyright (C) 2014-2019, 2600Hz %%% @doc Transfers caller to the extension extracted in the regex. %%% %%%

Data options:

%%%
%%%
`takeback_dtmf'
%%%
Transferor can cancel the transfer request: `2'.
%%% %%%
`moh'
%%%
Media ID for custom music on hold.
%%% %%%
`target'
%%%
Extension number or DID to transfer to.
%%% %%%
`ringback'
%%%
Ringback to play to transferor: `"%(2000,4000,440,480)"'.
%%%
%%% %%% @author James Aimonetti %%% @end %%%----------------------------------------------------------------------------- -module(cf_transfer). -behaviour(gen_cf_action). -export([handle/2]). -include("callflow.hrl"). -spec handle(kz_json:object(), kapps_call:call()) -> no_return(). handle(Data, Call) -> kapps_call:put_callid(Call), [Capture|_] = kz_json:get_list_value(<<"captures">>, Data, [<<"no_match">>]), TransferTo = kz_json:get_ne_binary_value(<<"target">>, Data, Capture), TransferLeg = transfer_leg(kz_json:get_ne_binary_value(<<"leg">>, Data, default_transfer_leg(Capture))), case kz_json:get_ne_binary_value(<<"transfer_type">>, Data, <<"blind">>) of <<"attended">> -> kapps_call_command:transfer(<<"attended">>, TransferTo, Call); <<"blind">> -> kapps_call_command:transfer(<<"blind">>, TransferTo, TransferLeg, Call) end, {'stop', Call}. -spec default_transfer_leg(kz_term:ne_binary()) -> kz_term:ne_binary(). default_transfer_leg(<<"no_match">>) -> <<"self">>; default_transfer_leg(_) -> <<"bleg">>. -spec transfer_leg(kz_term:ne_binary()) -> kz_term:api_ne_binary(). transfer_leg(<<"self">>) -> 'undefined'; transfer_leg(Leg) -> Leg.