URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 21458
[ Назад ]

Исходное сообщение
"Callback-скрипт. Как соединить два плеча до ответа абонента?"

Отправлено Margulis , 13-Авг-10 11:27 
Есть Cisco 5300, на ней TCL-скрипт для коллбэка. Алгоритм такой: абонент А звонит на Циску. Циска кладёт трубку, перезванивает абоненту А и просит ввести номер абонента Б. Абонент А вводит номер и Циска звонит абоненту Б командой leg setup. Имеем два плеча: Циска-абонент_А и Циска-Абонент_Б. По событию ev_setup_done оба плеча соединяются и имеем соединение абонента А с абонентом Б. Казалось бы, чего ещё желать? Ан нет! Абонент А капризничает:"Хочу слышать КПВ или "занято"." Почему нет КПВ? Потому что событие ev_setup_done возникает только после того, как абонент Б снял трубку.
Вопрос 1-ый: можно ли какими-то настройками сделать так, чтоб событие ev_setup_done возникало как-то пораньше, а конкретнее - с началом КПВ?
Вопрос 2-ой: если этого сделать нельзя, то можно ли соединить два плеча до наступления события ev_setup_done? Лично у меня эта идея вызывает ряд трудностей. Во-первых, не понятно, как связать два плеча. Дело в том, что они связываются командой connection create, которой нужны два параметра: идентификаторы этих самых связываемых плечей. Но эти идентификаторы, как я понял, рождаются только по исполнению команды leg setup, в этот же самый момент происходит ev_setup_done, а как я уже сказал, нам нужно отловить какое-то событие, которое происходит раньше.

Содержание

Сообщения в этом обсуждении
"Callback-скрипт. Как соединить два плеча до ответа абонента?"
Отправлено zxc , 16-Авг-10 05:01 
Это у вас на старой 5300 реализовано или на 5350XM? Петлю E1 используете?
Приведите, пожалуйста, конфиг и скрипт.

"Callback-скрипт. Как соединить два плеча до ответа абонента?"
Отправлено Margulis , 16-Авг-10 10:28 
>Это у вас на старой 5300 реализовано или на 5350XM? Петлю E1
>используете?
>Приведите, пожалуйста, конфиг и скрипт.

На 5300.
Вот её сокращённый конфиг:

version 12.3

trunk group  Unitel
max-calls any 120
max-retry 2
hunt-scheme least-used
!
isdn switch-type primary-net5
isdn voice-call-failure 0
!
no voice hunt unassigned-number
no voice hunt invalid-number
voice call carrier capacity active
voice rtp send-recv
!
voice service pots
fax protocol t38 ls-redundancy 5 hs-redundancy 2 fallback none
!
voice service voip
fax protocol t38 ls-redundancy 5 hs-redundancy 2 fallback none
h323
!
voice class codec 711
codec preference 2 g711ulaw
!
!
!
voice class h323 1
  call start fast
!
voice class h323 2
  call start slow
!
voice class h323 3
  call start fast
  h245 caps mode restricted
!
voice class h323 4
  call start slow
  h245 caps mode restricted
!
voice class h323 5
  call start fast
  h245 caps suppress nte
!
controller E1 0
framing NO-CRC4
clock source line primary
pri-group timeslots 1-31
!
controller E1 1
framing NO-CRC4
pri-group timeslots 1-31
!
controller E1 2
framing NO-CRC4
pri-group timeslots 1-31
!
controller E1 3
framing NO-CRC4
clock source line secondary 3
pri-group timeslots 1-31
gw-accounting aaa
!
interface Serial0:15
no ip address
no logging event link-status
trunk-group Unitel
isdn switch-type primary-net5
isdn timer t321 40000
isdn overlap-receiving
isdn not-end-to-end 64
isdn fast-rollover-delay 1
isdn incoming-voice modem 64
isdn map address .* plan unknown type unknown
isdn T309-enable
isdn T310 60000
isdn send-alerting
isdn bchan-number-order ascending
isdn sending-complete
isdn outgoing-voice info-transfer-capability 3.1kHz-audio
no isdn gtd
no fair-queue
no cdp enable
!
interface Serial1:15
no ip address
no logging event link-status
trunk-group Unitel
isdn switch-type primary-net5
isdn timer t321 40000
isdn overlap-receiving
isdn not-end-to-end 64
isdn fast-rollover-delay 1
isdn incoming-voice modem 64
isdn map address .* plan unknown type unknown
isdn T309-enable
isdn T310 60000
isdn send-alerting
isdn bchan-number-order ascending
isdn sending-complete
isdn outgoing-voice info-transfer-capability 3.1kHz-audio
no isdn gtd
no fair-queue
no cdp enable
!
interface Serial2:15
no ip address
no logging event link-status
trunk-group Unitel
isdn switch-type primary-net5
isdn timer t321 40000
isdn overlap-receiving
isdn not-end-to-end 64
isdn fast-rollover-delay 1
isdn incoming-voice modem 64
isdn map address .* plan unknown type unknown
isdn T309-enable
isdn T310 60000
isdn send-alerting
isdn bchan-number-order ascending
isdn sending-complete
isdn outgoing-voice info-transfer-capability 3.1kHz-audio
no isdn gtd
no fair-queue
no cdp enable
!
interface Serial3:15
no ip address
no logging event link-status
trunk-group Unitel
isdn switch-type primary-net5
isdn timer t321 40000
isdn overlap-receiving
isdn not-end-to-end 64
isdn fast-rollover-delay 1
isdn incoming-voice modem 64
isdn map address .* plan unknown type unknown
isdn T309-enable
isdn T310 60000
isdn send-alerting
isdn bchan-number-order ascending
isdn sending-complete
isdn outgoing-voice info-transfer-capability 3.1kHz-audio
no isdn gtd
no fair-queue
no cdp enable
!
interface FastEthernet0
ip address 192.168.1.24 255.255.255.0
ip access-group 120 in
no ip redirects
no ip unreachables
no ip proxy-arp
ip route-cache flow
no ip mroute-cache
duplex full
speed 100
no keepalive
no cdp enable
h323-gateway voip interface
!
voice-port 0:D
disc_pi_off
output attenuation -3
no echo-cancel enable
echo-cancel coverage 32
no vad
no comfort-noise
cptone RU
timeouts interdigit 3
description Unitel 3 stream 8
bearer-cap 3100Hz
!
voice-port 1:D
disc_pi_off
output attenuation -3
no echo-cancel enable
echo-cancel coverage 32
no vad
no comfort-noise
cptone RU
timeouts interdigit 3
description Unitel 3 stream 9
bearer-cap 3100Hz
!
voice-port 2:D
disc_pi_off
output attenuation -3
no echo-cancel enable
echo-cancel coverage 32
no vad
no comfort-noise
cptone RU
timeouts interdigit 3
description Unitel 3 stream 23
bearer-cap 3100Hz
!
voice-port 3:D
disc_pi_off
output attenuation -3
no echo-cancel enable
echo-cancel coverage 32
no vad
no comfort-noise
cptone RU
timeouts interdigit 3
description Unitel 3 stream 31
bearer-cap 3100Hz
!
!
!
dial-peer voice 1 pots
application callback
incoming called-number T
direct-inward-dial
!
dial-peer voice 100 voip
incoming called-number .
voice-class codec 4
voice-class h323 1
dtmf-relay cisco-rtp h245-signal h245-alphanumeric
fax-relay ecm disable
fax rate 9600
fax protocol t38 ls-redundancy 5 hs-redundancy 2 fallback none
no vad
!
dial-peer voice 7 voip
destination-pattern 7T
progress_ind setup enable 3
progress_ind alert enable 8
progress_ind progress enable 8
modem passthrough nse codec g711alaw
voice-class codec 711
voice-class h323 5
session target ipv4:192.168.1.59
dtmf-relay h245-alphanumeric
fax-relay ecm disable
fax rate 9600
fax protocol t38 ls-redundancy 5 hs-redundancy 2 fallback none
no vad
!
gateway
!
end


"Callback-скрипт. Как соединить два плеча до ответа абонента?"
Отправлено Margulis , 16-Авг-10 10:41 
>Приведите, пожалуйста, конфиг и скрипт.

Скрипт большой, я не знаю, надо ли его приводить? Там много лишнего будет: всякие дозвоны-отзвоны-перезвоны, авторизации-аутентификации..... Собственно, отношение к делу имеют 3-4 строчки:
leg setup $outNumber callInfo - это Циска звонит вызываемому абоненту, outNumber - это номер, который я набираю по её запросу.
Когда команда setup закончит свою работу, будет вызвана процедура act_CallSetupDone:
set fsm(PLACE_BACK,ev_setup_done)            "act_CallSetupDone     CALLACTIVE"
В этой процедуре произойдёт объединение двух исходящих звонков в один:
set out_leg_id [infotag get evt_legs]
connection create $in_leg_id $out_leg_id