Page tree
Skip to end of metadata
Go to start of metadata

About

SCCP (or Skinny), is a ToIP protocol used in Cisco products like Cisco IP Phones 79xx.

For more info, see Skinny Call Control Protocol on Wikipedia.

Icon

If you use SCCP please test the Patterns Dialplan Configuration halfway down this page and provide feedback at the bottom of this page on how it works. Specifically, will FreeSWITCH recognize variable length dial strings and will it timeout properly as specified by the data provided to the skinny-wait dialplan application. Thanks.

 

Features

Implemented

  • Incoming and outgoing calls (early media supported)
  • Shared lines and multiple calls per lines
  • CallInfo set as early as possible
  • New call made from: OffHook, Softkeys (Redial, NewCall), Stimulus (LastNumberRedial, VoiceMail, SpeedDial)
  • Answering calls via: OffHook, Softkeys (Answer)
  • Holding/Retrieving calls via Softkeys (Hold, Resume) or Stimulus (Hold), with MOH (music on hold)
  • Transfer via Softkeys (Transfer) or Stimulus (Transfer). Blind transfer (with OnHook)
  • Ending call via: OnHook, Softkeys (EndCall)
  • Misc: SoftKeys (Backspace)
  • Handle firmware version request (VersionReqMessage) per device type or per device
  • Patterns for dialed numbers to process (patterns-dialplan and patterns-context)
  • Custom applications can be made using the API and events: See Custom applications
  • Custom Events: See Custom Events
  • API Commands: See API Commands
  • Message Waiting indicator (MWI) on the first line of each device
  • Working on x86 (32-bit) and x86_64 (64-bit)

Missing

Missing features that somebody with a Cisco Skinny system needs to add.

 Click here to expand...

(bold means Important missing features ; this list doesn't mean that anyone is working on it :-P )

  • Softkeys/Stimulus:
    • CFwdAll/ForwardAll, CFwdBusy/ForwardBusy, CFwdNoAnswer/ForwardNoAnswer; see 
      JIRA Issues Macro: Data cannot be retrieved due to an unexpected error
    • /AutoAnswer, /AutoAnswerRelease
    • /ServiceURL
    • /Conference, /MeetMeConference, Join, MeetMeConfrn
    • Park/CallPark, CallPickUp/CallPickup, GrpCallPickUp/GroupCallPickup; see 
      JIRA Issues Macro: Data cannot be retrieved due to an unexpected error
    • Info
    • Confrn
    • DND (DoNotDisturb); see 
      JIRA Issues Macro: Data cannot be retrieved due to an unexpected error
  • Per line:
    • no-answer-duration
    • Ring policies: on-idle, on-active (when any line on the phone has a call in progress); see
      JIRA Issues Macro: Data cannot be retrieved due to an unexpected error
       
    • Ring policies: call-pickup-group/on-idle, call-pickup-group/on-active
    • busy-trigger (number of active calls before busy)
  • Features:
    • Improved presence:
      • Message Waiting indicator (MWI) improvements (how to handle multiple lines?)
      • Shared Line Appearance common to mod_sofia (SCA)
      • Busy Lamp Field
    • Better behavior (when: other leg busy, ...)
    • IPMA (manager-assistant)
    • Extension mobility
    • Soft-key template and Soft-key sets configurable via XML
    • Bypass Media (help needed)
    • Codec Negotiation (help needed, see
      JIRA Issues Macro: Data cannot be retrieved due to an unexpected error
       
    • Dynamic Speed Dials (need more info on this)
    • Other platforms than i386: amd64 (need more testing), ppc (nothing done)
    • Support for Smart Phone Control Protocol (SPCP) info for CP-500 phones and the SPA525 phone
  • Administration and management:
    • LDAP schema
    • xml_curl module to read from LDAP (prototype to be committed)
    • GOsa plugin and/or FreePBX module
    • Use FUSE to automagicaly create files on TFTP request
    • Whisper Coaching
  • Custom Events:
  • API Commands:
skinny profile <profile_name> device <device_name> send SelectSoftKeysMessage [...]
skinny profile <profile_name> device <device_name> send CallInfo [...]
skinny profile <profile_name> device <device_name> send StartTone <tone>
skinny profile <profile_name> device <device_name> send StopTone
skinny status profile <profile_name> line <line_name>
skinny status profile <profile_name> device <device_name> buttons [<button_type>]

Interop List

This list is a work-in-progress; please add any tested SCCP phone.

ModelDeviceTypeIdStatus
Cisco IP Phone 79106OK(1)
Cisco IP Phone 79408OK(2)
Cisco IP Phone 79607OK(2)
Cisco IP Phone 796130018OK
Cisco IP Phone 7975437OK
Nokia Call Connect 2.0 ?Not tested(3)

Footnotes:

  1. The six buttons (msgs, conf, forward, speed 1, speed 2 and redial) have button positions 5 to 10 respectively.
  2. Also tested with Cisco Unified IP Phone Expansion Module 7914: adds 14 definable buttons with working lights. Button number starts with 3 for the 7940 and 7 for the 7960.
  3. Mobile Business Solutions From Cisco and Nokia Downloads

"DeviceTypeId" can be found by issuing the following command on fs_cli:

skinny status profile internal device <your_device>

Building

There is no additional dependency needed to build mod_skinny. You just need to edit modules.conf (uncomment endpoints/mod_skinny) and run:

make mod_skinny

Also uncomment <load module="mod_skinny"/> in ~/freeswitch/conf/auto_configs/modules.conf.xml so that FreeSWITCH actually loads the module at start time.

Configuration

  • 192.168.0.2 is the IP of the TFTP server
  • 192.168.0.3 is the IP of the FreeSWITCH server (with mod_skinny)
  • SEP001120AABBCC is the phone id (based on the MAC address)
  • Voicemail/Messages is hardwired in code to dial extension "vmain".

DHCP and TFTP Configuration

This is widely discussed at voip-info.org (http://www.voip-info.org/wiki/view/Asterisk+phone+cisco+79xx), here is a quick overview.

DHCP

First, the phone gets its IP address and other network configs through DHCP.

The important setting is the tftp server option

using udhcp (the most lightweight) , this is set in /etc/udhcpd.conf:

opt tftp 192.168.0.2

using ISC DHCP (widely used), this is set in /etc/dhcp3/dhcpd.conf:

option tftp-server-name 192.168.0.2;

TFTP

There are plenty of TFTP server implementations. In the root of the tftp directory (usually /srv/tftp), put the following files:

XMLDefault.cnf.xml  Expand source
SEP001120AABBCC.cnf.xml (minimal)  Expand source
SEP001120AABBCC.cnf.xml (extended)  Expand source
Icon

FreeSWITCH Configuration

The configuration is loaded from autolad_configs as usual. The default is:

conf/autoload_configs/skinny.conf.xml

 

Profile Configurations

Each profile is put in conf/skinny_profiles. The default configuration should work without modifications.

 

conf/skinny_profiles/internal.xml  Expand source
Icon
  • If ip="", mod_skinny will listen on all IP addresses. If you want to force IPv6, use ip="::"
  • If ext-autodial is set, the phone will do a ringdown/automatically dial that number when taken off-hook. This is useful for customer service and emergency phones.
  • mod_skinny logs a lot under [DEBUG], every skinny message received or sent. keepAlive and keepAliveAck messages are only logged if profile's debug is >=10.
  • When issuing a reloadxml command, those values are not reloaded. Use skinny profile <profile_name> set <name> <value> instead.
  • You typically don't have to bother about the firmware-version unless your phone asks for it through skinny (most Cisco phones use XML files from tftp). If you have missed one, mod_skinny will complain in the log with the following message:
     [DEBUG] skinny_server.c:1501 Device SEP001120AABBCC:0 is requesting for firmware version, but none is set.
  • The auto-restart param is used when a network interface ip changes. If set to true, the socket will be closed (including all connected listeners) and reopened on the new IP.

Device Configuration

Devices are set up as users in conf/directory. The critical parameter here is id, which corresponds to the MAC address.

 

conf/directory/default/skinny-example.xml  Expand source

Patterns Dialplan configuration

This dialplan is used when calling from a skinny phone. The default configuration will allow you to call SIP phones and some tests like the variable info dump to fs_cli (9192).

As all the call process is made on the server, we need a way to know how many digits are necessary to route the call. Executing the dialplan each time a digit is pressed is not correct. An other dialplan context is used to say simply what mod_skinny should do:

Please test on your SCPP/Skinny system and tell us how to improve this module at

JIRA Issues Macro: Data cannot be retrieved due to an unexpected error

 

conf/dialplan/skinny-patterns.xml

You can select the diaplan context by setting patterns-dialplan and patterns-context in the skinny profile configuration.

Dialplan configuration

This dialplan snippet is necessary when you need to send a call to a skinny phone. Without this, you will not be able to call your skinny phones!

Add something like this to  (Example with 11xx):

conf/dialplan/default.xml

 

Outgoing Channel Syntax

Basic form:

skinny/<profile>/<number>

API Commands

Note: most of the command arguments can be auto completed on CLI by using tab (for example <ring_type>).

USAGE:
--------------------------------------------------------------------------------
skinny help
skinny status profile <profile_name>
skinny status profile <profile_name> device <device_name>
skinny profile <profile_name> device <device_name> send ResetMessage [DeviceReset|DeviceRestart]
skinny profile <profile_name> device <device_name> send SetRingerMessage <ring_type> <ring_mode>
skinny profile <profile_name> device <device_name> send SetLampMessage <stimulus> <instance> <lamp_mode>
skinny profile <profile_name> device <device_name> send SetSpeakerModeMessage <speaker_mode>
skinny profile <profile_name> device <device_name> send CallStateMessage <call_state> <line_instance> <call_id>
skinny profile <profile_name> device <device_name> send <UserToDeviceDataMessage|UserToDeviceDataVersion1Message> [ <param>=<value>;... ] <data>
skinny profile <profile_name> set <name> <value>
--------------------------------------------------------------------------------

(More TODO)

Custom Events

skinny::register

Event-Subclass: skinny%3A%3Aregister
Event-Name: CUSTOM
Core-UUID: 1f9d861e-e5cc-4b5c-b32d-9a7a1dd0b540
FreeSWITCH-Hostname: netthieu
FreeSWITCH-IPv4: 192.168.0.3
FreeSWITCH-IPv6: %3A%3A1
Event-Date-Local: 2010-09-24%2002%3A19%3A16
Event-Date-GMT: Fri,%2024%20Sep%202010%2000%3A19%3A16%20GMT
Event-Date-Timestamp: 1285287556518629
Event-Calling-File: skinny_protocol.c
Event-Calling-Function: skinny_device_event
Event-Calling-Line-Number: 224
Skinny-Profile-Name: internal
Skinny-Device-Name: SEP001120AABBCC
Skinny-Station-User-Id: 0
Skinny-Station-Instance: 0
Skinny-IP-Address: 192.168.0.4
Skinny-Device-Type: 30018
Skinny-Max-Streams: 5
Skinny-Port: (null)
Skinny-Codecs: _undef_

skinny::unregister

Event-Subclass: skinny%3A%3Aunregister
Event-Name: CUSTOM
Core-UUID: 1f9d861e-e5cc-4b5c-b32d-9a7a1dd0b540
FreeSWITCH-Hostname: netthieu
FreeSWITCH-IPv4: 192.168.0.3
FreeSWITCH-IPv6: %3A%3A1
Event-Date-Local: 2010-09-24%2002%3A18%3A39
Event-Date-GMT: Fri,%2024%20Sep%202010%2000%3A18%3A39%20GMT
Event-Date-Timestamp: 1285287519036825
Event-Calling-File: skinny_protocol.c
Event-Calling-Function: skinny_device_event
Event-Calling-Line-Number: 224
Skinny-Profile-Name: internal
Skinny-Device-Name: SEP001120AABBCC
Skinny-Station-User-Id: 0
Skinny-Station-Instance: 0
Skinny-IP-Address: 192.168.0.4
Skinny-Device-Type: 30018
Skinny-Max-Streams: 5
Skinny-Port: 3500
Skinny-Codecs: WIDEBAND,ULAW,ALAW,G729,G729,G729,G729,RFC2833_DYNPAYLOAD

skinny::expire

skinny::alarm

Event-Subclass: skinny%3A%3Aalarm
Event-Name: CUSTOM
Core-UUID: 1f9d861e-e5cc-4b5c-b32d-9a7a1dd0b540
FreeSWITCH-Hostname: netthieu
FreeSWITCH-IPv4: 192.168.0.3
FreeSWITCH-IPv6: %3A%3A1
Event-Date-Local: 2010-09-24%2002%3A19%3A16
Event-Date-GMT: Fri,%2024%20Sep%202010%2000%3A19%3A16%20GMT
Event-Date-Timestamp: 1285287556312672
Event-Calling-File: skinny_protocol.c
Event-Calling-Function: skinny_device_event
Event-Calling-Line-Number: 224
Skinny-Alarm-Severity: 2
Skinny-Alarm-DisplayMessage: 22%3A%20Nom%SEP001120AABBCC%20Image%3D%20SCCP41.8-3-1S%20Dernier%3DR%E9init.-R%E9init.
Skinny-Alarm-Param1: 0
Skinny-Alarm-Param2: 0

skinny::call_state

this is for internal use and might change in the future.

skinny::user_to_device

Event-Subclass: skinny%3A%3Auser_to_device
Event-Name: CUSTOM
Core-UUID: 1f9d861e-e5cc-4b5c-b32d-9a7a1dd0b540
FreeSWITCH-Hostname: netthieu
FreeSWITCH-IPv4: 192.168.0.3
FreeSWITCH-IPv6: %3A%3A1
Event-Date-Local: 2010-09-24%2002%3A10%3A01
Event-Date-GMT: Fri,%2024%20Sep%202010%2000%3A10%3A01%20GMT
Event-Date-Timestamp: 1285287001570252
Event-Calling-File: skinny_protocol.c
Event-Calling-Function: skinny_device_event
Event-Calling-Line-Number: 224
Skinny-Profile-Name: internal
Skinny-Device-Name: SEP001120AABBCC
Skinny-Station-User-Id: 0
Skinny-Station-Instance: 0
Skinny-IP-Address: 192.168.0.4
Skinny-Device-Type: 30018
Skinny-Max-Streams: 5
Skinny-Port: 3500
Skinny-Codecs: WIDEBAND,ULAW,ALAW,G729,G729,G729,G729,RFC2833_DYNPAYLOAD
Skinny-UserToDevice-Message-Id-String: UserToDeviceDataVersion1Message
Skinny-UserToDevice-sequence-flag: 2
Content-Length: 111

<CiscoIPPhoneText><Title>Hello</Title><Prompt>Amazing</Prompt><Text>This is some text</Text></CiscoIPPhoneText>

skinny::device_to_user

Event-Subclass: skinny%3A%3Adevice_to_user
Event-Name: CUSTOM
Core-UUID: 1f9d861e-e5cc-4b5c-b32d-9a7a1dd0b540
FreeSWITCH-Hostname: netthieu
FreeSWITCH-IPv4: 192.168.0.3
FreeSWITCH-IPv6: %3A%3A1
Event-Date-Local: 2010-09-24%2002%3A10%3A01
Event-Date-GMT: Fri,%2024%20Sep%202010%2000%3A10%3A01%20GMT
Event-Date-Timestamp: 1285287001696990
Event-Calling-File: skinny_protocol.c
Event-Calling-Function: skinny_device_event
Event-Calling-Line-Number: 224
Skinny-Profile-Name: internal
Skinny-Device-Name: SEP001120AABBCC
Skinny-Station-User-Id: 0
Skinny-Station-Instance: 0
Skinny-IP-Address: 192.168.0.4
Skinny-Device-Type: 30018
Skinny-Max-Streams: 5
Skinny-Port: 3500
Skinny-Codecs: WIDEBAND,ULAW,ALAW,G729,G729,G729,G729,RFC2833_DYNPAYLOAD
Skinny-DeviceToUser-Message-Id: 66
Skinny-DeviceToUser-Message-Id-String: DeviceToUserDataResponseVersion1Message
Skinny-DeviceToUser-Application-Id: 0
Skinny-DeviceToUser-Line-Instance: 0
Skinny-DeviceToUser-Call-Id: 0
Skinny-DeviceToUser-Transaction-Id: 0
Skinny-DeviceToUser-Data-Length: 172
Skinny-DeviceToUser-Sequence-Flag: 2
Skinny-DeviceToUser-Display-Priority: 0
Skinny-DeviceToUser-Conference-Id: 0
Skinny-DeviceToUser-App-Instance-Id: 0
Skinny-DeviceToUser-Routing-Id: 0
Content-Length: 171

<?xml version="1.0" encoding="iso8859-1"?>
<CiscoIPPhoneResponse>
<ResponseItem URL="cip.xml.XmlTextObject@e771b" Data="SUCCESS" Status="0" />
</CiscoIPPhoneResponse>

skinny::xml_alarm

Event-Subclass: skinny%3A%3Axml_alarm
Event-Name: CUSTOM
Core-UUID: a4aaa78c-9cfe-4e15-abb8-52e222a361d8
FreeSWITCH-Hostname: servthieu
FreeSWITCH-IPv4: 192.168.0.3
FreeSWITCH-IPv6: %3A%3A1
Event-Date-Local: 2010-12-19%2022%3A10%3A43
Event-Date-GMT: Sun,%2019%20Dec%202010%2021%3A10%3A43%20GMT
Event-Date-Timestamp: 1292793043629627
Event-Calling-File: skinny_protocol.c
Event-Calling-Function: skinny_device_event
Event-Calling-Line-Number: 224
Content-Length: 1232

<?xml version="1.0" encoding="UTF-8"?>
<x-cisco-alarm>
<Alarm Name="LastOutOfServiceInformation">
<ParameterList>
<String name="DeviceName">SEP001120AABBCC</String>
<String name="DeviceIPv4Address">192.168.0.4</String>
<String name="IPv4DefaultGateway">192.168.0.254</String>
<String name="DeviceIPv6Address"></String>
<String name="IPv6DefaultGateway"></String>
<String name="ModelNumber">CP-7961G</String>
<String name="NeighborIPv4Address">192.168.0.253</String>
<String name="NeighborIPv6Address"></String>
<String name="NeighborDeviceID">sw2.local</String>
<String name="NeighborPortID">3</String>
<Enum name="DHCPv4Status">1</Enum>
<Enum name="DHCPv6Status">0</Enum>
<Enum name="TFTPCfgStatus">0</Enum>
<Enum name="DNSStatusUnifiedCM1">0</Enum>
<Enum name="DNSStatusUnifiedCM2">0</Enum>
<Enum name="DNSStatusUnifiedCM3">0</Enum>
<String name="VoiceVLAN">4095</String>
<String name="UnifiedCMIPAddress"><not open></String>
<String name="LocalPort">-1</String>
<String name="TimeStamp">1289313813826</String>
<Enum name="ReasonForOutOfService"></Enum>
<String name="LastProtocolEventSent">1:Register</String>
<String name="LastProtocolEventReceived">129:RegisterAck</String>
</ParameterList>
</Alarm>
</x-cisco-alarm>

More

If you want one more, file a JIRA ticket or, better yet, submit a patch to add the features. The FreeSWITCH developer team has no Skinny systems against which to test.

Custom Applications

If you want to write a custom application, you can control the phone by using the API. For example:

skinny profile internal device SEP001120AABBCC send UserToDeviceDataVersion1Message sequence-flag=2 '<CiscoIPPhoneText><Title>Hello</Title><Prompt>Amazing</Prompt><Text>This is some text</Text></CiscoIPPhoneText>'

You can also register to event skinny::device_to_user (and others).

Related documentation:

Example implementations :

References

Docs

Existing implementations

Skinny Message list

MessageCodeStatus in mod_skinny
Station -> Callmanager
KeepAliveMessage0x0000DONE
RegisterMessage0x0001DONE
IpPortMessage0x0002DONE
KeypadButtonMessage0x0003DONE
EnblocCallMessage0x0004DONE
StimulusMessage0x0005DONE
OffHookMessage0x0006DONE
OnHookMessage0x0007DONE
HookFlashMessage0x0008 
ForwardStatReqMessage0x0009DONE
SpeedDialStatReqMessage0x000ADONE
LineStatReqMessage0x000BDONE
ConfigStatReqMessage0x000CDONE
TimeDateReqMessage0x000DDONE
ButtonTemplateReqMessage0x000EDONE
VersionReqMessage0x000FDONE
CapabilitiesResMessage0x0010DONE
MediaPortListMessage0x0011 
ServerReqMessage0x0012 
AlarmMessage0x0020DONE
MulticastMediaReceptionAck0x0021 
OpenReceiveChannelAck0x0022DONE
ConnectionStatisticsRes0x0023 
OffHookWithCgpnMessage0x0024 
SoftKeySetReqMessage0x0025DONE
SoftKeyEventMessage0x0026DONE
UnregisterMessage0x0027DONE
SoftKeyTemplateReqMessage0x0028DONE
RegisterTokenReq0x0029 
MediaTransmissionFailure0x002A 
HeadsetStatusMessage0x002BDONE
MediaResourceNotification0x002C 
RegisterAvailableLinesMessage0x002DDONE
DeviceToUserDataMessage0x002EDONE
DeviceToUserDataResponseMessage0x002FDONE
UpdateCapabilitiesMessage0x0030 
OpenMultiMediaReceiveChannelAckMessage0x0031 
ClearConferenceMessage0x0032 
ServiceURLStatReqMessage0x0033DONE
FeatureStatReqMessage0x0034DONE
CreateConferenceResMessage0x0035 
DeleteConferenceResMessage0x0036 
ModifyConferenceResMessage0x0037 
AddParticipantResMessage0x0038 
AuditConferenceResMessage0x0039 
AuditParticipantResMessage0x0040 
DeviceToUserDataVersion1Message0x0041DONE
DeviceToUserDataResponseVersion1Message0x0042DONE
DialedPhoneBookMessage0x0048Incomplete
AccessoryStatusMessage0x0049DONE
 ?0x004A 
Callmanager -> Station
RegisterAckMessage0x0081DONE
StartToneMessage0x0082DONE
StopToneMessage0x0083DONE
SetRingerMessage0x0085DONE
SetLampMessage0x0086DONE
SetHookFlashDetectModeMessage0x0087 
SetSpeakerModeMessage0x0088DONE
SetMicroModeMessage0x0089 
StartMediaTransmission0x008ADONE
StopMediaTransmission0x008BDONE
StartMediaReception0x008C 
StopMediaReception0x008D 
CallInfoMessage0x008FDONE
ForwardStatMessage0x0090Incomplete
SpeedDialStatMessage0x0091DONE
LineStatMessage0x0092DONE
ConfigStatMessage0x0093DONE
DefineTimeDate0x0094DONE
StartSessionTransmission0x0095 
StopSessionTransmission0x0096 
ButtonTemplateMessage0x0097DONE
VersionMessage0x0098DONE
DisplayTextMessage0x0099 
ClearDisplay0x009A 
CapabilitiesReqMessage0x009BDONE
EnunciatorCommandMessage0x009C 
RegisterRejectMessage0x009DDONE
ServerResMessage0x009E 
Reset0x009FDONE
KeepAliveAckMessage0x0100DONE
StartMulticastMediaReception0x0101 
StartMulticastMediaTransmission0x0102 
StopMulticastMediaReception0x0103 
StopMulticastMediaTransmission0x0104 
OpenReceiveChannel0x0105DONE
CloseReceiveChannel0x0106DONE
ConnectionStatisticsReq0x0107 
SoftKeyTemplateResMessage0x0108DONE
SoftKeySetResMessage0x0109DONE
SelectSoftKeysMessage0x0110DONE
CallStateMessage0x0111DONE
DisplayPromptStatusMessage0x0112DONE
ClearPromptStatusMessage0x0113DONE
DisplayNotifyMessage0x0114 
ClearNotifyMessage0x0115 
ActivateCallPlaneMessage0x0116DONE
DeactivateCallPlaneMessage0x0117 
UnregisterAckMessage0x0118DONE
BackSpaceReqMessage0x0119DONE
RegisterTokenAck0x011A 
RegisterTokenReject0x011B 
StartMediaFailureDetection0x011C 
DialedNumberMessage0x011DDONE
UserToDeviceDataMessage0x011EDONE
FeatureStatMessage0x011FDONE
DisplayPriNotifyMessage0x0120DONE
ClearPriNotifyMessage0x0121 
StartAnnouncementMessage0x0122 
StopAnnouncementMessage0x0123 
AnnouncementFinishMessage0x0124 
NotifyDtmfToneMessage0x0127 
SendDtmfToneMessage0x0128 
SubscribeDtmfPayloadReqMessage0x0129 
SubscribeDtmfPayloadResMessage0x012A 
SubscribeDtmfPayloadErrMessage0x012B 
UnSubscribeDtmfPayloadReqMessage0x012C 
UnSubscribeDtmfPayloadResMessage0x012D 
UnSubscribeDtmfPayloadErrMessage0x012E 
ServiceURLStatMessage0x012FDONE
CallSelectStatMessage0x0130 
OpenMultiMediaChannelMessage0x0131 
StartMultiMediaTransmission0x0132 
StopMultiMediaTransmission0x0133 
MiscellaneousCommandMessage0x0134 
FlowControlCommandMessage0x0135 
CloseMultiMediaReceiveChannel0x0136 
CreateConferenceReqMessage0x0137 
DeleteConferenceReqMessage0x0138 
ModifyConferenceReqMessage0x0139 
AddParticipantReqMessage0x013A 
DropParticipantReqMessage0x013B 
AuditConferenceReqMessage0x013C 
AuditParticipantReqMessage0x013D 
UserToDeviceDataVersion1Message0x013FDONE
FlowControlCommandMessage0x0141 
 ?0x0142 
 ?0x0143 
 ?0x0144 
DisplayDynamicPromptStatusMessage0x0145 
FeatureStatAdvancedMessage0x0146 
LineStatDynamicMessage0x0147 
ServiceURLStatDynamicMessage0x0148 
SpeedDialStatDynamicMessage0x0149 
CallInfoDynamicMessage0x014A 
DialedPhoneBookAckMessage0x0152Incomplete
 ?0x0153 
StartMediaTransmissionAck0x0154 
ExtensionDeviceCaps0x0159 
XMLAlarmMessage0x015ADONE
SPARegisterMessage0x8000