ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Последовательный вызов

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

Последовательный вызов

Сообщение janetland » 27 ноя 2017, 19:00

Доброго дня всем

Возник вопрос следующего плана: есть групповой номер 174, при наборе него звонок идет номерам 175 и 176 соответственно. Если трубка 175 выключена (UNAVAILABLE) звонок должен уходить на номер 187. А этого не происходит.

Код extention.conf:

Код: выделить все
exten => 174,1,Dial(SIP/175&SIP/176,40,Tt);
exten => 174,n,HangUP();

exten => 175,1,NoOp(device_state is ${DEVICE_STATE(SIP/175)});
exten => 175,2,GotoIf($["${DEVICE_STATE(SIP/175)}" = "UNAVAILABLE"]?5:3);
exten => 175,3,Dial(SIP/175,40,Tt);
exten => 175,4,HangUP();
exten => 175,5,Dial(SIP/187,40,Tt);
exten => 175,6,HangUP();


Код: выделить все
   -- Executing [174@incoming:1] Dial("SIP/asterisk-00030e54", "SIP/175&SIP/176,40,Tt") in new stack
[Nov 27 17:44:11] WARNING[100255][C-0001b579]: app_dial.c:2455 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
    -- Called SIP/176
    -- SIP/176-00030e55 is ringing
    -- SIP/176-00030e55 is ringing


Если звоним напрямую на 175 - все ок, вызов принимается SIP/187. Получается, при параллельном вызове (из диалплана номера 174) невозможна софтовая переадресация? Вариант, использовать que, но задача - увидеть через AMI маршрут звонка 174-175-187...
janetland
 
Сообщений: 43
Зарегистрирован: 24 авг 2016, 16:11

Re: Последовательный вызов

Сообщение virus_net » 27 ноя 2017, 19:10

Ессно не уходит, ведь вы вызываете ГРУППУ номеров, а в группе не отвечает только один номер.
Решение:
    1. Вынести SIP/175&SIP/176 в переменную.
    2. Проверить DEVICE_STATE SIP/175 ДО Dial
    3. Если трубка 175 выключена (UNAVAILABLE) менять содержимое переменной на SIP/176&SIP/187
    4. Вызываем Dial с использованием переменной
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Последовательный вызов

Сообщение janetland » 28 ноя 2017, 13:32

Благодарю, virus_net, для ряда групповых номеров у меня используется следующая конструкция:

exten => 240,1,Set(filename=${UNIQUEID});
exten => 240,2,MixMonitor(/usr/rec/${filename}.wav,ab);
exten => 240,3,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes);
exten => 240,4,GotoIf($["${DEVICE_STATE(SIP/223)}" = "INUSE"]?6:5);
exten => 240,5,Set(caller1=SIP/223&);
exten => 240,6,GotoIf($["${DEVICE_STATE(SIP/226)}" = "INUSE"]?8:7);
exten => 240,7,Set(caller2=SIP/226&);
exten => 240,8,GotoIf($["${DEVICE_STATE(SIP/227)}" = "INUSE"]?10:9);
exten => 240,9,Set(caller3=SIP/227&);
exten => 240,10,GotoIf($["${DEVICE_STATE(SIP/343)}" = "INUSE"]?14:11);
exten => 240,11,Set(caller4=SIP/343);
exten => 240,12,Dial(${caller1}${caller2}${caller3}${caller4},300,Tt);
exten => 240,13,HangUP();
exten => 240,14,Set(dialnumber=${caller1}${caller2}${caller3}${caller4});
exten => 240,15,GotoIf(${LEN(${dialnumber})}>0?18:);
exten => 240,16,Background(en/allbusy);
exten => 240,17,Goto(incoming,240,4);
exten => 240,18,Dial(${dialnumber:0:-1},300,Tt);
exten => 240,n,HangUP();

Скорее всего, именно это Вы имели ввиду?

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

Текущая задача чуть сложнее: есть групповой вызов на номер 174 (номера в группе 175 и 176), т.к. сотрудник один, он физически не может разговаривать по 2м трубкам одновременно, поэтому все вызовы должны переадресовываться на номер 187. В зависимости от приходящего вызова в АМИ ловим событие ANSWERED - если поднята трубка 175 (запускаем скрипт1), если поднята трубка 176 (запускаем скрипт2) и приземляем голосовой вызов на номер 187.

Под скриптом1,2 понимается сторонняя обработка 1с.
janetland
 
Сообщений: 43
Зарегистрирован: 24 авг 2016, 16:11

Re: Последовательный вызов

Сообщение virus_net » 28 ноя 2017, 18:11

Именно это я имел в виду. Написано у вас конечно кривовато, но работать будет.

Как по мне так своим уточнением вы ничего не поменяли в задаче. Раз сотрудник один, то и названивать на оба его телефона не надо.
Вам никто не мешает вам сгенерить свое событие, ловить его в AMI и запускать по его приходу.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
virus_net
 
Сообщений: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва


Вернуться в Вопросы новичков

Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 15

© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH