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>

FreeSWITCH

  • freeswitch/dp/fs_intercept_group_call.txt
  • Последние изменения: 2018/10/10