Чат  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Перевести вызов и положить трубку

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

Модератор: april22

Перевести вызов и положить трубку

Сообщение alch » 25 июл 2018, 15:03

Доброго дня.

Пытаюсь настроить перевод вызова, чтобы он работал таким образом:
# + номер + (трубка положена) -> вызов уходит, куда надо.

В чем проблема - если после набора номера быстро положить трубку, не дожидаясь соединения с ним, то связь обрывается. После набора нужно обязательно выждать таймаут (как я понимаю, заданный в параметре transferdigittimeout), после которого происходит либо отбой и перевод (blind transfer), либо соединение (attended transfer), и только тогда класть трубку - в этом случае всё отрабатывает. А можно ли сделать так, чтобы перевод отрабатывал без ожидания таймаута? Понимаю, что можно набрать # в конце для ускорения, но это всё равно вроде как лишний символ. Пробовал как blind, так и attended transfer, пробовал менять значение параметра atxferdropcall, но нужного результата не добился.

Поясню, почему такой вопрос - перевожу на Asterisk абонентов с некой виртуальной АТС, где перевод работал именно так, как описываю. Не хочется создавать неудобства переучиванием.
alch
 
Сообщений: 10
Зарегистрирован: 25 июл 2018, 14:48

Re: Перевести вызов и положить трубку

Сообщение zzuz » 26 июл 2018, 02:21

# + номер + (трубка положена) -> вызов уходит, куда надо
- это делает blind transfer . Если у вас это не выходит , значит Вы делаете не тот тип перевода.
Линия24 - Системы Массового Телефонного Обслуживания
Аватар пользователя
zzuz
 
Сообщений: 1492
Зарегистрирован: 21 сен 2010, 13:33

Re: Перевести вызов и положить трубку

Сообщение alch » 26 июл 2018, 10:20

Если верить настройкам, ошибки быть не должно.
Код: выделить все
*CLI> features show
Builtin Feature           Default Current
---------------           ------- -------
Pickup                    *8      *8
Blind Transfer            #       #
Attended Transfer
One Touch Monitor
Disconnect Call           *       *
Park Call
One Touch MixMonitor
alch
 
Сообщений: 10
Зарегистрирован: 25 июл 2018, 14:48

Re: Перевести вызов и положить трубку

Сообщение virus_net » 27 июл 2018, 08:13

Значит верьте логам и убедитесь, что вызов ушел с телефона и дошел к * до того как трубку уже положили.
мой SIP URI sip:virus_net@asterisk.ru или sip:dn@postmet.com
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

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

Re: Перевести вызов и положить трубку

Сообщение alch » 27 июл 2018, 10:07

Снял логи (если нужно что-то другое - напишите, пожалуйста).

Входящий вызов с транка попадает на голосовое меню, где звонящий донабирает 102, успешно с ним соединяется, и затем абонент 102 выполняет blind transfer на 107, набирая #107. Разница в том, что в первом случае (лог успешного перевода) он дожидается, пока телефон 107 зазвонит (самого 102 в этот момент Астериск отключает и он слышит короткие гудки), а во втором случае 102 кладёт трубку сразу после набора #107, не дожидаясь прихода вызова на 107 и своего отбоя.

В логе видно, что Астериск успешно получает нужные DTMF в обоих случаях. Почему не переводит во втором - для меня пока загадка.

[Показать] Спойлер: Успешный перевод (ожидание таймаута после набора номера для перевода)
Код: выделить все
Using SIP RTP CoS mark 5
       > 0x7451bb30 -- Strict RTP learning after remote address set to: 81.88.86.91:56072
    -- Executing [s@DID_mango:1] Goto("SIP/mango-0000000f", "voicemenu-custom-2,s,1") in new stack
    -- Goto (voicemenu-custom-2,s,1)
    -- Executing [s@voicemenu-custom-2:1] NoOp("SIP/mango-0000000f", "work_time") in new stack
    -- Executing [s@voicemenu-custom-2:2] Answer("SIP/mango-0000000f", "") in new stack
    -- Executing [s@voicemenu-custom-2:3] BackGround("SIP/mango-0000000f", "record/work_time") in new stack
    -- <SIP/mango-0000000f> Playing 'record/work_time.alaw' (language 'en')
       > 0x7451bb30 -- Strict RTP switching to RTP target address 81.88.86.91:56072 as source
       > 0x7451bb30 -- Strict RTP learning complete - Locking on source address 81.88.86.91:56072
[Jul 27 09:46:54] DTMF[1103][C-00000028]: channel.c:4103 __ast_read: DTMF begin '1' received on SIP/mango-0000000f
[Jul 27 09:46:54] DTMF[1103][C-00000028]: channel.c:4107 __ast_read: DTMF begin ignored '1' on SIP/mango-0000000f
[Jul 27 09:46:54] DTMF[1103][C-00000028]: channel.c:4017 __ast_read: DTMF end '1' received on SIP/mango-0000000f, duration 180 ms
[Jul 27 09:46:54] DTMF[1103][C-00000028]: channel.c:4087 __ast_read: DTMF end passthrough '1' on SIP/mango-0000000f
[Jul 27 09:46:54] DTMF[1103][C-00000028]: channel.c:4103 __ast_read: DTMF begin '0' received on SIP/mango-0000000f
[Jul 27 09:46:54] DTMF[1103][C-00000028]: channel.c:4107 __ast_read: DTMF begin ignored '0' on SIP/mango-0000000f
[Jul 27 09:46:54] DTMF[1103][C-00000028]: channel.c:4017 __ast_read: DTMF end '0' received on SIP/mango-0000000f, duration 180 ms
[Jul 27 09:46:54] DTMF[1103][C-00000028]: channel.c:4087 __ast_read: DTMF end passthrough '0' on SIP/mango-0000000f
[Jul 27 09:46:55] DTMF[1103][C-00000028]: channel.c:4103 __ast_read: DTMF begin '2' received on SIP/mango-0000000f
[Jul 27 09:46:55] DTMF[1103][C-00000028]: channel.c:4107 __ast_read: DTMF begin ignored '2' on SIP/mango-0000000f
[Jul 27 09:46:55] DTMF[1103][C-00000028]: channel.c:4017 __ast_read: DTMF end '2' received on SIP/mango-0000000f, duration 180 ms
[Jul 27 09:46:55] DTMF[1103][C-00000028]: channel.c:4087 __ast_read: DTMF end passthrough '2' on SIP/mango-0000000f
    -- Executing [102@voicemenu-custom-2:1] Playback("SIP/mango-0000000f", "record/PZR") in new stack
    -- <SIP/mango-0000000f> Playing 'record/PZR.alaw' (language 'en')
    -- Executing [102@voicemenu-custom-2:2] Dial("SIP/mango-0000000f", "SIP/102,,t") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/102
    -- SIP/102-00000010 is ringing
       > 0x7400ea38 -- Strict RTP learning after remote address set to: 192.168.88.74:17314
    -- SIP/102-00000010 answered SIP/mango-0000000f
    -- Channel SIP/102-00000010 joined 'simple_bridge' basic-bridge <39600f7a-66e9-4172-a58a-e37f486abd0f>
    -- Channel SIP/mango-0000000f joined 'simple_bridge' basic-bridge <39600f7a-66e9-4172-a58a-e37f486abd0f>
       > 0x7400ea38 -- Strict RTP switching to RTP target address 192.168.88.74:17314 as source
       > 0x7400ea38 -- Strict RTP learning complete - Locking on source address 192.168.88.74:17314
[Jul 27 09:47:06] DTMF[1104][C-00000028]: channel.c:4103 __ast_read: DTMF begin '#' received on SIP/102-00000010
[Jul 27 09:47:06] DTMF[1104][C-00000028]: channel.c:4114 __ast_read: DTMF begin passthrough '#' on SIP/102-00000010
[Jul 27 09:47:06] DTMF[1104][C-00000028]: channel.c:4017 __ast_read: DTMF end '#' received on SIP/102-00000010, duration 180 ms
[Jul 27 09:47:06] DTMF[1104][C-00000028]: channel.c:4058 __ast_read: DTMF end accepted with begin '#' on SIP/102-00000010
[Jul 27 09:47:06] DTMF[1104][C-00000028]: channel.c:4087 __ast_read: DTMF end passthrough '#' on SIP/102-00000010
    -- Started music on hold, class 'default', on channel 'SIP/mango-0000000f'
    -- <SIP/102-00000010> Playing 'pbx-transfer.gsm' (language 'en')
[Jul 27 09:47:07] DTMF[1104][C-00000028]: channel.c:4103 __ast_read: DTMF begin '1' received on SIP/102-00000010
[Jul 27 09:47:07] DTMF[1104][C-00000028]: channel.c:4107 __ast_read: DTMF begin ignored '1' on SIP/102-00000010
[Jul 27 09:47:08] DTMF[1104][C-00000028]: channel.c:4017 __ast_read: DTMF end '1' received on SIP/102-00000010, duration 180 ms
[Jul 27 09:47:08] DTMF[1104][C-00000028]: channel.c:4087 __ast_read: DTMF end passthrough '1' on SIP/102-00000010
[Jul 27 09:47:08] DTMF[1104][C-00000028]: channel.c:4103 __ast_read: DTMF begin '0' received on SIP/102-00000010
[Jul 27 09:47:08] DTMF[1104][C-00000028]: channel.c:4107 __ast_read: DTMF begin ignored '0' on SIP/102-00000010
[Jul 27 09:47:08] DTMF[1104][C-00000028]: channel.c:4017 __ast_read: DTMF end '0' received on SIP/102-00000010, duration 180 ms
[Jul 27 09:47:08] DTMF[1104][C-00000028]: channel.c:4087 __ast_read: DTMF end passthrough '0' on SIP/102-00000010
[Jul 27 09:47:09] DTMF[1104][C-00000028]: channel.c:4103 __ast_read: DTMF begin '7' received on SIP/102-00000010
[Jul 27 09:47:09] DTMF[1104][C-00000028]: channel.c:4107 __ast_read: DTMF begin ignored '7' on SIP/102-00000010
[Jul 27 09:47:09] DTMF[1104][C-00000028]: channel.c:4017 __ast_read: DTMF end '7' received on SIP/102-00000010, duration 180 ms
[Jul 27 09:47:09] DTMF[1104][C-00000028]: channel.c:4087 __ast_read: DTMF end passthrough '7' on SIP/102-00000010
    -- Stopped music on hold on SIP/mango-0000000f
    -- Channel SIP/102-00000010 left 'simple_bridge' basic-bridge <39600f7a-66e9-4172-a58a-e37f486abd0f>
    -- Channel SIP/mango-0000000f left 'simple_bridge' basic-bridge <39600f7a-66e9-4172-a58a-e37f486abd0f>
    -- Executing [107@DLPN_DialPlan1:1] Dial("SIP/mango-0000000f", "SIP/107") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/107
    -- SIP/107-00000011 is ringing
       > 0x7401bb80 -- Strict RTP learning after remote address set to: 192.168.88.71:17416
    -- SIP/107-00000011 answered SIP/mango-0000000f
    -- Channel SIP/107-00000011 joined 'simple_bridge' basic-bridge <8be661a5-224d-4d2a-a1ba-dcc496f2a61c>
    -- Channel SIP/mango-0000000f joined 'simple_bridge' basic-bridge <8be661a5-224d-4d2a-a1ba-dcc496f2a61c>
       > Bridge 8be661a5-224d-4d2a-a1ba-dcc496f2a61c: switching from simple_bridge technology to native_rtp
       > Locally RTP bridged 'SIP/mango-0000000f' and 'SIP/107-00000011' in stack
       > Locally RTP bridged 'SIP/mango-0000000f' and 'SIP/107-00000011' in stack
       > 0x7401bb80 -- Strict RTP switching to RTP target address 192.168.88.71:17416 as source
       > 0x7401bb80 -- Strict RTP learning complete - Locking on source address 192.168.88.71:17416

[Показать] Спойлер: Не успешный перевод (положили трубку сразу после набора номера для перевода)
Код: выделить все
  == Using SIP RTP CoS mark 5
       > 0x74515db0 -- Strict RTP learning after remote address set to: 81.88.86.91:28510
    -- Executing [s@DID_mango:1] Goto("SIP/mango-0000000a", "voicemenu-custom-2,s,1") in new stack
    -- Goto (voicemenu-custom-2,s,1)
    -- Executing [s@voicemenu-custom-2:1] NoOp("SIP/mango-0000000a", "work_time") in new stack
    -- Executing [s@voicemenu-custom-2:2] Answer("SIP/mango-0000000a", "") in new stack
    -- Executing [s@voicemenu-custom-2:3] BackGround("SIP/mango-0000000a", "record/work_time") in new stack
    -- <SIP/mango-0000000a> Playing 'record/work_time.alaw' (language 'en')
       > 0x74515db0 -- Strict RTP switching to RTP target address 81.88.86.91:28510 as source
       > 0x74515db0 -- Strict RTP learning complete - Locking on source address 81.88.86.91:28510
[Jul 27 09:40:14] DTMF[1074][C-00000026]: channel.c:4103 __ast_read: DTMF begin '1' received on SIP/mango-0000000a
[Jul 27 09:40:14] DTMF[1074][C-00000026]: channel.c:4107 __ast_read: DTMF begin ignored '1' on SIP/mango-0000000a
[Jul 27 09:40:14] DTMF[1074][C-00000026]: channel.c:4017 __ast_read: DTMF end '1' received on SIP/mango-0000000a, duration 80 ms
[Jul 27 09:40:14] DTMF[1074][C-00000026]: channel.c:4087 __ast_read: DTMF end passthrough '1' on SIP/mango-0000000a
[Jul 27 09:40:14] DTMF[1074][C-00000026]: channel.c:4103 __ast_read: DTMF begin '0' received on SIP/mango-0000000a
[Jul 27 09:40:14] DTMF[1074][C-00000026]: channel.c:4107 __ast_read: DTMF begin ignored '0' on SIP/mango-0000000a
[Jul 27 09:40:14] DTMF[1074][C-00000026]: channel.c:4017 __ast_read: DTMF end '0' received on SIP/mango-0000000a, duration 80 ms
[Jul 27 09:40:14] DTMF[1074][C-00000026]: channel.c:4087 __ast_read: DTMF end passthrough '0' on SIP/mango-0000000a
[Jul 27 09:40:15] DTMF[1074][C-00000026]: channel.c:4103 __ast_read: DTMF begin '2' received on SIP/mango-0000000a
[Jul 27 09:40:15] DTMF[1074][C-00000026]: channel.c:4107 __ast_read: DTMF begin ignored '2' on SIP/mango-0000000a
[Jul 27 09:40:15] DTMF[1074][C-00000026]: channel.c:4017 __ast_read: DTMF end '2' received on SIP/mango-0000000a, duration 80 ms
[Jul 27 09:40:15] DTMF[1074][C-00000026]: channel.c:4087 __ast_read: DTMF end passthrough '2' on SIP/mango-0000000a
    -- Executing [102@voicemenu-custom-2:1] Playback("SIP/mango-0000000a", "record/PZR") in new stack
    -- <SIP/mango-0000000a> Playing 'record/PZR.alaw' (language 'en')
    -- Executing [102@voicemenu-custom-2:2] Dial("SIP/mango-0000000a", "SIP/102,,t") in new stack
  == Using SIP RTP CoS mark 5
    -- Called SIP/102
    -- SIP/102-0000000b is ringing
       > 0x2b87398 -- Strict RTP learning after remote address set to: 192.168.88.74:17310
    -- SIP/102-0000000b answered SIP/mango-0000000a
    -- Channel SIP/102-0000000b joined 'simple_bridge' basic-bridge <0423e176-9191-421f-955b-55f3573f6cf7>
    -- Channel SIP/mango-0000000a joined 'simple_bridge' basic-bridge <0423e176-9191-421f-955b-55f3573f6cf7>
       > 0x2b87398 -- Strict RTP switching to RTP target address 192.168.88.74:17310 as source
       > 0x2b87398 -- Strict RTP learning complete - Locking on source address 192.168.88.74:17310
[Jul 27 09:40:29] DTMF[1076][C-00000026]: channel.c:4103 __ast_read: DTMF begin '#' received on SIP/102-0000000b
[Jul 27 09:40:29] DTMF[1076][C-00000026]: channel.c:4114 __ast_read: DTMF begin passthrough '#' on SIP/102-0000000b
[Jul 27 09:40:29] DTMF[1076][C-00000026]: channel.c:4017 __ast_read: DTMF end '#' received on SIP/102-0000000b, duration 180 ms
[Jul 27 09:40:29] DTMF[1076][C-00000026]: channel.c:4058 __ast_read: DTMF end accepted with begin '#' on SIP/102-0000000b
[Jul 27 09:40:29] DTMF[1076][C-00000026]: channel.c:4087 __ast_read: DTMF end passthrough '#' on SIP/102-0000000b
    -- Started music on hold, class 'default', on channel 'SIP/mango-0000000a'
    -- <SIP/102-0000000b> Playing 'pbx-transfer.gsm' (language 'en')
[Jul 27 09:40:31] DTMF[1076][C-00000026]: channel.c:4103 __ast_read: DTMF begin '1' received on SIP/102-0000000b
[Jul 27 09:40:31] DTMF[1076][C-00000026]: channel.c:4107 __ast_read: DTMF begin ignored '1' on SIP/102-0000000b
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4017 __ast_read: DTMF end '1' received on SIP/102-0000000b, duration 180 ms
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4087 __ast_read: DTMF end passthrough '1' on SIP/102-0000000b
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4103 __ast_read: DTMF begin '0' received on SIP/102-0000000b
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4107 __ast_read: DTMF begin ignored '0' on SIP/102-0000000b
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4017 __ast_read: DTMF end '0' received on SIP/102-0000000b, duration 180 ms
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4087 __ast_read: DTMF end passthrough '0' on SIP/102-0000000b
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4103 __ast_read: DTMF begin '7' received on SIP/102-0000000b
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4107 __ast_read: DTMF begin ignored '7' on SIP/102-0000000b
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4017 __ast_read: DTMF end '7' received on SIP/102-0000000b, duration 180 ms
[Jul 27 09:40:32] DTMF[1076][C-00000026]: channel.c:4087 __ast_read: DTMF end passthrough '7' on SIP/102-0000000b
    -- Stopped music on hold on SIP/mango-0000000a
    -- Channel SIP/102-0000000b left 'simple_bridge' basic-bridge <0423e176-9191-421f-955b-55f3573f6cf7>
    -- Channel SIP/mango-0000000a left 'simple_bridge' basic-bridge <0423e176-9191-421f-955b-55f3573f6cf7>
  == Spawn extension (voicemenu-custom-2, 102, 2) exited non-zero on 'SIP/mango-0000000a'
alch
 
Сообщений: 10
Зарегистрирован: 25 июл 2018, 14:48

Re: Перевести вызов и положить трубку

Сообщение virus_net » 27 июл 2018, 10:16

Значит контекст, в котором и осуществляется перевод, есть шаблон и для набора более 3-х цифр.
Либо убирайте из этого контекста другие шаблоны, либо переназначайте контекст для перевода:
http://asterisk.ru/knowledgebase/Asterisk+variables
Команда Dial использует значение переменной ${TRANSFER_CONTEXT}: Если установлена эта переменная, при выполнении процедуры перевода вызова (#transfer), то будет использоваться для выполнения команд экстеншен из указанного контекста.

И в этом контексте должен быть шаблон для набора 3-х значного номера.
мой SIP URI sip:virus_net@asterisk.ru или sip:dn@postmet.com
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

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

Re: Перевести вызов и положить трубку

Сообщение alch » 27 июл 2018, 13:50

Спасибо, при помощи ${TRANFSER_CONTEXT} проблема была решена. В основном контексте, из которого выполняется перевод, установил значение переменной и добавил отдельный контекст перевода.

Код: выделить все
[transfer]
exten = _1XX,1,Dial(SIP/${EXTEN})

[voicemenu-custom-2]
...
exten = s,2,Set(__TRANSFER_CONTEXT=transfer)
...
alch
 
Сообщений: 10
Зарегистрирован: 25 июл 2018, 14:48


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

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