Jump to content
Калькуляторы

Cisco outgoing dial-peer на основе CallerID

Уже как месяц читаю форумы, официальную документацию, мануалы, курсы (Спасибо добрым людям, отсыпали), и пока пришел только к этому  . 
Ладно, хватит лирики. 


Развернут CUBE на CISCO 2951, ios 15.7(3)M. На нем зарегистрировано 3 SIP транка к разным провайдерам. Регистрацию произвожу с помощью tenant. 


Код:

Уже как месяц читаю форумы, официальную документацию, мануалы, курсы (Спасибо добрым людям, отсыпали), и пока пришел только к этому  . 
Ладно, хватит лирики. 


Развернут CUBE на CISCO 2951, ios 15.7(3)M. На нем зарегистрировано 3 SIP транка к разным провайдерам. Регистрацию произвожу с помощью tenant. 

 

voice class tenant 1 
  registrar dns:prov1.local:5060 expires 60 
  credentials username 1111111password 7 14322405 realm 1.1.1.1 
  authentication username XXXXX password 7 15373D0 
  timers buffer-invite 10000 
  no pass-thru content custom-sdp 

voice class tenant 2 
  registrar dns:prov2:5060 expires 60 
  credentials username 2222222 password 7 04031E09 realm 2.2.2.2 
  authentication username XXXXX password 7 154A1E03 
  timers buffer-invite 10000 
  no pass-thru content custom-sdp 

voice class tenant 3 
  registrar dns:vrov3:5060 expires 60 
  credentials username 3333333 password 7 040A1A realm 3.3.3.3 
  authentication username XXXXX password 7 08705D5 
  timers buffer-invite 10000 
  no pass-thru content custom-sdp 


Вроде все хорошо, регистрируется, звонки идут в обе стороны. 


Развернута Софт АТС CUCM (На самом деле совершенно не важно какая, cucm или asterisk). Правилами фильтрации, трансляции, маршрутизации (и все остальные умные слова), настроил что (ПРЕДПОЛОЖИМ) сотрудники из 3 разных отделов закрываются на выходе из софт АТС своим Caller ID. (естественно при звонках в город) 
Отдел 1 закрывается номером 111-11-11, который предоставляет 1 оператор. 
Отдел 2 закрывается номером 222-22-22, который предоставляет 2 оператор. 
Отдел 3 закрывается номером 333-33-33, который предоставляет 3 оператор. 

То есть получается что на CUBE, при совершении исходящего вызова, прилетает уже подмененный, окончательный, номер. 

На основании данного номера (который прилетает на CUBE) мне и необходимо организовать outgoing dial-peer. Если звонок приходит от номера 111-11-11 то он его отправляет на провайдера 1. И так далее по аналогии. 
Я пытался делать это используя answer-address. Но ничего не вышло, т.к. вычитал что answer-address обрабатывается только в входящем dial-peer. 

Вот так: 


dial-peer voice 200 voip 
 description Yxodit na Operatora 1 
 answer-address 1111111 
 destination-pattern .T 
 session protocol sipv2 
 session target ipv4:1.1.1.1 
 session transport udp 
 voice-class codec 1 
 voice-class sip tenant 1 
 dtmf-relay rtp-nte 
 no vad 
authentication username 1111111 password 7 15373D022B3B7 


Подскажите пожалуйста, умные и опытные люди, в какую сторону копать. Как можно организовать отправку звонка на конкретный dial-peer зная каким номер закрывается исходящий вызов. 

Так же прикладываю интересный лог. В нем видно что с начало выбирается правильный Dial-peer, потом из-за чего-то пропадает Calling Number, потом меняется, и уходит на другой Dial-peer. 
P.S.1111111 номер у первого провайдера. 2222222 Ном

ер у второго провайдера. 9999999 куда звоним. Номера естественно заменены, произвожу звонки на реальные номера. 

 

*Oct  2 13:19:37.404: //-1/AF396D800000/CCAPI/cc_api_display_ie_subfields: 
   cc_api_call_setup_ind_common: 
   cisco-username=1111111 
   ----- ccCallInfo IE subfields ----- 
   cisco-ani=1111111 
   cisco-anitype=0 
   cisco-aniplan=0 
   cisco-anipi=0 
   cisco-anisi=1 
   dest=9999999 
   cisco-desttype=0 
   cisco-destplan=0 
   cisco-rdie=FFFFFFFF 
   cisco-rdn= 
   cisco-rdntype=0 
   cisco-rdnplan=0 
   cisco-rdnpi=-1 
   cisco-rdnsi=-1 
   cisco-redirectreason=-1   fwd_final_type =0 
   final_redirectNumber = 
   hunt_group_timeout =0 

*Oct  2 13:19:37.404: //-1/AF396D800000/CCAPI/cc_api_call_setup_ind_common: 
   Interface=0x15A80AE0, Call Info( 
   Calling Number=1111111,(Calling Name=)(TON=Unknown, NPI=Unknown, Screening=User, Passed, Presentation=Allowed), 
   Called Number=9999999(TON=Unknown, NPI=Unknown), 
   Calling Translated=FALSE, Subscriber Type Str=Unknown, FinalDestinationFlag=TRUE, 
   Incoming Dial-peer=200, Progress Indication=NULL(0), Calling IE Present=TRUE, 
   Source Trkgrp Route Label=, Target Trkgrp Route Label=, CLID Transparent=FALSE), Call Id=253 
*Oct  2 13:19:37.404: //-1/AF396D800000/CCAPI/ccCheckClipClir: 
   In: Calling Number=1111111(TON=Unknown, NPI=Unknown, Screening=User, Passed, Presentation=Allowed) 
*Oct  2 13:19:37.404: //-1/AF396D800000/CCAPI/ccCheckClipClir: 
   Out: Calling Number=1111111(TON=Unknown, NPI=Unknown, Screening=User, Passed, Presentation=Allowed) 
*Oct  2 13:19:37.404: //-1/xxxxxxxxxxxx/CCAPI/cc_get_feature_vsa: 

*Oct  2 13:19:37.404: :cc_get_feature_vsa malloc success 
*Oct  2 13:19:37.404: //-1/xxxxxxxxxxxx/CCAPI/cc_get_feature_vsa: 

*Oct  2 13:19:37.404:  cc_get_feature_vsa count is 1 
*Oct  2 13:19:37.404: //-1/xxxxxxxxxxxx/CCAPI/cc_get_feature_vsa: 

*Oct  2 13:19:37.404: :FEATURE_VSA attributes are: feature_name:0,feature_time:67057240,feature_id:25 
*Oct  2 13:19:37.404: //253/AF396D800000/CCAPI/cc_api_call_setup_ind_common: 
   Set Up Event Sent; 
   Call Info(Calling Number=1111111(TON=Unknown, NPI=Unknown, Screening=User, Passed, Presentation=Allowed), 
   Called Number=9999999(TON=Unknown, NPI=Unknown)) 
*Oct  2 13:19:37.404: //253/AF396D800000/CCAPI/cc_process_call_setup_ind: 
   Event=0x161DDBC0 
*Oct  2 13:19:37.404: //-1/xxxxxxxxxxxx/CCAPI/cc_setupind_match_search: 
   Try with the demoted called number 9999999 
*Oct  2 13:19:37.404: //253/AF396D800000/CCAPI/ccCallSetContext: 
   Context=0x16541C1C 
*Oct  2 13:19:37.404: //253/AF396D800000/CCAPI/cc_process_call_setup_ind: 
   >>>>CCAPI handed cid 253 with tag 200 to app "_ManagedAppProcess_Default" 
*Oct  2 13:19:37.408: //253/AF396D800000/CCAPI/ccCallProceeding: 
   Progress Indication=NULL(0) 
*Oct  2 13:19:37.408: //253/AF396D800000/CCAPI/ccCallSetupRequest: 
   Destination=, Calling IE Present=TRUE, Mode=0, 
   Outgoing Dial-peer=300, Params=0x16543224, Progress Indication=NULL(0) 
*Oct  2 13:19:37.408: //253/AF396D800000/CCAPI/ccCheckClipClir: 
   In: Calling Number=1111111(TON=Unknown, NPI=Unknown, Screening=User, Passed, Presentation=Allowed) 
*Oct  2 13:19:37.408: //253/AF396D800000/CCAPI/ccCheckClipClir: 
   Out: Calling Number=2222222(TON=Unknown, NPI=ISDN, Screening=Network, Presentation=Allowed) 
*Oct  2 13:19:37.408: //253/AF396D800000/CCAPI/ccCallSetupRequest: 
   Destination Pattern=.T, Called Number=9999999, Digit Strip=FALSE 
*Oct  2 13:19:37.408: //253/AF396D800000/CCAPI/ccCallSetupRequest: 
   Calling Number=2222222(TON=Unknown, NPI=ISDN, Screening=Network, Presentation=Allowed), 
   Called Number=9999999(TON=Unknown, NPI=Unknown), 
   Redirect Number=, Display Info= 
   Account Number=1111111, Final Destination Flag=TRUE, 
   Guid=AF396D80-0001-0000-0000-00690C074664, Outgoing Dial-peer=300 
*Oct  2 13:19:37.408: //253/AF396D800000/CCAPI/cc_api_display_ie_subfields: 
   ccCallSetupRequest: 
   cisco-username=1111111 
   ----- ccCallInfo IE subfields ----- 
   cisco-ani=2222222 
   cisco-anitype=0 
   cisco-aniplan=1 
   cisco-anipi=0 
   cisco-anisi=3 
   dest=9999999 
   cisco-desttype=0 
   cisco-destplan=0 
   cisco-rdie=FFFFFFFF 
   cisco-rdn= 
   cisco-rdntype=0 
   cisco-rdnplan=0 
   cisco-rdnpi=-1 
   cisco-rdnsi=-1 
   cisco-redirectreason=-1   fwd_final_type =0 
   final_redirectNumber = 
   hunt_group_timeout =0 

*Oct  2 13:19:37.408: //253/AF396D800000/CCAPI/ccIFCallSetupRequestPrivate: 
   Interface=0x15A80AE0, Interface Type=3, Destination=, Mode=0x0, 
   Call Params(Calling Number=2222222,(Calling Name=)(TON=Unknown, NPI=ISDN, Screening=Network, Presentation=Allowed), 
   Called Number=9999999(TON=Unknown, NPI=Unknown), Calling Translated=FALSE, 
   Subscriber Type Str=Unknown, FinalDestinationFlag=TRUE, Outgoing Dial-peer=300, Call Count On=FALSE, 
   Source Trkgrp Route Label=, Target Trkgrp Route Label=, tg_label_flag=0, Application Call Id=) 
*Oct  2 13:19:37.408: //-1/xxxxxxxxxxxx/CCAPI/cc_get_feature_vsa: 

*Oct  2 13:19:37.408: :cc_get_feature_vsa malloc success 
*Oct  2 13:19:37.408: //-1/xxxxxxxxxxxx/CCAPI/cc_get_feature_vsa: 

GW_CUBE# 
*Oct  2 13:19:37.408:  cc_get_feature_vsa count is 2 
*Oct  2 13:19:37.408: //-1/xxxxxxxxxxxx/CCAPI/cc_get_feature_vsa: 

*Oct  2 13:19:37.408: :FEATURE_VSA attributes are: feature_name:0,feature_time:67057016,feature_id:26 
*Oct  2 13:19:37.408: //254/AF396D800000/CCAPI/ccIFCallSetupRequestPrivate: 
   SPI Call Setup Request Is Success; Interface Type=3, FlowMode=1 
*Oct  2 13:19:37.408: //254/AF396D800000/CCAPI/ccCallSetContext: 
   Context=0x165431D4 
*Oct  2 13:19:37.408: //253/AF396D800000/CCAPI/ccSaveDialpeerTag: 
   Outgoing Dial-peer=300 
*Oct  2 13:19:37.408: //254/AF396D800000/CCAPI/cc_api_call_proceeding: 
   Interface=0x15A80AE0, Progress Indication=NULL(0) 
GW_CUBE# 
*Oct  2 13:19:46.772: //253/AF396D800000/CCAPI/cc_api_call_disconnected: 
   Cause Value=16, Interface=0x15A80AE0, Call Id=253 
*Oct  2 13:19:46.772: //253/AF396D800000/CCAPI/cc_api_call_disconnected: 
   Call Entry(Responsed=FALSE, Cause Value=16, Retry Count=0) 
*Oct  2 13:19:46.776: //254/AF396D800000/CCAPI/ccCallDisconnect: 
   Cause Value=16, Tag=0x0, Call Entry(Previous Disconnect Cause=0, Disconnect Cause=0) 
*Oct  2 13:19:46.776: //254/AF396D800000/CCAPI/ccCallDisconnect: 
   Cause Value=16, Call Entry(Responsed=FALSE, Cause Value=16) 
*Oct  2 13:19:46.776: //253/AF396D800000/CCAPI/ccCallDisconnect: 
   Cause Value=16, Tag=0x0, Call Entry(Previous Disconnect Cause=0, Disconnect Cause=16) 
*Oct  2 13:19:46.776: //253/AF396D800000/CCAPI/ccCallDisconnect: 
   Cause Value=16, Call Entry(Responsed=TRUE, Cause Value=16) 
*Oct  2 13:19:46.776: //253/AF396D800000/CCAPI/cc_api_call_disconnect_done: 
   Disposition=0, Interface=0x15A80AE0, Tag=0x0, Call Id=253, 
   Call Entry(Disconnect Cause=16, Voice Class Cause Code=0, Retry Count=0) 
*Oct  2 13:19:46.776: //253/AF396D800000/CCAPI/cc_api_call_disconnect_done: 
   Call Disconnect Event Sent 
*Oct  2 13:19:46.776: //-1/xxxxxxxxxxxx/CCAPI/cc_free_feature_vsa: 

*Oct  2 13:19:46.776: :cc_free_feature_vsa freeing 3FF3650 
*Oct  2 13:19:46.776: //-1/xxxxxxxxxxxx/CCAPI/cc_free_feature_vsa: 

*Oct  2 13:19:46.776:  vsacount in free is 1 
*Oct  2 13:19:46.788: //254/AF396D800000/CCAPI/cc_api_call_disconnect_done: 
   Disposition=-11, Interface=0x15A80AE0, Tag=0x0, Call Id=254, 
   Call Entry(Disconnect Cause=16, Voice Class Cause Code=0, Retry Count=0) 
*Oct  2 13:19:46.788: //254/AF396D800000/CCAPI/cc_api_call_disconnect_done: 
   Call Disconnect Event Sent 
*Oct  2 13:19:46.788: //-1/xxxxxxxxxxxx/CCAPI/cc_free_feature_vsa: 

*Oct  2 13:19:46.788: :cc_free_feature_vsa freeing 3FF3570 
*Oct  2 13:19:46.788: //-1/xxxxxxxxxxxx/CCAPI/cc_free_feature_vsa: 

GW_CUBE# 
*Oct  2 13:19:46.788:  vsacount in free is 0 
GW_CUBE#no debug voice ccapi inout 
voip ccapi inout debugging is off 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this