RFC2833 and KPML Interworking

Keypad Markup Language (KPML) is used to indicate DTMF tones in SIP messaging. KPML is used by the Key Press Stimulus Package as a SIP Event Notification Package. Endpoints will send DTMF tone indications via NOTIFY messages. The Oracle Communications Session Border Controller can engage in the Event Notification with an endpoint on one call leg and perform digit translation to RFC 2833 telephone-events on the other call leg.

KPML to RFC2833

KPML to RFC2833 interworking requires that the INVITE request or response's SDP does not contain telephone-event, and is received from
  • A session agent with kpml-2833-interworking set to enabled
  • A session agent with kpml-2833-interworking set to inherited from the SIP interface (with kpml-2833-interworking set to enabled)
  • A previous hop that is not a session agent, and the SIP interface the message received on has kpml-2833-interworking set to enabled.

The egress side of the call must have rfc2833-mode set to preferred in either the SIP interface or session agent, so that the Oracle Communications Session Border Controller inserts telephone-event in the SDP. Setting rfc2833-mode to dual is unsupported. The answerer must respond to the invite accepting of telephone-event media. The Allow-Event: kpml header is removed from the INVITE request or response when KPML-interworking is not set to enabled on the next hop.

If the INVITE succeeds, the Oracle Communications Session Border Controller replies with a SUBSCRIBE request for the KPML event to the caller.

If the caller replies to the SUBSCRIBE with a 2xx, all subsequent NOTIFY request received on the dialog are processed and replied to with a 200 OK. Each digit in the NOTIFY request will generate a telephone-event on the egress side of the call.

The Oracle Communications Session Border Controller generates a refresh SUBSCRIBE before the subscription expires.

If the call negotiates to RFC 2833 to RFC 2833, no KPML interworking will be performed.

The following diagram shows the standard case where KPML to RFC 2833 interworking is performed.

This image shows the OCSBC interworking KPML and RFC 2833.

KPML to RFC 2833 translation is also supported when used in conjunction with SDP insertion on the KPML side of the call. For example:

This image shows the OCSBC translating KPML and RFC 2833 with SDP inserted on the KPML side of the call.

RFC 2833 to KPML

RFC2833 to KPML interworking requires that the INVITE request or response's does not contain Allow-Event: kpml. When sending an INVITE when RFC2833 interworking applies, an Allow-Event: kpml header is added to the INVITE when the message's next hop on egress is either :
  • A session agent with kpml-2833-interworking set to enabled
  • A session agent with kpml-2833-interworking set to inherited from the SIP interface (with kpml-2833-interworking set to enabled)
  • Not a session agent, and the SIP interface the message is sent from has kpml-2833-interworking set to enabled.

If the scenario passes the above test and the Allow-Event: kpml header is added to the INVITE:

When the Oracle Communications Session Border Controller subsequently receives a SUBSCRIBE request within the INVITE created dialog for the kpml event, it will accept the subscription and respond with a 200 OK. At this point, the Oracle Communications Session Border Controller can generate a KPML NOTIFY request with a KPML digit corresponding to each 2833 telephone-event received from the far end until
  • the INVITE dialog is terminated due to a BYE
  • the subscription expires
  • the subscription is terminated with a subscribe request Expires: 0
The following diagram shows a typical RFC2833 to KPML interworking call flow. Note the following:
  • While the example has SDP in the INVITE, delayed offer scenarios where the SDP exchange occurs in the 20 0OK and the ACK are supported
  • The rfc2833-mode parameter in the in either the SIP interface or session agent, is considered in the interworking. See next section:
  • If the call negotiates to RFC 2833 to RFC 2833, no KPML interworking will be performed.
  • In RFC 2833 to KPML scenarios, if the SUBSCRIBE is not received quickly enough, RFC 2833 digits will be dropped.
This image shows the OCSBC performing typical KPML and RFC 2833 interworking
Originator Terminator SBC Behavior
rfc2833-mode=transparent, offers 2833 SDP rfc2833-mode=transparent, answers NO 2833 SDP Forwards 2833 offer, Adds Allow-Event: kpml, passes non-2833 capability to Originator (no 2833 support)
rfc2833-mode=preferred, offers 2833 SDP rfc2833-mode=transparent, answers NO 2833 SDP Forwards 2833 offer, Adds Allow-Event: kpml, inserts 2833 capability to Originator, performs 2833 to KPML translation
rfc2833-mode=transparent, offers 2833 SDP rfc2833-mode=preferred, answers NO 2833 SDP Forwards 2833 offer, Adds Allow-Event: kpml, passes non-2833 capability to Originator (no 2833 support)
rfc2833-mode=preferred, offers 2833 SDP rfc2833-mode=preferred, answers NO 2833 SDP Forwards 2833 offer, Adds Allow-Event: kpml, inserts 2833 capability to Originator, performs 2833 to KPML translation