Interactions | SIP NOTIFY XML body | XML definition | ResultDisplay |
---|
UAS | UAS => UAC | UAC translation rulesPFK | Complete rule set | PFK LED & label (number) | PFK LED & label (display name) |
---|
goes offhook | dialog state => trying Code Block |
---|
language | xml |
---|
title | NOTIFY |
---|
linenumbers | true |
---|
collapse | true |
---|
| NOTIFY
...
<?xml version="1.0"?>
<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info"
version="..."
state="full"
entity="sip:101@...">
<dialog id="..." >
<state>trying</state>
</dialog>
</dialog-info> |
| translate state => offhook - quick dial not allowed
- pick-up not allowed
Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title | XML definition |
---|
linenumbers | true |
---|
collapse | true |
---|
| ...
<NotifyParsingRules type="state">
...
<level3
translates_to="offhook">/dialog-info/dialog/state[.="trying"]
</level3>
...
</NotifyParsingRules>
...
<action>
<invite target="$(subscr_uri)"
when="on press"
states="idle"/>
<invite target="$(remote_uri)"
when="on press"
state="ringing"
request_uri="$(remote_uri)"
replaces="$(call_id);to-tag=$(remote_tag);from-tag=$(local_tag)"/>
</action> |
|
---|
🔴 | Image Removed | 101 > |
offhook |
goes onhook | | dialog state => terminated
| Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title |
---|
|
| NOTIFYXML definition | linenumbers | true |
---|
collapse | true |
---|
|
| NOTIFY
...
<?xml version="1.0"?>
<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info"
version="..."
state="full"
entity="sip:101@...">
<dialog id="..."
direction='initiator'
call-id='...'
local-tag=""
remote-tag="">
<state>terminated</state>
<local>
<identity display="B">sip:101@...</identity>
<target uri="sip:101@...;line=...">
<param pname="x-line-id" pval="0" />
</target>
</local>
</dialog>
</dialog-info> |
translate state => idle
- quick dial allowed
- pick-up not allowed
Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title | XML definition |
---|
linenumbers | true |
---|
collapse | true |
---|
|
...
<NotifyParsingRules type="state">
...
<level5 translates_to="idle"/>
</NotifyParsingRules>
...
<action>
<invite target="$(subscr_uri)"
when="on press"
states="idle"/>
<invite target="$(remote_uri)"
when="on press"
state="ringing"
request_uri="$(remote_uri)"
replaces="$(call_id);to-tag=$(remote_tag);from-tag=$(local_tag)"/>
</action> |
⚪️ | Image Removed | 101 |
idle |
incoming call ringing | dialog state => early/proceeding
Code Block |
---|
language | xml |
---|
title | NOTIFY |
---|
linenumbers | true |
---|
collapse | true |
---|
|
NOTIFY
...
<?xml version="1.0"?>
<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info"
version="..."
state="full" entity="...">
<dialog
id="..."
direction='recipient'
call-id='...'
local-tag="..."
remote-tag="...">
<state>early</state>
<local>
<identity display="B">
sip:101@...
</identity>
<target uri="sip:101@...;line=...">
<param pname="x-line-id" pval="0" />
</target>
</local>
<remote>
<identity display="C">
sip:102@...
</identity>
<target uri="sip:102@..."/>
</remote>
</dialog>
</dialog-info> |
translate state => ringing
- quick dial not allowed
- pick-up allowed
Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title | XML definition |
---|
linenumbers | true |
---|
collapse | true |
---|
|
...
<NotifyParsingRules type="state">
<level1
translates_to="ringing">/dialog-info/dialog/state[.="early"]
</level1>
...
<level2
translates_to="ringing">/dialog-info/dialog/state[.="proceeding"]
</level2>
...
</NotifyParsingRules>
<NotifyParsingRules
type="variable"
id="call_id"
state="ringing">
<level1 fetch_attribute="call-id<ReplacementPlan>
<!-- This defines the name of the entry in the Function Keys page under Type -->
<key id="BLF-new">
<general type="BLFSampleDefinition" />
<initialization>
<!-- only add the UAS IP here, extension number is replaced from WUI as variable $(ui_argument) -->
<variable name="subscr_proxy" value="10.110.22.35"/>
<!-- initial value for the state variable: off means, that after bootup this button has state off -->
<state value="off"/>
</initialization>
<!-- a subscription of event-type dialog will be initiated to the URI defined -->
<subscription type="dialog" to="<sip:$(ui_argument)@$(subscr_proxy)>" for="$(ui_argument)@$(subscr_proxy)"/>
<!-- checks if a SIP NOTIFY message belongs to this particular button
level is ok, if the condition inside the tags is matched -->
<NotifyParsingRules type="applies">
<level1 translates_to='OK'>/dialog-info[@entity="sip:$(ui_argument)@$(subscr_proxy)"]</level1>
</NotifyParsingRules>
<!-- translates the button state based on the body of the SIP NOTIFY -->
<NotifyParsingRules type="state">
<level1 translates_to="ringing">/dialog-info/dialog/state[.="early"]</level1>
<level1-1 translates_to="calling">/dialog-info/dialog[@direction="initiator"]</level1-1>
<level2 translates_to="ringing">/dialog-info/dialog/state[.="proceeding"]</level2>
<level2-1 translates_to="calling">/dialog-info/dialog[@direction="initiator"]</level2-1>
<level3 translates_to="offhook">/dialog-info/dialog/state[.="trying"]</level3>
<level4 translates_to="talking">/dialog-info/dialog/state[.="confirmed"]</level4>
<level5 translates_to="idle"/>
</NotifyParsingRules>
<!-- Call pickup: fetch variable call_id from call-id of NOTIFY body -->
<NotifyParsingRules type="variable" id="call_id" state="ringing">
<level1 fetch_attribute="call-id">/dialog-info/dialog[@call-id]</level1>
</NotifyParsingRules>
<!-- Call pickup: fetch variable remote_tag from remote-tag of NOTIFY body -->
<NotifyParsingRules type="variable" id="remote_tag" state="ringing">
<level1 fetch_attribute="remote-tag">/dialog-info/dialog[@remote-tag]</level1>
</NotifyParsingRules>
<!-- Call pickup: fetch variable local_tag from local-tag of NOTIFY body -->
<NotifyParsingRules type="variable" id="local_tag" state="ringing">
<level1 fetch_attribute="local-tag">/dialog-info/dialog[ |
| @call | idtag]</level1>
</NotifyParsingRules>
|
| <NotifyParsingRules
type="variable"
<!-- Call pickup: fetch variable remote_uri from uri of NOTIFY body -->
<NotifyParsingRules type="variable" id="remote_ |
| tag |
state="ringing">
<level1 fetch_attribute=" |
| remote-tag | [@remote-tag/remote/target[@uri]</level1>
</NotifyParsingRules>
|
| <NotifyParsingRules
| type="variable"
id="local_tag"
state="ringing">
<level1 fetch_attribute="local-tag">/dialog-info/dialog[@local-tag]</level1>
</NotifyParsingRules>
<NotifyParsingRules
type="variable"
id="remote_uri"
state="ringing">
<level1 fetch_attribute="uri">/dialog-info/dialog/remote/target[@uri]</level1>
</NotifyParsingRules>
<action>
<action>
<!-- Quick dial: Szolt decided to allow it only in idle state -->
<invite target="$(ui_argument)" when="on press" states="idle"/>
<!-- Pick up -->
<invite target="$( |
| subscrremote_name)<$(remote_uri)>" |
|
|
states | idle | />
<invite | target="$(remote_uri)"
when="on press"
state="ringing"
request_uri="$(remote_uri)" |
|
replaces="$(call_id);to-tag=$(remote_tag);from-tag=$(local_tag)"/>
|
| </action>🟠 | Image Removed | 102 > 101 |
ringing |
incoming call accepted | dialog state => confirmed
Code Block |
---|
language | xml |
---|
title | NOTIFY |
---|
linenumbers | true |
---|
collapse | true |
---|
|
NOTIFY
...
<?xml version="1.0"?>
<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info"
version="..."
state="full"
entity="sip:101@...">
<dialog
id="..."
direction='recipient'
call-id='...'
local-tag="..."
remote-tag="...">
<state>confirmed</state>
<local>
<identity display="B">sip:101@...</identity>
<target uri="sip:101@...;line=...">
<param pname="x-line-id" pval="0" />
<param pname="+sip.rendering" pval='yes' <!-- change icon on NOTIFY and translated state idle -->
<assign when="on notify" state="idle">
<source value="kIconTypeFkeyBlfIdle"/>
<destination id="icon"/>
</assign>
<!-- change icon on NOTIFY and translated state offhook -->
<assign when="on notify" state="offhook">
<source value="kIconTypeFkeyBlfOffhook"/>
<destination id="icon"/>
</assign>
<!-- change icon on NOTIFY and translated state ringing -->
<assign when="on notify" state="ringing">
<source value="kIconTypeFkeyBlfRinging"/>
<destination id="icon"/>
</ |
| target> | </local>
<remote>
<!-- change icon on NOTIFY and translated state calling -->
<assign when="on notify" state="calling">
|
| <identity | display | C">sip:102@...</identity>
kIconTypeFkeyBlfCalling"/>
|
| <target | uri | sip:102@... | remote> | </dialog>
</dialog-info> <!-- change icon on NOTIFY and translated state talking -->
<assign when="on notify" state="talking">
<source value="kIconTypeFkeyBlfTalking"/>
<destination id="icon"/>
</assign>
</action>
</key>
</ReplacementPlan> |
|
🔴 | Image Added | 101 > | offhook |
|
🔴 | Image Added | Alex > | offhook |
| goes onhook | translate state => talking
- quick dial not allowed
- pick-up not allowed
Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title | XML definition |
---|
linenumbers | true |
---|
collapse | true |
---|
|
...
<NotifyParsingRules type="state">
...
<level4
translates_to="talking">/dialog-info/dialog/state[.="confirmed"]
</level4>
</NotifyParsingRules>
...
<action>
<invite target="$(subscr_uri)"
when="on press"
states="idle"/>
<invite target="$(remote_uri)"
when="on press"
state="ringing"
request_uri="$(remote_uri)"
replaces="$(call_id);to-tag=$(remote_tag);from-tag=$(local_tag)"/>
</action> |
---|
🔴 | Image Removed | 102 <> 101 |
talking |
Incoming call terminated | dialog state => terminated Code Block |
---|
language | xml |
---|
title | NOTIFY |
---|
linenumbers | true |
---|
collapse | true |
---|
| NOTIFY
...
<?xml version="1.0"?>
<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info"
version="8..."
state="full"
entity="sip:101@...">
<dialog id="..."
direction='recipientinitiator'
call-id='...'
local-tag="..."
remote-tag="...">
<state>terminated</state>
<local>
<identity display="B">sip:101@...</identity>
<target uri="sip:101@...;line=...">
<param pname="x-line-id" pval="0" />
</target>
</local>
<remote>
<identity display="C">sip:102@...</identity>
<target uri="sip:102@..."/>
</remote>
</dialog>
</dialog-info> |
| translate state => idle - quick dial allowed
- pick-up not allowed
Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title | XML definition |
---|
linenumbers | true |
---|
collapse | true |
---|
| ...
<NotifyParsingRules type="state">
...
<level5 translates_to="idle"/>
</NotifyParsingRules>
...
<action>
<invite target="$(subscr_uri)"
when="on press"
states="idle"/>
<invite target="$(remote_uri)"
when="on press"
state="ringing"
request_uri="$(remote_uri)"
replaces="$(call_id);to-tag=$(remote_tag);from-tag=$(local_tag)"/>
</action> |
|
⚪️ | Image Removed Image Added | 101 | idle |
|
⚪️ | Image Added | Alex | idle |
| incoming call ringing | | Outgoing call ringing | dialog state => early/proceeding Code Block |
---|
language | xml |
---|
title | NOTIFY |
---|
linenumbers | true |
---|
collapse | true |
---|
| NOTIFY
...
<?xml version="1.0"?>
<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info"
version="13..."
state="full"
entity="sip:101@...">
<dialog
id="..."
direction='initiatorrecipient'
call-id='...'
local-tag="..."
remote-tag="...">
<state>early</state>
<local>
<identity display="B">sip>
sip:101@...
</identity>
<target uri="sip:101@...;line=...">
<param pname="x-line-id" pval="0" />
</target>
</local>
<remote>
<identity display="D">sip:103@C">
sip:102@...;user=phone<
</identity>
<target uri="sip:103@102@...;user=phone"/>
</remote>
</dialog>
</dialog-info> |
| translate state => callingringing - quick dial not allowed
- pick-up not allowed
Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title | XML definition |
---|
linenumbers | true |
---|
collapse | true |
---|
| ...
<NotifyParsingRules type="state">
<level1
translates_to="ringing">/dialog-info/dialog/state[.="early"]
</level1>
...
<level1-1<level2
translates_to="callingringing">/dialog-info/dialog/state[@direction.="initiatorproceeding"]
</level1-1>
<level2
translates_to="ringing">/dialog-info/dialog/state[.="proceeding"]
</level2>
<level2-1
translates_to="callinglevel2>
...
</NotifyParsingRules>
<NotifyParsingRules
type="variable"
id="call_id"
state="ringing">
<level1 fetch_attribute="call-id">/dialog-info/dialog[@direction="initiator"]
</level2-1>@call-id]</level1>
</NotifyParsingRules>
...<NotifyParsingRules
<action>
<invite targettype="$(subscr_uri)variable"
whenid="on pressremote_tag"
statesstate="idleringing"/>
<invite<level1 targetfetch_attribute="$(remote_uri)"
when="on press"
remote-tag">/dialog-info/dialog[@remote-tag]</level1>
</NotifyParsingRules>
<NotifyParsingRules
type="variable"
id="local_tag"
state="ringing">
request_uri="$(remote_uri)"
replaces="$(call_id);to-tag=$(remote_tag);from-tag=$(local_tag)"/>
</action> |
|
---|
🔴 | Image Removed | 101 > 103 |
calling |
<level1 fetch_attribute="local-tag">/dialog-info/dialog[@local-tag]</level1>
</NotifyParsingRules>
<NotifyParsingRules
type="variable"
id="remote_uri"
state="ringing">
<level1 fetch_attribute="uri">/dialog-info/dialog/remote/target[@uri]</level1>
</NotifyParsingRules>
<action>
<invite target="$(subscr_uri)"
when="on press"
states="idle"/>
<invite target="$(remote_uri)"
when="on press"
state="ringing"
request_uri="$(remote_uri)"
replaces="$(call_id);to-tag=$(remote_tag);from-tag=$(local_tag)"/>
</action> |
🟠 | Image Added | 102 > 101 | ringing |
|
🟠 | Image Added | Alice > Alex | ringing |
| incoming call accepted | dialog state => confirmed Code Block |
---|
language | xml |
---|
title | NOTIFY |
---|
linenumbers | true |
---|
collapse | true |
---|
| NOTIFY
...
<?xml version="1.0"?>
<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info"
version="..."
state="full"
entity |
| Outgoing call accepted | dialog state => confirmed Code Block |
---|
language | xml |
---|
title | NOTIFY |
---|
linenumbers | true |
---|
collapse | true |
---|
| NOTIFY
...
<?xml version="1.0"?>
<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info"
version="..."
state="full"
entity="sip:101@...">
<dialog
id="..."
direction='initiator'
call-id='...'
local-tag="..."
remote-tag="...">
<state>confirmed</state>
<local>
<identity display="B">sip:101@...</identity>
<target uri="sip:101@...;line=">
<dialog
id="...">
direction='recipient'
<param pname="x-line-id" pval="0" />
<param pname="+sip.rendering" pval='yes' />
</target>
</local>
<remote>
call-id='...'
local-tag="..."
remote-tag="...">
<state>confirmed</state>
<local>
<identity display="DB">sip:103@101@...</identity>
<target uri="sip:103@101@...;line=..."/>
</remote>
</dialog>
</dialog-info> <param pname="x-line-id" pval="0" />
<param pname="+sip.rendering" pval='yes' />
</target>
</local>
<remote>
<identity display="C">sip:102@...</identity>
<target uri="sip:102@..."/>
</remote>
</dialog>
</dialog-info> |
| translate state => talking - quick dial not allowed
- pick-up not allowed
Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title | XML definition |
---|
linenumbers | true |
---|
collapse | true |
---|
| ...
<NotifyParsingRules type="state">
...
<level4
translates_to="talking">/dialog-info/dialog/state[.="confirmed"]
</level4>
</NotifyParsingRules>
...
<action>
<invite target="$(subscr_uri)"
when="on press"
states="idle"/>
<invite target="$(remote_uri)"
when="on press"
state="ringing"
request_uri="$(remote_uri)"
replaces="$(call_id);to-tag=$(remote_tag);from-tag= |
translate state => talking - quick dial not allowed
- pick-up not allowed
Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title | XML definition |
---|
linenumbers | true |
---|
collapse | true |
---|
| ...
<NotifyParsingRules type="state">
...
<level4
translates_to="talking">/dialog-info/dialog/state[.="confirmed"]
</level4>
</NotifyParsingRules>
...
<action>
<invite target="$(subscr_uri)"
when="on press"
states="idle"/>
<invite target="$(remote_uri)"
when="on press"
state="ringing"
request_uri="$(remote_uri)"
replaces="$(call_id);to-tag=$(remote_tag);from-tag=$(local_tag)"/>
</action> |
|
🔴 | Image Removed Image Added | 102 <> 101 <> 103 | talking |
|
🔴 | Image Added | Alice <> Alex | talking |
|
---|
Outgoing Incoming call terminated | dialog state => terminated Code Block |
---|
language | xml |
---|
title | NOTIFY |
---|
linenumbers | true |
---|
collapse | true |
---|
| NOTIFY
...
<?xml version="1.0"?>
<dialog-info
xmlns="urn:ietf:params:xml:ns:dialog-info"
version="...8"
state="full"
entity="sip:101@...">
<dialog
id="..."
direction='initiatorrecipient'
call-id='...'
local-tag="..."
remote-tag="...">
<state>terminated</state>
<local>
<identity display="B">sip:101@...</identity>
<target uri="sip:101@...;line=...">
<param pname="x-line-id" pval="0" />
</target>
</local>
<remote>
<identity display="DC">sip:103@102@...</identity>
<target uri="sip:103@102@..."/>
</remote>
</dialog>
</dialog-info> |
| translate state => idle - quick dial allowed
- pick-up not allowed
Code Block |
---|
language | xml |
---|
theme | Confluence |
---|
title | XML definition |
---|
linenumbers | true |
---|
collapse | true |
---|
| ...
<NotifyParsingRules type="state">
...
<level5 translates_to="idle"/>
</NotifyParsingRules>
...
<action>
<invite target="$(subscr_uri)"
when="on press"
states="idle"/>
<invite target="$(remote_uri)"
when="on press"
state="ringing"
request_uri="$(remote_uri)"
replaces="$(call_id);to-tag=$(remote_tag);from-tag=$(local_tag)"/>
</action> |
|
⚪️ | Image Removed Image Added | 101 | idle |
|
⚪️ | Image Added | Alex | idle |
|
---|