Goal (short description)
H.323 (dimitris), SCCP (misi), IAX
The goal is connect hardphones to Asterisk PBX using SCCP http://en.wikipedia.org/wiki/Skinny_Client_Control_Protocol
Available Asterisk sccp channels:
This example is using chan_sccp
Applicability
Using Skinny Call Control Protocol and Cisco Hardphones 79XX. Phone with SCCP software image what are connected to Asterisk PBX.
Prerequisites (OS, dependencies on other software)
- Debian(etch) asterisk
- chan_sccp (http://chan-sccp.berlios.de/)
Configuration (OS agnostic)
download and untar and compile ftp://ftp.berlios.de/pub/chan-sccp/chan_sccp-20060408.tar.bz2
No Format |
---|
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# |
Wiki Markup |
---|
Modify /etc/asterisk/modules.conf in section \[modules\] to unload Asterisk built in module chan_skinny and instead load module chan_sccp |
modules.conf
No Format |
---|
[modules] noload => chan_skinny.so load => chan_sccp.so |
Copy and Edit example configuration files
Copy configuration file sccp.conf what can be found in in directory conf
No Format |
---|
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
No Format |
---|
<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.)
Info | ||
---|---|---|
| ||
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
No Format |
---|
; (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 |
Apply configuration
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.
extensions.conf
You can reach SCCP line: SCCP/extension
add similar line to /etc/asterisk/extensions.conf
No Format |
---|
exten => 1,1,Dial(SCCP/3084) |
OS specific help
Validation, confirmation tests
If everything went fine, you should be able to register cisco phones 7914, 7940, 7960 hard phone's into your asterisk PBX, You can bridge calls between sip and sccp. You can make test calls from skinny phones to already configured sip lines and reverse too you can reach sccp phones from sip lines.