Subject: [dispatch] How to construct a finite state machine to select an alerting signal

From: [email-masked] (Dale R. Worley)
Date: Thu, 08 Sep 2016 17:56:14 -0400

RFC 7462 defines a series of "alert" URNs that can be used in the SIP
Alert-Info header.  When a UA receives an INVITE or a provisional
response to an INVITE, the UA should process the "alert" URNs to
determine which signal (ring tone or ringback tone) to present to the
user.  RFC 7462 provides normative constraints on the UA's processing of
the URNs.  It also provides a non-normative algorithm that a UA can use
which satisfies the constraints.

But the algorithm in RFC 7462 is complicated and we know of no
implementations.

I've worked out how to construct a finite state machine to process the
'alert' URNs in an Alert-Info header to select one of the alerting
signals of a UA.  Once you fix the set of signals and their meanings
(the URNs that the signal indicates), there's an algorithm to construct
the FSM, and it ensures that FSM satisfies the rules in RFC 7462.

I've written a draft to describe the process in detail.  The draft also
points to an implementation of the algorithm in Python, so people can
try out this method and see how it works for them.

I believe that this draft (or something very much like it) is necessary
and sufficient to make RFC 7462 usable in practice.

I'd like to hear any feedback you have.

Dale

Name:		draft-worley-alert-info-fsm
Revision:	03
Title:		A Simpler Method for Processing Alert-Info URNs
Document date:	2016-09-08
Group:		Individual Submission
Pages:		36
URL:            https://www.ietf.org/internet-drafts/draft-worley-alert-info-fsm-03.txt
Status:         https://datatracker.ietf.org/doc/draft-worley-alert-info-fsm/
Htmlized:       https://tools.ietf.org/html/draft-worley-alert-info-fsm-03
Diff:           https://www.ietf.org/rfcdiff?url2=draft-worley-alert-info-fsm-03

Abstract:
   The "alert" namespace of uniform resource names (URNs) can be used in
   the Alert-Info header field of Session Initiation Protocol (SIP)
   requests and responses to inform a VoIP telephone (user agent) of the
   characteristics of the call that the user agent has originated or
   terminated.  Based on the URNs in the Alert-Info header field, the
   user agent must select an the best available signal to present to its
   user to indicate the characteristics of the call.  This document
   describes a method by which a user agent's designer can, based on the
   user agent's signals and their meanings, constructing a finite state
   machine (FSM) to process the URNs to select a signal in a way that
   obeys the restrictions given in the definition of the "alert" URN
   namespace.  In many situations, the resulting FSM is simpler and
   faster than the previously described selection algorithm.