Страница 1 из 1
Перевести вызов и положить трубку
Добавлено: 25 июл 2018, 14:03
alch
Доброго дня.
Пытаюсь настроить перевод вызова, чтобы он работал таким образом:
# + номер + (трубка положена) -> вызов уходит, куда надо.
В чем проблема - если после набора номера быстро положить трубку, не дожидаясь соединения с ним, то связь обрывается. После набора нужно обязательно выждать таймаут (как я понимаю, заданный в параметре transferdigittimeout), после которого происходит либо отбой и перевод (blind transfer), либо соединение (attended transfer), и только тогда класть трубку - в этом случае всё отрабатывает. А можно ли сделать так, чтобы перевод отрабатывал без ожидания таймаута? Понимаю, что можно набрать # в конце для ускорения, но это всё равно вроде как лишний символ. Пробовал как blind, так и attended transfer, пробовал менять значение параметра atxferdropcall, но нужного результата не добился.
Поясню, почему такой вопрос - перевожу на Asterisk абонентов с некой виртуальной АТС, где перевод работал именно так, как описываю. Не хочется создавать неудобства переучиванием.
Re: Перевести вызов и положить трубку
Добавлено: 26 июл 2018, 01:21
zzuz
# + номер + (трубка положена) -> вызов уходит, куда надо
- это делает blind transfer . Если у вас это не выходит , значит Вы делаете не тот тип перевода.
Re: Перевести вызов и положить трубку
Добавлено: 26 июл 2018, 09:20
alch
Если верить настройкам, ошибки быть не должно.
Код: Выделить всё
*CLI> features show
Builtin Feature Default Current
--------------- ------- -------
Pickup *8 *8
Blind Transfer # #
Attended Transfer
One Touch Monitor
Disconnect Call * *
Park Call
One Touch MixMonitor
Re: Перевести вызов и положить трубку
Добавлено: 27 июл 2018, 07:13
virus_net
Значит верьте логам и убедитесь, что вызов ушел с телефона и дошел к * до того как трубку уже положили.
Re: Перевести вызов и положить трубку
Добавлено: 27 июл 2018, 09:07
alch
Снял логи (если нужно что-то другое - напишите, пожалуйста).
Входящий вызов с транка попадает на голосовое меню, где звонящий донабирает 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'
Re: Перевести вызов и положить трубку
Добавлено: 27 июл 2018, 09:16
virus_net
Значит контекст, в котором и осуществляется перевод, есть шаблон и для набора более 3-х цифр.
Либо убирайте из этого контекста другие шаблоны, либо переназначайте контекст для перевода:
http://asterisk.ru/knowledgebase/Asterisk+variables
Команда Dial использует значение переменной ${TRANSFER_CONTEXT}: Если установлена эта переменная, при выполнении процедуры перевода вызова (#transfer), то будет использоваться для выполнения команд экстеншен из указанного контекста.
И в этом контексте должен быть шаблон для набора 3-х значного номера.
Re: Перевести вызов и положить трубку
Добавлено: 27 июл 2018, 12:50
alch
Спасибо, при помощи ${TRANFSER_CONTEXT} проблема была решена. В основном контексте, из которого выполняется перевод, установил значение переменной и добавил отдельный контекст перевода.
Код: Выделить всё
[transfer]
exten = _1XX,1,Dial(SIP/${EXTEN})
[voicemenu-custom-2]
...
exten = s,2,Set(__TRANSFER_CONTEXT=transfer)
...