не работает диалплан freeswitch

#freeswitch

#freeswitch

Вопрос:

Я пытаюсь понять модуль db.

Вот мой диалплан для тестирования.

Проблема в том, что мое условие не работает. Без условий он работает нормально. Кто-нибудь, пожалуйста, объясните, как я могу заставить это работать?

     <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <document type="freeswitch/xml">
    <section name="dialplan" description="Test Dialplan">
    <context name="default">
    <extension name="919824012345">
    <condition field="destination_number" expression="919824012345">
    <action application="set" data="effective_destination_number=919824012345"/>
    <action application="set" data="bridge_pre_execute_bleg_app=sched_hangup"/>
    <action application="set" data="bridge_pre_execute_bleg_data= 6000 normal_clearing"/>
    
    <action application="set" data="hangup_after_bridge=true"/>
    <action application="set" data="continue_on_fail=TRUE"/>
    <action application="set" data="call_processed=internal"/>
    <action application="set" data="call_direction=outbound"/>
    <action application="set" data="accountname=default"/>
    <action application="set" data="origination_rates=ID:2|CODE:^91.*|DESTINATION:|CONNECTIONCOST:0.00000|INCLUDEDSECONDS:0|CT:|COST:0.20000|INC:60|INITIALBLOCK:1|RATEGROUP:1|MARKUP:0|CI:0|ACCID:24"/>
    <action application="set" data="original_caller_id_name=919426223273"/>
    <action application="set" data="original_caller_id_number=919824012345"/>
    <action application="limit" data="db 24 user_24 1 !SWITCH_CONGESTION"/>
    
    <condition field="${db(exists/realm/account_24)}" expression="^true$"/>
<condition field="${db(select/realm/account_24)}" expression="4"/>
<action application="set" data="var=${db(select/realm/account_24)}"/>
<action application="db" data="insert/realm/account_24/$${var} 1"/>
<anti-action application="hangup" data="${originate_disposition}"/>
</condition>
<anti-action application="db" data="insert/realm/account_24/1"/>
<action application="set" data="execute_on_anwer=transfer OUTBOUNDSERVICE XML default"/>
</condition>
<action application="bridge" data="[leg_timeout=30,absolute_codec_string=^^:PCMA:G729:PCMA]sofia/gateway/mygateway/919824012345"/>
    </condition>
    </extension>
    </context>
    </section>
    </document>
  

Я хотел бы достичь следующего

если существует учетная запись account_24, то выберите значение ключа account_24. Если его значение 4 или меньше, то продолжайте вызов и добавьте еще один счетчик. Если его значение 4, то вызов зависания. Как только вызов будет завершен, уменьшите его количество до 0.

Простым языком, управление подсчетом, чтобы узнать, сколько вызовов выполняется для клиента. Это должно быть не более чем присвоено клиенту.

Пожалуйста, дайте мне знать, если потребуется дополнительная помощь.

Комментарии:

1. Было бы очень полезно, если бы вы могли свести свой диалплан к паре строк, потому что я считаю, что вам не нужно 20-30 строк, чтобы воспроизвести вашу проблему. Кроме того, журналы очень помогли бы. По моему личному опыту, гораздо лучше использовать скрипты для чего-то подобного.

2. @os11k: Большое спасибо за ответ. Но я предоставил общий доступ ко всему диалплану, чтобы понять диалплан. Потому что я думал, что другая переменная может вызвать проблему. Позвольте мне сократить строки диалплана.