FreeSwitch CallGroup Pickup (intercept)
Группы перехвата вызова
Назначим переменную callgroup в свойствах пользователя.
../conf/directory/666.xml
<include> <user id="666"> <params> <param name="password" value="$${default_password}"/> <param name="vm-password" value="666"/> </params> <variables> <variable name="accountcode" value="666"/> <variable name="user_context" value="default"/> <variable name="effective_caller_id_name" value=666IT"/> <variable name="effective_caller_id_number" alue="666"/> <variable name="callgroup" value="it"/> </variables> </user> </include>
Диалплан вызываемого екстеншена.
<action application="set" data="called_party_callgroup=${user_data($1@${domain_name} var callgroup)}"/>
-Получает значение переменной callgroup заданной в directory вызываемого абонента
<action application="db" data="insert/last_dial/${called_party_callgroup}/${uuid}"/>
-Записывает в БД полученное значение.
<extension name="Local_6XX"> <condition field="destination_number" expression="^(6\d{2})$"> <action application="set" data="called_party_callgroup=${user_data($1@${domain_name} var callgroup)}"/> <action application="db" data="insert/last_dial/${called_party_callgroup}/${uuid}"/> <action application="bridge" data="user/$1@${domain_name}"/> </condition> </extension>
Диалплан кода перехвата (в примере **)
intercept_unanswered_only=true - не позволит подключится к уже отвеченному вызову.
called_party_callgroup=${user_data(${username}@${domain_name} var callgroup)} - получаем значение переменной callgroup из которой абонент может перехватывать вызовы.
<extension name="group-intercept"> <condition field="destination_number" expression="^\**$"> <action application="set" data="intercept_unanswered_only=true"/> <action application="set" data="called_party_callgroup=${user_data(${username}@${domain_name} var callgroup)}"/> <action application="answer"/> <action application="intercept" data="${db(select/last_dial/${called_party_callgroup}/${uuid})}"/> <action application="sleep" data="2000"/> </condition> </extension>