You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Goal (short description)

H.323 (dimitris), SCCP (misi), IAX

SCCP http://en.wikipedia.org/wiki/Skinny_Client_Control_Protocol
Asterisk sccp channels this example use chan_sccp

Applicability

Prerequisites (OS, dependencies on other software)

Debian(etch) + asterisk + chan_sccp (http://chan-sccp.berlios.de/)

Configuration (OS agnostic)

  1. download, untar and compile ftp://ftp.berlios.de/pub/chan-sccp/chan_sccp-20060408.tar.bz2
    pbx:/tmp/chan_sccp-20060408# make
    sh ./create_config.sh "/usr/include"
    Checking Asterisk version...
    Build PARK functions (y/n)[n]?y
    Build PICKUP functions (y/n)[n]?y
     * found 'struct ast_channel_tech'
     * found 'ast_bridged_channel'
     * found 'struct ast_callerid'
     * found 'AST_MAX_CONTEXT'
     * found 'MAX_MUSICCLASS'
     * found 'AST_MAX_ACCOUNT_CODE'
     * found 'AST_CONTROL_HOLD'
     * found 'ast_config_load'
     * found 'ast_copy_string'
     * found 'AST_FLAG_MOH'
     * found endian.h
     * found strings.h
     * found new ast_app_has_voicemail
     * found new ast_get_hint
     * found new devicestate.h
     * found AST_DEVICE_RINGING
     * found 'ast_group_t'
     * found 'ast_app_separate_args'
     * found AST_EXTENSION_RINGING
    config.h complete.
    Now compiling .... chan_sccp.c          1507 lines
    Now compiling .... sccp_actions.c       1427 lines
    Now compiling .... sccp_channel.c       1050 lines
    Now compiling .... sccp_device.c        875 lines
    Now compiling .... sccp_line.c          112 lines
    Now compiling .... sccp_utils.c         1486 lines
    Now compiling .... sccp_pbx.c           824 lines
    Now compiling .... sccp_cli.c           641 lines
    Now compiling .... sccp_softkeys.c      306 lines
    Now compiling .... sccp_socket.c        342 lines
    Now compiling .... sccp_indicate.c      302 lines
    Linking chan_sccp.so
    pbx:/tmp/chan_sccp-20060408# make install
    sh ./create_config.sh "/usr/include"
    Linking chan_sccp.so
    Now Installing chan_sccp.so
    Chan_sccp is now installed
    Remember to disable chan_skinny by adding the following
    line to /etc/asterisk/modules.conf:
    noload => chan_skinny.so
    pbx:/tmp/chan_sccp-20060408#
    
  2. Modify /etc/asterisk/modules.conf [modules] section to unload module built in module chan_skinny and load module chan_sccp

    modules.conf
    [modules]
    noload => chan_skinny.so
    load => chan_sccp.so
    
  3. Copy and Edit example configuration files
  • Copy configuration file sccp.conf what can be found in in directory conf
    pbx:/tmp# ls -al chan_sccp-20060408/conf/
    összesen 24
    drw-r--r-- 2 root root 4096 2006-03-12 23:55 .
    drwxr-xr-x 5 root root 4096 2007-05-12 13:05 ..
    -rw-r--r-- 1 root root  894 2006-01-25 20:28 7960-tones.xml
    -rw-r--r-- 1 root root 7684 2006-04-08 14:21 sccp.conf
    -rw-r--r-- 1 root root  800 2006-01-25 20:28 XMLDefault.cnf.xml
    
  • Copy and edit 7960-tone.xml and XMLDefault.cnf.xml files to your tftp server root directory.
    My example configuration file:
    XMLDefault.cnf.xml
    <Default>
     <callManagerGroup>
      <members>
       <member  priority="0">
        <callManager>
         <ports>
          <ethernetPhonePort>2000</ethernetPhonePort>
         </ports>
         <processNodeName>192.168.0.1</processNodeName>
        </callManager>
       </member>
      </members>
     </callManagerGroup>
     <loadInformation6  model="IP Phone 7910"></loadInformation6>
     <loadInformation124  model="Addon 7914">S00104000100</loadInformation124>
     <loadInformation9  model="IP Phone 7935"></loadInformation9>
     <loadInformation8  model="IP Phone 7940">P00307020400</loadInformation8>
     <loadInformation7  model="IP Phone 7960">P00307020400</loadInformation7>
     <loadInformation20000  model="IP Phone 7905"></loadInformation20000>
     <loadInformation30008  model="IP Phone 7902"></loadInformation30008>
     <loadInformation30007  model="IP Phone 7912"></loadInformation30007>
     <userLocale>
      <name>Hungarian_Hungary</name>
      <langCode>hu</langCode>
     </userLocale>
     <networkLocale>Hungary</networkLocale>
     <idleTimeout>0</idleTimeout>
     <authenticationURL></authenticationURL>
     <directoryURL>http://192.168.0.1/directory/cm.php</directoryURL>
     <idleURL></idleURL>
     <informationURL>http://195.111.159.1/GETTeleCasterHelpText.asp</informationURL>
     <messagesURL></messagesURL>
     <proxyServerURL></proxyServerURL>
     <servicesURL>http://195.111.159.1/CCMCIP/getservices.asp</servicesURL>
    </Default>
    
    Please change locale settings according your locality. (I am Hungarian.)

    Useful Information

    DirectoryURL: Application i am using is based on mysql. More info 79XX XML applications http://www.voip-info.org/wiki/view/Asterisk+Cisco+79XX+XML+Services

  • In this example my asterisk server IP address is 192.168.0.1  and phones are leasing ip addresses from dhcp pool 192.168.0.0/24.
    I tested it with 3 type of phone Cisco 7910, 7960 and 7940 with 7914 addon panel.
    You must set a phone type to 7914 and give the 7940 SEP MAC address which is connected to the panel, in case you want to use a 7914 addon panel. And create as many speeddial lines.
    modules.conf
    ; (SCCP*)
    ;
    ; An implementation of Skinny Client Control Protocol (SCCP)
    ;
    ; Sergio Chersovani (mlists@c-net.it)
    ; http://chan-sccp.belios.de
    ;
    
    [general]
    servername = Asterisk                   ; show this name on the device registration
    keepalive = 60                          ; phone keep alive message evey 60 secs. Used to check the voicemail
    debug = 0                                       ; console debug level. 1 => 10
    context = sccp
    dateFormat = Y.M.D                      ; M-D-Y in any order. Use M/D/YA (for 12h format)
    bindaddr = 192.168.0.1                  ; replace with the ip address of the asterisk server (RTP important param)
    port = 2000                                     ; listen on port 2000 (Skinny, default)
    disallow=all                            ; First disallow all codecs
    allow=alaw                                      ; Allow codecs in order of preference
    allow=ulaw                                      ;
    firstdigittimeout = 16                  ; dialing timeout for the 1st digit
    digittimeout = 8                                ; more digits
    ;digittimeoutchar = #                   ; you can force the channel to dial with this char in the dialing state
    autoanswer_ring_time = 1                ; ringing time in seconds for the autoanswer, the default is 0
    autoanswer_tone = 0x32                  ; autoanswer confirmation tone. For a complete list of tones: grep SKINNY_TONE sccp_protocol.h
                                                    ; not all the tones can be played in a connected state, so you have to try.
    remotehangup_tone = 0x32                ; passive hangup notification. 0 for none
    transfer_tone = 0                               ; confirmation tone on transfer. Works only between SCCP devices
    callwaiting_tone = 0x2d                 ; sets to 0 to disable the callwaiting tone
    musicclass=default                      ; Sets the default music on hold class
    language=hu                                     ; Default language setting
    ;accountcode=skinny                     ; accountcode to ease billing
    deny=0.0.0.0/0.0.0.0                    ; Deny every address except for the only one allowed.
    permit=192.168.0.0/255.255.255.0        ; Accept class C 192.168.1.0
                                                    ; You may have multiple rules for masking traffic.
                                                    ; Rules are processed from the first to the last.
                                                    ; This General rule is valid for all incoming connections. It's the 1st filter.
    
    ;localnet = 192.168.0.0/255.255.255.0 ; All RFC 1918 addresses are local networks
    ;externip = 1.2.3.4                      ; IP Address that we're going to notify in RTP media stream
    ;externhost = mydomain.dyndns.org   ; Hostname (if dynamic) that we're going to notify in RTP media stream
    ; externrefresh = 60                    ; expire time in seconds for the hostname (dns resolution)
    dnd = on                                        ; turn on the dnd softkey for all devices. Valid values are "off", "on" (busy signal), "reject" (busy signal), "silent" (ringer = silent)
    rtptos = 184                            ; sets the default rtp packets TOS
    echocancel = on                         ; sets the phone echocancel for all devices
    silencesuppression = off                ; sets the silence suppression for all devices
    ;callgroup=1,3-4                                ; We are in caller groups 1,3,4. Valid for all lines
    ;pickupgroup=1,3-5                      ; We can do call pick-p for call group 1,3,4,5. Valid for all lines
    ;amaflags =                             ; Sets the default AMA flag code stored in the CDR record
    trustphoneip = no                               ; The phone has a ip address. It could be private, so if the phone is behind NAT
                                                    ; we don't have to trust the phone ip address, but the ip address of the connection
    tos = 0x68                                      ; call control packets tos (0x68 Assured forwarding)
    ;earlyrtp = none                                ; valid options: none, offhook, dial, ringout. default is none.
                                                    ; The audio strem will be open in the progress and connected state.
    private = on                            ; permit the private function softkey
    ;mwilamp = on                           ; Set the MWI lamp style when MWI active to on, off, wink, flash or blink
    ;mwioncall = off                                ; Set the MWI on call.
    ;blindtransferindication = ring ; moh or ring. the blind transfer should ring the caller or just play music on hold
    ;protocolversion = 3                    ; skinny version protocol. Just for testing. 2 to 6
    ;cfwdall = off                          ; activate the callforward ALL stuff and softkeys
    ;cfwdbusy = off                         ; activate the callforward BUSY stuff and softkeys
    
    
    
    
    [devices]
    
    type        = 7910                      ; device type (see below)
    autologin   = 3084  ; lines list. You can add an empty line for an empty button (7960, 7970, 7940, 7920)
    description = Phone7910                 ; internal description. Not important
    ;keepalive = 60                          ; set 0 to disable the keepalive check.
    ;tzoffset  = +1
    transfer = on                           ; enable or disable the transfer capability. It does remove the transfer softkey
    park = on                                       ; take a look to the compile howto. Park stuff is not compiled by default
    ;speeddial = 3082,testname1                     ; you can add an empty speedial if you want an empty button (7960, 7970, 7920)
    ;speeddial = 3077,testname2                  ; speeddial number and name
    cfwdall = off                           ; activate the callforward stuff and softkeys
    cfwdbusy = off
    dtmfmode = inband                               ; inband or outofband. outofband is the native cisco dtmf tone play.
                                                    ; Some phone model does not play dtmf tones while connected (bug?), so the default is inband
    imageversion = P00405000700             ; useful to upgrade old firmwares (the ones that do not load *.xml from the tftp server)
    ;deny=0.0.0.0/0.0.0.0                   ; Same as general
    permit=192.168.0.0/255.255.255.255      ; This device can register only using this ip address
    dnd = on                                        ; turn on the dnd softkey for this device. Valid values are "off", "on" (busy signal), "reject" (busy signal), "silent" (ringer = silent)
    trustphoneip = yes                              ; The phone has a ip address. It could be private, so if the phone is behind NAT
                                                    ; we don't have to trust the phone ip address, but the ip address of the connection
    ;earlyrtp = none                                ; valid options: none, offhook, dial, ringout. default is none.
                                                    ; The audio strem will be open in the progress and connected state.
    private = on                            ; permit the private function softkey for this device
    ;mwilamp = on                           ; Set the MWI lamp style when MWI active to on, off, wink, flash or blink
    ;mwioncall = off                                ; Set the MWI on call.
    device => SEP0007EB6A9F26               ; device name SEP<MAC>
    
    type        = 7914                      ; device type (see below)
    autologin   = 3084  ; lines list. You can add an empty line for an empty button (7960, 7970, 7940, 7920)
    description = Phone7940 ; internal description. Not important
    ;keepalive = 60                          ; set 0 to disable the keepalive check.
    ;tzoffset  = +1
    transfer = on                           ; enable or disable the transfer capability. It does remove the transfer softkey
    park = on                                       ; take a look to the compile howto. Park stuff is not compiled by default
    ;speeddial =                            ; you can add an empty speedial if you want an empty button (7960, 7970, 7920)
    speeddial = 3082,name                   ; speeddial number and name
    speeddial = 3084,Misi                   ; speeddial number and name
    speeddial = 3082,Andras                 ; speeddial number and name
    speeddial = 3083,some1                    ; speeddial number and name
    speeddial = 3084,12345678901234567890                   ; speeddial number and name (the longest name i can use on 7914 display)
    speeddial = 3085,name1                   ; speeddial number and name
    speeddial = 3086,name2                   ; speeddial number and name
    speeddial = 3087,name3                   ; speeddial number and name
    speeddial = 3088,name4                   ; speeddial number and name
    speeddial = 3089,name5                   ; speeddial number and name
    speeddial = 3080,name6                   ; speeddial number and name
    cfwdall = off                           ; activate the callforward stuff and softkeys
    cfwdbusy = off
    dtmfmode = inband                               ; inband or outofband. outofband is the native cisco dtmf tone play.
                                                    ; Some phone model does not play dtmf tones while connected (bug?), so the default is inband
    ;imageversion = P00405000700            ; useful to upgrade old firmwares (the ones that do not load *.xml from the tftp server)
    ;deny=0.0.0.0/0.0.0.0                   ; Same as general
    permit=192.168.0.0/255.255.255.255      ; This device can register only using this ip address
    dnd = on                                        ; turn on the dnd softkey for this device. Valid values are "off", "on" (busy signal), "reject" (busy signal), "silent" (ringer = silent)
    trustphoneip = yes                              ; The phone has a ip address. It could be private, so if the phone is behind NAT
                                                    ; we don't have to trust the phone ip address, but the ip address of the connection
    ;earlyrtp = none                                ; valid options: none, offhook, dial, ringout. default is none.
                                                    ; The audio strem will be open in the progress and connected state.
    private = on                            ; permit the private function softkey for this device
    ;mwilamp = on                           ; Set the MWI lamp style when MWI active to on, off, wink, flash or blink
    ;mwioncall = off                                ; Set the MWI on call.
    device => SEP0007EB063C19               ; device name SEP<MAC>
    
    type        = 7940                      ; device type (see below)
    autologin   = 3077  ; lines list. You can add an empty line for an empty button (7960, 7970, 7940, 7920)
    description = dox       ; internal description. Not important
    ;keepalive = 60                          ; set 0 to disable the keepalive check.
    ;tzoffset  = +1
    transfer = on                           ; enable or disable the transfer capability. It does remove the transfer softkey
    park = on                                       ; take a look to the compile howto. Park stuff is not compiled by default
    ;speeddial =                            ; you can add an empty speedial if you want an empty button (7960, 7970, 7920)
    speeddial = 3093,istvan                 ; speeddial number and name
    cfwdall = off                           ; activate the callforward stuff and softkeys
    cfwdbusy = off
    dtmfmode = inband                               ; inband or outofband. outofband is the native cisco dtmf tone play.
                                                    ; Some phone model does not play dtmf tones while connected (bug?), so the default is inband
    ;imageversion = P00405000700            ; useful to upgrade old firmwares (the ones that do not load *.xml from the tftp server)
    ;deny=0.0.0.0/0.0.0.0                   ; Same as general
    permit=192.168.0.0/255.255.255.255      ; This device can register only using this ip address
    dnd = on                                        ; turn on the dnd softkey for this device. Valid values are "off", "on" (busy signal), "reject" (busy signal), "silent" (ringer = silent)
    trustphoneip = yes                              ; The phone has a ip address. It could be private, so if the phone is behind NAT
                                                    ; we don't have to trust the phone ip address, but the ip address of the connection
    ;earlyrtp = none                                ; valid options: none, offhook, dial, ringout. default is none.
                                                    ; The audio strem will be open in the progress and connected state.
    private = on                            ; permit the private function softkey for this device
    ;mwilamp = on                           ; Set the MWI lamp style when MWI active to on, off, wink, flash or blink
    ;mwioncall = off                                ; Set the MWI on call.
    device => SEP001647A86118               ; device name SEP<MAC>
    
    [lines]
    
    id          = 1000                      ; future use
    pin         = 1234                      ; future use
    label       = 3084                      ; button line label (7960, 7970, 7940, 7920)
    description = 3084              ; top diplay description
    context     = default
    incominglimit = 2                               ; more than 1 incoming call = call waiting.
    transfer = on                           ; per line transfer capability. on, off, 1, 0
    mailbox = 3084                          ; voicemail.conf (syntax: vmbox[@context][:folder])
    vmnum = 7700                                    ; speeddial for voicemail administration, just a number to dial
    cid_name = Misi                 ; caller id name
    cid_num = 3084
    trnsfvm = 7700                          ; extension to redirect the caller (e.g for voicemail)
    secondary_dialtone_digits = 9           ; digits for the secondary dialtone (max 9 digits)
    secondary_dialtone_tone = 0x22  ; outside dialtone
    musicclass=default                      ; Sets the default music on hold class
    language=hu                                     ; Default language setting
    ;accountcode=79501                      ; accountcode to ease billing
    rtptos = 184                            ; sets the the rtp packets TOS for this line
    echocancel = on                         ; sets the phone echocancel for this line
    silencesuppression = off                ; sets the silence suppression for this line
    ;callgroup=1,3-4                                ; We are in caller groups 1,3,4. Valid for this line
    ;pickupgroup=1,3-5                      ; We can do call pick-p for call group 1,3,4,5. Valid for this line
    ;amaflags =                             ; Sets the default AMA flag code stored in the CDR record for this line
    line => 3084
    
    id          = 1001                      ; future use
    pin         = 1234                      ; future use
    label       = 3077                      ; button line label (7960, 7970, 7940, 7920)
    description = 3077              ; top diplay description
    context     = default
    incominglimit = 2                               ; more than 1 incoming call = call waiting.
    transfer = on                           ; per line transfer capability. on, off, 1, 0
    mailbox = 3077                          ; voicemail.conf (syntax: vmbox[@context][:folder])
    vmnum = 7700                                    ; speeddial for voicemail administration, just a number to dial
    cid_name = Docs Istvan                  ; caller id name
    cid_num = 3077
    trnsfvm = 7700                          ; extension to redirect the caller (e.g for voicemail)
    secondary_dialtone_digits = 9           ; digits for the secondary dialtone (max 9 digits)
    secondary_dialtone_tone = 0x22  ; outside dialtone
    musicclass=default                      ; Sets the default music on hold class
    language=hu                                     ; Default language setting
    ;accountcode=79501                      ; accountcode to ease billing
    rtptos = 184                            ; sets the the rtp packets TOS for this line
    echocancel = on                         ; sets the phone echocancel for this line
    silencesuppression = off                ; sets the silence suppression for this line
    ;callgroup=1,3-4                                ; We are in caller groups 1,3,4. Valid for this line
    ;pickupgroup=1,3-5                      ; We can do call pick-p for call group 1,3,4,5. Valid for this line
    ;amaflags =                             ; Sets the default AMA flag code stored in the CDR record for this line
    line => 3077
    
    ; phone types
    ;    12 -- Cisco IP Phone 12SP+ (or other 12 variants)
    ;    30 -- Cisco IP Phone 30VIP (or other 30 variants)
    ;  7902 -- Cisco IP Phone 7902G
    ;  7905 -- Cisco IP Phone 7905G
    ;  7910 -- Cisco IP Phone 7910
    ;  7912 -- Cisco IP Phone 7912G
    ;  7935 -- Cisco IP Conference Station 7935
    ;  7936 -- Cisco IP Conference Station 7936
    ;  7920 -- Cisco IP Wireless Phone 7920
    ;  7940 -- Cisco IP Phone 7940
    ;  7960 -- Cisco IP Phone 7960
    ;  7970 -- Cisco IP Phone 7970
    ;  7914 -- Cisco IP Phone 7960 with a 7914 addon
    ;   ata -- Cisco ATA-186 or Cisco ATA-188
    ;  kirk -- Kirk telecom ip phones
    
    The module currently can not be reload the configuration file after you changed must unloaded and load again. So to reload the configuration file currently the only way is to unload and load again the chan_sccp.so module from asterisk console.

OS specific help

Validation, confirmation tests

  • No labels