freeswitchforum.com
https://freeswitchforum.com/

Обработка вызова, если абонент А положил трубку
https://freeswitchforum.com/viewtopic.php?f=6&t=980
Страница 1 из 1

Автор:  argentum [ 13 фев 2020 17:19 ]
Заголовок сообщения:  Обработка вызова, если абонент А положил трубку

Добрый день.
Подскажите, пожалуйста, как продолжить обработку диалплана или запустить выполнение скрипта, если абонент, инициировавший вызов первый кладет трубку, не дождавшись ответа? А именно Originate Failed. Cause: ORIGINATOR_CANCEL

Что я пробовал?
1.
Код:
<action application="set" data="hangup_after_bridge=false"/>
<action application="set" data="continue_on_fail=true"/>

Не работает. FS не продолжает обработку диалплана если абонент А положил трубку первым.

2.
Код:
<action application="set" data="api_hangup_hook=lua Test.lua ${originate_disposition} '${caller_id_number}' '"/>

Не работает. FS в этом случае не знает переменной ${originate_disposition}, а она важна. Это тот самый Cause: ORIGINATOR_CANCEL, по которому я бы хотел выполнять дальнейшие действия.

Может какие-то другие варианты есть?

Заранее спасибо.

Автор:  Vlad1983 [ 13 фев 2020 21:28 ]
Заголовок сообщения:  Re: Обработка вызова, если абонент А положил трубку

при мертвом канале в FS уже ничего не сделать кроме вызова api_hangup_hook
или смотрите в CDR и делайте что хотите с этим

Автор:  argentum [ 17 фев 2020 15:41 ]
Заголовок сообщения:  Re: Обработка вызова, если абонент А положил трубку

Может кому понадобится.
Сделал следующим образом:

Диалплан:
Код:
<action application="set" data="session_in_hangup_hook=true"/>
<action application="export" data="api_hangup_hook=lua script.lua"/>


Скрипт:
Код:
local originate_disposition = env:getHeader
("variable_originate_disposition")
local caller = env:getHeader
("variable_effective_caller_id_number")
local telegram = env:getHeader
("variable_curl_response_data")
local name = env:getHeader
("variable_effective_caller_id_name")
local date = env:getHeader
("variable_RUS_DATE")



if tostring(originate_disposition) == 'ORIGINATOR_CANCEL' then

os.execute(string.format("нужное действие",caller,name,date));

end

Страница 1 из 1 Часовой пояс: UTC + 4 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/