1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
|
Internet Engineering Task Force (IETF) D. Worley
Request for Comments: 6910 Ariadne Internet Services, Inc.
Category: Standards Track M. Huelsemann
ISSN: 2070-1721 R. Jesske
Deutsche Telekom
D. Alexeitsev
TeleFLASH
April 2013
Completion of Calls for the Session Initiation Protocol (SIP)
Abstract
The "completion of calls" feature defined in this specification
allows the caller of a failed call to be notified when the callee
becomes available to receive a call.
For the realization of a basic solution without queuing, this
document references the usage of the dialog event package (RFC 4235)
that is described as 'Automatic Redial' in "Session Initiation
Protocol Service Examples" (RFC 5359).
For the realization of a more comprehensive solution with queuing,
this document introduces an architecture for implementing these
features in the Session Initiation Protocol where "completion of
calls" implementations associated with the caller's and callee's
endpoints cooperate to place the caller's request for completion of
calls into a queue at the callee's endpoint; when a caller's request
is ready to be serviced, re-attempt of the original, failed call is
then made.
The architecture is designed to interoperate well with existing
completion of calls solutions in other networks.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 5741.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc6910.
Worley, et al. Standards Track [Page 1]
^L
RFC 6910 Completion of Calls April 2013
Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction ....................................................3
2. Requirements Terminology ........................................4
3. Terminology .....................................................4
4. Solution ........................................................6
4.1. CC Architecture ............................................6
4.2. CC Procedures ..............................................8
4.3. Automatic Redial as a Fallback ............................11
4.4. Differences from SS7 ......................................11
5. CC Queue Model .................................................12
6. Caller's Agent Behavior ........................................13
6.1. Receiving the CC Possible Indication ......................13
6.2. Subscribing to CC .........................................13
6.3. Receiving a CC Recall Notification ........................14
6.4. Initiating a CC Call ......................................15
6.5. Suspending CC .............................................15
6.6. Resuming CC ...............................................15
7. Callee's Monitor Behavior ......................................16
7.1. Sending the CC Possible Indication ........................16
7.2. Receiving a CC Subscription ...............................17
7.3. Sending a CC Notification .................................18
7.4. Receiving a CC Call .......................................19
7.5. Receiving a CC Suspension .................................19
7.6. Receiving a CC Resumption .................................20
8. Examples .......................................................20
9. 'call-completion' Event Package ................................24
9.1. Event Package Name ........................................24
9.2. Event Package Parameters ..................................24
9.3. SUBSCRIBE Bodies ..........................................25
9.4. Subscribe Duration ........................................25
9.5. NOTIFY Bodies .............................................26
9.6. Subscriber Generation of SUBSCRIBE Requests ...............26
Worley, et al. Standards Track [Page 2]
^L
RFC 6910 Completion of Calls April 2013
9.7. Notifier Processing of SUBSCRIBE Requests .................26
9.8. Notifier Generation of NOTIFY Requests ....................27
9.9. Subscriber Processing of NOTIFY Requests ..................27
9.10. Handling of Forked Requests ..............................28
9.11. Rate of Notifications ....................................28
9.12. State Agents .............................................28
10. CC Information Format .........................................28
10.1. CC Status ................................................29
10.2. CC Service-Retention Indication ..........................29
10.3. CC URI ...................................................29
11. Security Considerations .......................................29
12. IANA Considerations ...........................................31
12.1. SIP Event Package Registration for CC ....................31
12.2. MIME Registration for application/call-completion ........31
12.3. SIP/SIPS URI Parameter 'm' ...............................32
12.4. The 'purpose' Parameter Value 'call-completion' ..........33
12.5. 'm' Header Parameter for Call-Info .......................33
13. Acknowledgements ..............................................33
14. References ....................................................34
14.1. Normative References .....................................34
14.2. Informative References ...................................35
Appendix A. Example Caller's Agent ................................36
Appendix B. Example Callee's Monitor ..............................36
1. Introduction
The Completion of Calls (CC) feature allows the caller of a failed
call to have the call completed without having to make a new call
attempt while guessing when the callee becomes available. When the
caller requests the use of the CC feature, the callee will be
monitored for its availability. When the callee becomes available,
the callee will be given a certain time frame for initiating a call.
If the callee does not initiate a new call within this time frame,
then the caller will be recalled. When the caller accepts the CC
recall, then a CC call to the callee will automatically start. If
several callers have requested the CC feature on the same callee,
they will be recalled in a predefined order, which is usually the
order in which they have requested the CC feature.
This document defines the following CC features:
Completion of Calls to Busy Subscriber (CCBS): The callee is busy.
The caller is recalled after the callee is no longer busy.
Completion of Calls on No Reply (CCNR): The callee does not answer
the call. The caller is recalled after the callee has completed a
new call.
Worley, et al. Standards Track [Page 3]
^L
RFC 6910 Completion of Calls April 2013
Completion of Calls on Not Logged-in (CCNL): The callee is not
registered. The caller is recalled after the callee has
registered again.
2. Requirements Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
This document uses terms from [RFC3261].
3. Terminology
For the purpose of this service, we provide the following
terminology:
Callee: a destination of the original call, and a target of the CC
call.
Caller: the initiator of the original call and the CC request. The
user on whose behalf the CC call is made.
Callee's monitor: a logical component that implements the CC queue
for destination user(s)/UA(s) (User Agent(s)) and performs the
associated tasks, including sending CC recall events, analogous to
the destination local exchange's role in Signaling System 7
(SS7) CC.
Caller's agent: a logical component that makes CC requests and
responds to CC recall events on behalf of originating
user(s)/UA(s), analogous to the originating local exchange's role
in SS7 CC.
CC, or Completion of Calls: a service that allows a caller who
failed to reach a desired callee to be notified when the callee
becomes available to receive a call.
CC activation: the indication by the caller to the caller's agent
that the caller desires CC for a failed original call; this
implies an indication transmitted from the caller's agent to the
callee's monitor of the desire for CC processing.
CCBS, or Completion of Calls to Busy Subscriber: a CC service
provided when the initial failure was that the destination UA was
busy.
Worley, et al. Standards Track [Page 4]
^L
RFC 6910 Completion of Calls April 2013
CCNR, or Completion of Calls on No Reply: a CC service provided when
the initial failure was that the destination UA did not answer.
CCNL, or Completion of Calls on Not Logged-in: a CC service provided
when the initial failure was that the destination UA was not
registered.
CC call: a call from the caller to the callee, triggered by the CC
service when it has determined that the callee is available.
CC indicator: an indication in the CC call INVITE used to prioritize
the call at the destination.
CC possible indication: the data in responses to the INVITE of the
original call that indicate that CC is available for the call.
CC recall: the action of the callee's monitor selecting a particular
CC request for initiation of a CC call, resulting in an indication
from the caller's agent to the caller that it is now possible to
initiate a CC call.
CC recall events: event notifications of event package
"call-completion", sent by the callee's monitor to the caller's
agent to inform it of the status of its CC request.
CC recall timer: maximum time the callee's monitor will wait for the
caller's response to a CC recall.
CC request: the entry in the callee's monitor queue representing the
caller's request for CC processing, that is, the caller's CC
subscription.
CC service duration timer: maximum time a CC request may remain
active within the network.
CC queue: a buffer at the callee's monitor that stores incoming
calls that are targets for CC. Note: This buffer may or may not
be organized as a queue. The use of the term "queue" is analogous
to SS7 usage.
CCE, or CC Entity: the representation of a CC request, or,
equivalently, an existing CC subscription within the queue of a
callee's monitor.
Worley, et al. Standards Track [Page 5]
^L
RFC 6910 Completion of Calls April 2013
Failed call: a call that does not reach a desired callee, from the
caller's point of view. Note that a failed call may be successful
from the SIP point of view; e.g., if the call reached the callee's
voicemail but the caller desired to speak to the callee in real
time, the INVITE receives a 200 response, but the caller considers
the call to have failed.
Notifier: the UA that generates NOTIFY requests for the purpose of
notifying subscribers of the callee's availability; for the CC
service, this is the task of the callee's monitor.
Original call: the initial call that failed to reach a desired
destination.
Retain option: a characteristic of the CC service; if supported, CC
calls that again encounter a busy callee will not be queued again,
but the position of the caller's entry in the queue is retained.
Note that SIP CC always operates with the retain option active; a
failed CC call does not cause the CC request to lose its position
in the queue.
Signaling System 7, or SS7: the signaling protocol of the public
switched telephone network, defined by ITU-T Recommendations Q.700
through Q.849.
Subscriber: the UA that receives NOTIFY requests with information of
the callee's availability; for the CC service, this is the task of
the caller's agent.
Suspended CC request: a CC request that is temporarily not to be
selected for CC recall.
4. Solution
4.1. CC Architecture
The CC architecture augments each caller's UA (or User Agent Client
(UAC)) wishing to use the CC features with a "CC agent" (also written
as "caller's agent").
It augments each callee's UA (or User Agent Server (UAS)) wishing to
be the target of the CC features with a "CC monitor" (also written as
"callee's monitor").
The caller's agent and callee's monitor functions can be integrated
into the respective UAs, be independent end-systems, or be provided
by centralized application servers. The two functions, though
associated with the two UAs (caller and callee), also may be provided
Worley, et al. Standards Track [Page 6]
^L
RFC 6910 Completion of Calls April 2013
as services by the endpoints' home proxies or by other network
elements. Though it is expected that a UA that implements CC will
have both functions so that it can participate in CC as both caller
and callee, the two functions are independent of each other.
A caller's agent may service more than one UA as a collective group
if a caller or population of users will be shared between the UAs,
and especially if the UAs share an address of record (AOR).
The caller's agent monitors calls made from the caller's UA(s) in
order to determine their destinations and (potentially) their final
response statuses, and the Call-Info header fields of provisional and
final responses to invoke the CC feature.
A callee's monitor may service more than one UA as a collective group
if a callee or population of users will be shared between the UAs,
and especially if the UAs share an AOR. The callee's monitor may
supply the callee's UAS(s) with Call-Info header field values for
provisional and final responses.
The callee's monitor also instantiates a presence server used to
monitor the caller's availability for CC recall.
The callees using the UA(s) may be able to indicate to the callee's
monitor when they wish to receive CC calls.
In order to allow flexibility and innovation, most of the interaction
between the caller's agent, the caller(s) (user(s)), and the caller's
UA(s) is out of the scope of this document. Similarly, most of the
interaction between the callee's monitor, the callee(s), and the
callee's UA(s) is out of the scope of this document, as is the policy
by which the callee's monitor arbitrates between multiple CC
requests.
The caller's agent must be capable of performing a number of
functions relative to the UA(s). The method by which it does so is
outside the scope of this document, but an example method is
described in Appendix A. The callee's monitor must be capable of
performing a number of functions relative to the UA(s). The method
by which it does so is outside the scope of this document, but an
example method is described in Appendix B.
As a proof of concept, simple caller's agents and callee's monitors
can be devised that interact with users and UAs entirely through
standard SIP mechanisms [RFC6665] [RFC4235] [RFC3515], as described
in the Appendices.
Worley, et al. Standards Track [Page 7]
^L
RFC 6910 Completion of Calls April 2013
The callers using the UA(s) can indicate to the caller's agent when
they wish to avail themselves of CC for a recently made call that the
callers determined to be unsuccessful. The caller's agent monitors
the status of the caller's UA(s) to determine when they are available
to be used for a CC recall. The caller's agent can communicate to
the caller's UA(s) that a CC recall is in progress and inquire if the
relevant caller is available for the CC recall.
The callee's monitor may utilize several methods to monitor the
status of the callee's UA(s) and/or their users for availability to
receive a CC call. This can be achieved through monitoring calls
made to the callee's UA(s) to determine the callee's status, the
identity of callers, and the final responses for incoming calls. And
in a system with rich presence information, the presence information
may directly provide this status. In a more restricted system, this
determination can depend on the mode of the CC call in question,
which is provided by the URI 'm' parameter. For example, a UA is
considered available for CCBS ("m=BS") when it is not busy, but a UA
is considered available for CCNR ("m=NR") when it becomes not busy
after being busy with an established call.
The callee's monitor maintains information about the set of INVITEs
received by the callee's UA(s) considered unsuccessful by the caller.
In practice, the callee's monitor may remove knowledge about an
incoming dialog from its set if local policy at the callee's monitor
establishes that the dialog is no longer eligible for CC activations.
4.2. CC Procedures
The caller's UA sends an INVITE to a request-URI. One or more forks
of this request reach one or more of the callee's UAs. If the CC
feature is available, the callee's monitor (note there can be a
monitor for each of the callee's UAs) inserts a Call-Info header
field with its URI and with "purpose=call-completion" in appropriate
non-100 provisional or final responses to the initial INVITE and
forwards them to the caller. The provisional response SHOULD be sent
reliably if the INVITE contained a Supported header field with the
option tag 100rel. On receipt of a non-100 provisional or a final
response with the indication that the CC feature is available, the
calling user can invoke the CC feature.
The caller indicates to the caller's agent that he wishes to invoke
CC services on the recent call. Note that from the SIP point of
view, the INVITE may have been successful, but from the user's point
of view, the call may have been unsuccessful. For example, the call
may have connected to the callee's voicemail, which would return a
200 status to the INVITE but from the caller's point of view is "no
reply".
Worley, et al. Standards Track [Page 8]
^L
RFC 6910 Completion of Calls April 2013
In order to receive information necessary for the caller to complete
the call at the callee, the caller's agent subscribes to the
call-completion event package at the callee's monitor.
The possibility of the caller completing the call at the callee is
also known as the CC state (cc-state) of the caller. The cc-states
comprehend the values "queued" and "ready" (for CC).
In order to receive information from all destinations where the
callee will be reachable, the caller's agent sends a SUBSCRIBE
request for the call-completion event package to the original
destination URI of the call and to all known URIs of the callees'
monitors (which are provided by Call-Info header fields in
provisional and final responses to the INVITE). Each callee's
monitor uses the subscription as an indication that the caller is
interested in using the CC feature with regard to the particular
callee.
Each callee's monitor keeps a list or queue of subscriptions from
callers' agents, representing the requests from the callers' agents
to the callee's monitor for CC services. These subscriptions are
created, refreshed, and terminated according to the procedures of
[RFC6665].
Upon receiving a SUBSCRIBE request from the caller's agent, the
callee's monitor instantiates a presence state for the caller's UA
that can be modified by the caller's UA to indicate its availability
for the CC call. Upon instantiation, the caller's presence status at
the callee's monitor is "open".
When the callee's monitor determines that the callee and/or callee's
UA is available for a CC call, it selects a caller to execute the CC
call and sends a CC event update ("cc-state: ready") via a NOTIFY
request to the selected subscription of the caller's agent, telling
it to begin the CC call to the callee's UA.
When the caller's agent receives this update, it initiates a CC
recall by calling the caller's UA and then starts the CC call to the
callee's UA, using third-party call control procedures in accordance
with [RFC3725]. The caller's agent can also check by other means
whether the caller is available to initiate the CC call to the
callee's UA. If the caller is available, the caller's agent directs
the caller's UA to initiate the CC call to the callee's UA.
The caller's agent marks the CC call as such by adding a specific SIP
URI parameter to the Request-URI, so it can be given precedence by
the callee's monitor in reaching the callee's UA.
Worley, et al. Standards Track [Page 9]
^L
RFC 6910 Completion of Calls April 2013
If the caller is not available on receipt of the "ready for recall"
notification, the caller's agent suspends the CC request at the
callee's monitor by sending a PUBLISH request containing presence
information to the presence server of the callee's monitor, informing
the server that the presence status is "closed". Once the caller
becomes available for a CC call again, the caller's agent resumes the
CC request by sending another PUBLISH request to the callee's
monitor, informing the monitor that the presence status is "open".
On receipt of the suspension request, the callee's monitor performs
the monitoring for the next non-suspended CC request in the queue.
On receipt of the resume from the previously suspended caller's agent
that was at the top of the queue, the callee's monitor performs the
callee monitoring for this caller's agent.
When the CC call fails, there are two possible options: the CC
feature has to be activated again by the caller's agent subscribing
to the callee's monitor, or CC remains activated and the original CC
request retains its position in the queue if the retain option is
supported.
The retain option (see Section 3) determines the behavior of the
callee's monitor when a CC call fails. If the retain option is
supported, CC remains activated, and the original CC request
retains its position in the queue. Otherwise, the CC feature is
deactivated, and the caller's agent would have to subscribe again to
reactivate it.
A monitor that supports the retain option provides the
cc-service-retention header in its CC events. A caller's agent that
also supports the retain option uses the presence of this header to
know not to generate a new CC request after a failed CC call.
Monitors not supporting the retain option do not provide the
cc-service-retention header. A failed CC call causes the CC request
to be deleted from the queue, and these monitors will terminate the
corresponding subscription of the caller's agent to inform that agent
that its CC request is no longer in the queue. A caller's agent that
does not support the retain option can also terminate its
subscription when a CC call fails, so it is possible that both the
caller's agent and the callee's monitor may be signaling the
termination of the subscription concurrently. This is a normal SIP
events [RFC6665] scenario. After the subscription is terminated, the
caller's agent may create a new subscription (as described in
Section 6.2) to reactivate the CC feature for the original call.
Worley, et al. Standards Track [Page 10]
^L
RFC 6910 Completion of Calls April 2013
4.3. Automatic Redial as a Fallback
Automatic Redial is a simple end-to-end design. An Automatic Redial
scenario is described in [RFC5359], Section 2.17. This solution is
based on the usage of the dialog event package. If the callee is
busy when the call arrives, then the caller subscribes to the
callee's call state. The callee's UA sends a notification when the
callee's call state changes. This means the caller is also notified
when the callee's call state changes to 'terminated'. The caller is
alerted, then the caller's UA starts a call establishment to the
callee again. If several callers have subscribed to a busy callee's
call state, they will be notified at the same time that the call
state has changed to 'terminated'. The problem with this solution is
that it might happen that several recalls are started at the same
time. This means it is a heuristic approach with no guarantee of
success.
There is no interaction between CC and Automatic Redial, as there is
a difference in the behavior of the callee's monitor and the caller
when using the dialog event package for receiving dialog information
or for aggregating a CC state.
4.4. Differences from SS7
SIP CC differs in some ways from the CCBS and CCNR features of SS7
(which is used in the Public Switched Telephone Network (PSTN)). For
ease of understanding, we enumerate some of the differences here.
As there is no equivalent to the forking mechanism in SS7, in the
PSTN, calls can be clearly differentiated as successful or
unsuccessful. Due to the complex forking situations that are
possible in SIP, a call may fail from the point of view of the user
and yet have a success response from SIP's point of view. (This can
happen even in simple situations: e.g., a call to a busy user that
fails over to his voicemail receives a SIP success response, even
though the caller may consider it "busy subscriber".) Thus, the
caller must be able to invoke CC even when the original call appeared
to succeed. To support this, the caller's agent must record
successful calls as well as unsuccessful calls.
In SIP, only the caller's UA or service system on the originating
side and the callee's UA or service system on the terminating side
need to support CC for CC to work successfully between the UAs.
Intermediate SIP systems (proxies or back-to-back user agents
(B2BUAs)) do not need to implement CC; they only need to be
transparent to the usual range of SIP messages. In the PSTN,
additionally, intermediate nodes like media gateway controllers have
to implement the CC service.
Worley, et al. Standards Track [Page 11]
^L
RFC 6910 Completion of Calls April 2013
5. CC Queue Model
The callee's monitor manages CC for a single URI. This URI is likely
to be a published AOR, or more likely "non-voicemail AOR", but it may
be as narrowly scoped as a single UA's contact URI. The callee's
monitor manages a dynamic set of CC entities (called "CCEs"), which
represent CC requests, or equivalently, the existing incoming CC
subscriptions. This set is also called a queue, because a queue data
structure often aids in implementing the policies of the callee's
monitor for selecting CCEs for CC recall.
Each CCE has an availability state, determined through the caller's
presence status at the callee's monitor. A presence status of "open"
represents a CCE's availability state of "available", and a presence
status of "closed" represents a CCE's availability state of
"unavailable".
Each CCE has a recall state that is visible via subscriptions. The
recall state is either "queued" or "ready".
Each CCE carries the From URI of the SUBSCRIBE request that caused
its creation.
CC subscriptions arrive at the callee's monitor by addressing the
URIs the callee's monitor returns in Call-Info header fields. The
request-URI of the SUBSCRIBE request determines the queue to which
the resulting CCE is added. The resulting subscription reports the
status of the queue. The base event data is the status of all the
CCEs in the queue, but the data returned by each subscription is
filtered to report only the status of that subscription's CCE.
(Further standardization may define means for obtaining more
comprehensive information about a queue.)
When a CCE is created, it is given the availability state "available"
and recall state "queued".
When the callee's monitor receives Presence Information Data Format
(PIDF) bodies [RFC3863] via PUBLISH requests [RFC3903], these PUBLISH
requests are expected to be sent by subscribers to indirectly suspend
and resume their CC requests by modifying its CCE availability state.
A CCE is identified by the request-URI (if it was taken from a CC
event notification that identifies the CCE) or the From URI of the
request (matching the From URI recorded in the CCE). Receipt of a
PUBLISH with status "open" sets the availability state of the CCE to
"available" (resume); status "closed" sets the availability state of
the CCE to "unavailable" (suspend).
Worley, et al. Standards Track [Page 12]
^L
RFC 6910 Completion of Calls April 2013
A CC request is eligible for recall only when its CCE's availability
state is "available" and the "m" value of the CCE also indicates an
available state. The callee's monitor MUST NOT select for recall any
CC requests that fail to meet those criteria. Within that
constraint, the selections made by the callee's monitor are
determined by its local policy. Often, a callee's monitor will
choose the acceptable CCE that has been in the queue the longest.
When the callee's monitor has selected a CCE for recall, it changes
the CCE's recall state from "queued" to "ready", which triggers a
notification on the CCE's subscription.
If a selected subscriber then suspends its request by sending a
PUBLISH with the presence status "closed", the CCE becomes
"unavailable", and the callee's monitor changes the CCE's recall
state to "queued". This may cause another CCE (e.g., a CCE that has
been in the queue for less time) to be selected for recall.
The caller's presence status at the callee's monitor is terminated
when the caller completes its CC call or when the subscription of the
caller's agent at the callee's monitor is terminated.
6. Caller's Agent Behavior
6.1. Receiving the CC Possible Indication
The caller's agent MUST record the From URI and SHOULD record the
final request status that the caller's UA received along with the
contents of Call-Info header fields of provisional and final
responses.
Note that receiving a CC possible indication also depends on the
aggregation of final responses by proxies; in the case of 4xx
responses, some 4xx responses are more likely to be sent to the
caller.
6.2. Subscribing to CC
For CC activation, the caller's agent MUST send a SUBSCRIBE to all
known callee's monitor URIs. A callee's monitor URI may be provided
in the Call-Info header field in provisional and final responses to
the INVITE sent back by the callee's monitor(s). Additionally, the
caller's agent SHOULD include the original request-URI that it sent
the original INVITE to, in its set of callee's monitor URIs, when it
is unclear if the call has forked to additional callees whose
responses the caller has not seen. A SUBSCRIBE to the original
request-URI alone is used in cases where the caller's agent has not
received or does not remember any callee's monitor URI. The caller's
agent SHOULD add an 'm' parameter to these URIs in order to indicate
Worley, et al. Standards Track [Page 13]
^L
RFC 6910 Completion of Calls April 2013
to the callee's monitor the desired CC mode. The 'm' parameter
SHOULD have the value of the 'm' parameter received in the Call-Info
header field of the responses to the original INVITE.
To minimize redundant subscriptions, these SUBSCRIBEs SHOULD be
presented as forks of the same transaction, as defined by
Section 8.2.2.2 of [RFC3261], if the caller's agent is capable of
doing so.
The agent MUST NOT maintain more than one CC request for a single
caller and directed to a single original destination URI. If a
caller requests CC a second time for the same destination URI, the
agent MUST consolidate the new request with the existing CC request
by either reusing the existing CC subscriptions or terminating and
then recreating them. For this purpose, equality of callers is
determined by comparing callers' AORs and equality of destination
URIs is determined by comparing them per [RFC3261] Section 19.1.4.
When generating these SUBSCRIBEs, the From URI MUST be the caller's
AOR. The To URI SHOULD be the destination URI of the original call
(if the agent knows that and can insert it into the To header) and
otherwise MUST be the request-URI of the SUBSCRIBE.
The SUBSCRIBE SHOULD have header fields to optimize its routing. In
particular, it SHOULD contain "Request-Disposition: parallel" and an
Accept-Contact header field to eliminate callee UAs that are not
acceptable to the caller.
The caller's agent MUST be prepared to receive multiple responses for
multiple forks of the SUBSCRIBE and to have multiple subscriptions
established. The caller's agent must also be prepared to have the
SUBSCRIBE fail; in which case, CC cannot be invoked for this original
call.
If the caller's agent no longer wants to initiate the CC call (e.g.,
because the caller has deactivated CC), the caller's agent terminates
the subscription in accordance with [RFC6665] or suspends the
subscription(s) as specified in Section 6.5.
6.3. Receiving a CC Recall Notification
When receiving a NOTIFY with the cc-state set to "ready", the
caller's agent SHOULD suspend all other subscriptions to CC, by
following the step in Section 6.5, in order to prevent any other CC
requests from this caller from receiving CC recalls. The caller's
agent starts the CC recall to the caller by confirming that the
caller would be able to initiate a CC call, e.g., by calling the
caller's UA(s).
Worley, et al. Standards Track [Page 14]
^L
RFC 6910 Completion of Calls April 2013
6.4. Initiating a CC Call
If the caller is available for the CC call and willing to initiate
the CC call, the caller's agent causes the caller's UA to generate a
new INVITE towards the callee. The caller's UA MAY add an 'm' URI
parameter with the value of the 'm' parameter received in the
Call-Info header in the response to the original INVITE, in order to
specify his preferences in CC processing and to prioritize the CC
call. The INVITE SHOULD be addressed to the URI specified in the
cc-URI of the NOTIFY, or, if that's not available, it SHOULD use the
URI in the Call-Info header field of the response to the original
INVITE; if that's not available, it MAY use the request-URI of the
original INVITE, if this URI was recorded. Note that the latter
choice may not provide ideal routing, but, in simple cases, it is
likely to reach the desired callee or callee's monitor.
6.5. Suspending CC
If the caller is not available for the CC recall, the CC request
SHALL be suspended by the caller's agent until the caller becomes
available again or if the conditions relevant to the local suspension
policy of the caller's agent have changed. To suspend the CC
request, the caller's agent SHALL publish the caller's presence state
by sending a PUBLISH request to each callee's monitor where the
presence server for CC resides in accordance with the procedures
described in [RFC3903], giving the PIDF state "closed" for the
caller's identity as presentity. The PUBLISH request SHOULD contain
an Expires header field with a value that corresponds to the current
value of the remaining CC subscription duration.
Each PUBLISH SHOULD be sent to the CC URI as received in the NOTIFY,
or within the corresponding SUBSCRIBE dialog, or if that is not
possible, to the corresponding callee's monitor URI received in the
Call-Info header field of the NOTIFY, or if one is not available, the
Contact address of the subscription.
6.6. Resuming CC
When the caller is no longer busy, or if the conditions relevant to
the suspension policy of the caller's agent have changed, then the CC
request SHALL be resumed by the caller's agent. To resume a CC
request, the caller's agent SHALL publish the caller's presence state
by sending a PUBLISH request to each callee's monitor in accordance
with the procedures described in [RFC3903], informing each monitor
that the PIDF state is "open"; this request will otherwise be
constructed in the same way as the suspend PUBLISH request.
Worley, et al. Standards Track [Page 15]
^L
RFC 6910 Completion of Calls April 2013
In the case where the caller's agent has sent several CC suspension
requests to different callee's monitors and the caller becomes
available again, as determined by the local resumption policy of the
caller's agent, the caller's agent MAY send a PUBLISH to resume a CC
request to each callee's monitor for which there is a suspended CC
request. Note that the resumption policy of the caller's agent may
prescribe a manual resumption; thus, a suspended CC request should
not be automatically resumed.
7. Callee's Monitor Behavior
7.1. Sending the CC Possible Indication
The callee's monitor MUST record the From URI and MAY record the
final request status(es) returned by the callee's UA(s).
If the callee's monitor wants to enable the caller to make use of the
CC service, it MUST insert a Call-Info header field with
"purpose=call-completion" in the final response message (e.g., in a
486 to enable CC due to busy subscriber) and at least one non-100
provisional response message (e.g., in a 180 due to no response) to
the initial INVITE when forwarding it to the caller. The non-100
provisional response message SHOULD be sent reliably if the INVITE
contained a Supported header field with the option tag 100rel. The
Call-Info header field values defined in this specification
positively indicate that CC is available for the failed fork of the
call.
The callee's monitor SHOULD insert a URI in the Call-Info header
field where the caller's agent should subscribe for CC. Ideally, it
is a globally routable URI [RFC5627] for the callee's monitor. In
practice, it may be the callee's AOR, and the SUBSCRIBE will be
routed to the callee's monitor only because it specifies "Event:
call-completion".
In order to enable CC, the Call-Info header field MUST be set up
according to the following scheme:
Call-Info: monitor-URI;purpose=call-completion;m=XX
The 'm' parameter defines the "mode" of CC. The "m=NR" parameter
indicates that it failed due to lack of response, the "m=BS"
parameter indicates that it failed due to busy subscriber, and the
"m=NL" parameter indicates that it failed due to non-registered
subscriber (no devices are registered for the AOR contacted). The
'm' parameter is useful for PSTN interworking and assessing presence
information in the callee's monitor. It is possible that other
values will be defined in future. It is also permissible to omit the
Worley, et al. Standards Track [Page 16]
^L
RFC 6910 Completion of Calls April 2013
'm' parameter entirely. Implementations MUST accept CC operations in
which the 'm' parameter is missing or has an unknown value, and
execute them as best they can in their environment (which is likely
to be a degraded service, especially when interoperating with SS7).
7.2. Receiving a CC Subscription
The callee's monitor MUST be prepared to receive SUBSCRIBEs for the
call-completion event package directed to the URIs of UA(s) that it
is servicing and any URIs that the callee's monitor provides in
Call-Info header fields. The SUBSCRIBEs MUST be processed in
accordance with the procedures defined in [RFC6665], establishing
subscriptions. These subscriptions represent the request from the
caller's agent for CC services.
If the monitor receives two or more SUBSCRIBEs that have the same
Call-Id header field value and the monitor considers the request-URIs
of the received SUBSCRIBEs to request the status of the same set of
UAs, then they are redundant forks of one SUBSCRIBE request, and the
monitor SHOULD reject all but one of the requests with 482 (Merged
Request) responses.
The monitor MAY determine that an incoming CC SUBSCRIBE is a
duplicate of an existing CC subscription if (1) the Call-Id header
field values are different, (2) the From URIs (i.e., the caller's
AORs) are the same (per [RFC3261] Section 19.1.4), (3) the To URIs
(which should be the request-URI of the original call) have the same
user and hostport components, and (4) the monitor considers the
request-URIs of the received SUBSCRIBEs to request the status of the
same set of UAs.
If the monitor determines that a new subscription is a duplicate of
an existing subscription, it MAY terminate the existing subscription
in accordance with the procedures defined in [RFC6665]. In any case,
it MUST establish the new subscription.
The callee's monitor may apply restrictions as to which caller's
agents may subscribe.
The continuation of the subscription of the caller's agent indicates
to the callee's monitor that the caller's agent is prepared to
initiate the CC call if it is selected for the "ready" state. If the
callee's monitor becomes aware of a subscription that cannot be
selected for a CC recall, it SHOULD terminate the subscription in
accordance with [RFC6665].
Worley, et al. Standards Track [Page 17]
^L
RFC 6910 Completion of Calls April 2013
7.3. Sending a CC Notification
The call-completion event package returns various points of
information to the caller's agent, but the vital datum it contains is
the cc-state of the CC request of the caller's agent as stored in the
CC queue; in the beginning, this cc-state is "queued". When the
cc-state of the agent's request changes, the callee's monitor MUST
send a NOTIFY for a CC event to the caller's agent. The notification
SHOULD also contain a URI that can be used for suspension requests.
Ideally, it is a globally routable URI [RFC5627] for the callee's
monitor. In practice, it may be the callee's AOR, and the SUBSCRIBE
will be routed to the callee's monitor only because it specifies
"Event: call-completion".
The call-completion event package provides limited information about
the policy of the callee's monitor. In particular, as in the PSTN,
the "cc-service-retention" datum gives an indication of the "service
retention" attribute, which indicates whether the CC request can be
continued to a later time if the CC call fails due to the callee's
UA(s) being busy. If the callee's monitor supports the
service-retention option, the callee's monitor SHOULD include the
cc-service-retention parameter.
The callee's monitor has a policy regarding when and how it selects
CC requests for the recall. This policy may take into account the
type of the requests (e.g., CCNR vs. CCBS), the state of the callee's
UA(s), the order in which the CC requests arrived, the length of time
the CC requests have been active, and any previous attempts of CC
activations for the same original call. The callee's monitor will
usually choose only one CC request for the recall at a time, but if
the callee's UA(s) can support multiple calls, it may choose more
than one. The callee's monitor will usually choose the oldest active
request.
When the callee's monitor changes the state datum for the chosen
subscription from "queued" to "ready", the callee's monitor MUST send
a NOTIFY for the subscription of the caller's agent with the cc-state
set to "ready" (recall notification). The NOTIFY SHOULD also contain
in the cc-URI a URI to be used in the CC call. In practice, this may
be the AOR of the callee.
Upon sending the recall notification, the callee's monitor MUST start
a recall timer. It is RECOMMENDED to use a value between 10 and
20 seconds, which corresponds to the recommendation for the CC
services in the ETSI [ETS300.356-18] and ITU-T [ITU-T.Q.733]
documents.
Worley, et al. Standards Track [Page 18]
^L
RFC 6910 Completion of Calls April 2013
7.4. Receiving a CC Call
The callee's UA(s) and the callee's monitor may give the CC call
precedence over non-CC calls by evaluating the presence of the 'm'
URI parameter and the From header of the INVITE request. The
callee's monitor supervises the receiving of the CC call. Upon
arrival of the CC call, the recall timer MUST be stopped. If the CC
call does not arrive at the callee's UA(s) before the expiry of the
recall timer, the callee's monitor SHOULD stop processing the recall
and change the value of the cc-state datum to "queued" if it supports
the retain option, and terminate the subscription if it doesn't
support the retain option. Similarly, if the CC call is not
accepted, the callee's monitor will stop the CC recall processing.
Depending on its policy, the same original call may be selected again
for a CC recall at a later time. If the CC call succeeds, the
callee's monitor MUST terminate the relevant subscription in
accordance with [RFC6665] and MUST remove any associated presence
event state used for suspend and resume for the caller of the CC
call.
Once the CC call has been terminated, successfully or unsuccessfully,
the policy of the callee's monitor MAY specify that another CC
request for a recall be selected. Note also that according to the
policy of the callee's monitor several recalls may be processed at
the same time.
7.5. Receiving a CC Suspension
The monitor may receive PUBLISH requests to suspend CC requests from
the caller's agent as described in Section 6.5. The PUBLISH requests
may be received via the URI it manages, any URI that it inserts into
a Call-Info header, any contact URI it uses as a notifier for
"call-completion" events, or any URI it returns as the "URI" line of
the call-completion event packages.
The receipt of the PUBLISH request initiates a presence event state
for the caller's identity at the presence server of the callee's
monitor as specified in [RFC3903], together with a logical presence
server if this has not been done before for another call.
Note: The presence server may initiate a presence event state for the
caller's identity on receipt of a SUBSCRIBE request as well,
dependent on the implementation.
The monitor SHOULD identify the addressed CCE by the request-URI of
the PUBLISH request, or if that is not possible, by the From URI.
Worley, et al. Standards Track [Page 19]
^L
RFC 6910 Completion of Calls April 2013
If the processing of a CC request results in suspending that CC
request by receiving a PUBLISH request from the caller's agent as
described in Section 6.5, the callee's monitor MUST stop the recall
timer and MUST ensure that the request is set to a "queued" state,
and then the callee's monitor MUST attempt to process another CC
request in the queue according to its local policy.
7.6. Receiving a CC Resumption
When a CC request has been resumed after the callee's monitor has
received a PUBLISH request from the caller's agent as described in
Section 6.6, the presence event state for the caller's identity at
the presence server of the CC monitor MUST be modified as described
in [RFC3903]. If the callee is not busy and there is no entry in the
CC queue that is currently being processed, the callee's monitor MUST
process the queue as described in Section 7.3 above.
8. Examples
A basic call flow, with only the most significant messages of a CC
activation and invocation shown, is as follows (please note that this
is an example, and there may be variations in the failure responses):
Worley, et al. Standards Track [Page 20]
^L
RFC 6910 Completion of Calls April 2013
Caller Callee
sip:123@a.com sip:456@b.com
| |
| INVITE sip:456@b.com | [original call]
| From: sip:123@a.com |
|------------------------->|
| |
| 487 |
| Call-Info:<sip:456@z.b.com>;purpose=call-completion;m=NR
|<-------------------------|
| |
| SUBSCRIBE sip:456@z.b.com;m=NR [initial SUBSCRIBE]
| From: sip:123@a.com |
| Contact: sip:123@y.a.com |
| Request-Disposition: parallel
| Call-Id: abcd-efgh |
| Event: call-completion |
|------------------------->|
| |
| 200 |
|<-------------------------|
| |
| NOTIFY sip:123@y.a.com | [initial NOTIFY]
| Body: cc-state: queued |
|<-------------------------|
| |
| SUBSCRIBE sip:456@b.com;m=NR [another init. SUB.]
| From: sip:foo@example.com|
| Request-Disposition: parallel
| Call-Id: abcd-efgh |
| Event: call-completion |
|------------------------->|
| |
| 482 | [duplicate SUB. rej.]
|<-------------------------|
| |
| NOTIFY sip:123@y.a.com | [CC invoked]
| Body: cc-state: ready |
| URI: sip:recall@z.b.com
|<-------------------------|
| |
| INVITE sip:recall@z.b.com;m=NR [CC call]
| From: sip:foo@example.com|
|------------------------->|
| |
| NOTIFY sip:123@y.a.com | [CC terminated]
| Expires = 0 |
|<-------------------------|
Worley, et al. Standards Track [Page 21]
^L
RFC 6910 Completion of Calls April 2013
The original call is an ordinary INVITE. It fails due to no-response
(ring-no-answer). In this case, the callee's governing proxy
generates a 487 response because the proxy canceled the INVITE to the
UA when it rang too long without an answer. The 487 response carries
a Call-Info header field with "purpose=call-completion". The
Call-Info header field positively indicates that CC is available for
this failed fork of the call. The "m=NR" parameter indicates that it
failed due to no-response, which is useful for PSTN interworking and
assessing presence information in the callee's monitor.
The URI in the Call-Info header field (<sip:456@z.b.com>) is where
the caller's agent should subscribe for CC processing. Ideally, it
is a globally routable URI for the callee's monitor. In practice, it
may be the callee's AOR, and the SUBSCRIBE will be routed to the
callee's monitor only because it specifies "Event: call-completion".
CC is activated by sending a SUBSCRIBE to all known callee's monitor
URIs. These can be provided by the Call-Info header field in the
response to the INVITE.
Additionally, the caller's agent needs to include the original
request-URI in its set of callee's monitor URIs, because the call may
have forked to additional callees whose responses the caller has not
seen. (A SUBSCRIBE to the request-URI alone is used in cases where
the caller's agent has not received or cannot remember any callee's
monitor URI.)
The caller's agent adds to these URIs an 'm' parameter (if possible).
In this case, the caller's agent forks the SUBSCRIBE to two
destinations as defined by Section 8.2.2.2 of [RFC3261], with
appropriate Request-Disposition. The first SUBSCRIBE is to the URI
from Call-Info.
The second SUBSCRIBE is to the original request-URI and reaches the
same callee's monitor. Because it has the same Call-Id as the
SUBSCRIBE that has already reached the callee's monitor, the callee's
monitor rejects it with a 482, thus avoiding redundant subscriptions.
The initial NOTIFY for the successful SUBSCRIBE has "cc-state:
queued" in its body. Eventually, this caller is selected for CC and
is informed of this via a NOTIFY containing "cc-state: ready". This
NOTIFY carries a URI to which the INVITE for the CC call should be
sent. In practice, this may be the AOR of the callee.
The caller generates a new INVITE to the URI specified in the NOTIFY,
or if there was no such URI or if the caller's agent cannot remember
it, it may use the original request-URI. The caller adds the 'm'
parameters (if possible), to specify CC processing.
Worley, et al. Standards Track [Page 22]
^L
RFC 6910 Completion of Calls April 2013
Finally, the subscription for the CC request is terminated by the
callee's monitor.
Another flow, with only the most significant messages of CC
suspension and resumption shown, is as follows:
Caller Callee
sip:123@a.com sip:456@b.com
| |
| NOTIFY sip:123@y.a.com | [CC notification, caller not
| Body: cc-state: ready | available for CC recall]
| URI: sip:recall@z.b.com
|<-------------------------|
| |
| 200 |
|------------------------->|
| |
| PUBLISH sip:456@z.b.com | [non-availability for recall
| From: sip:123@a.com | is published]
| Contact: sip:123@y.a.com |
| Event: presence |
| Content-Type: 'app/pidf' |
| Body: status=closed |
|------------------------->|
| |
| 200 |
|<-------------------------|
| |
| | [caller becomes available
| | again]
| |
| PUBLISH sip:456@z.b.com | [availability for recall
| From: sip:123@a.com | is published]
| Contact: sip:123@y.a.com |
| Event: presence |
| Content-Type: 'app/pidf' |
| Body: status=open |
|------------------------->|
| |
| 200 |
|<-------------------------|
| |
The caller is selected for CC and is informed of this via a NOTIFY
request containing "cc-state: ready". At this time, the caller is
not available for the CC recall.
Worley, et al. Standards Track [Page 23]
^L
RFC 6910 Completion of Calls April 2013
For updating its presence event state at the callee's presence
server, the caller sends a PUBLISH request informing the presence
server that the PIDF state is "closed". The PUBLISH request is sent
(in order of preference) as follows: (1) out-of-dialog to the CC URI
as received in the NOTIFY, (2) within the corresponding SUBSCRIBE
dialog, (3) out-of-dialog to the corresponding callee's monitor URI
received in the Call-Info header field of the NOTIFY, or (4) out-of-
dialog to the remote Contact address of the corresponding SUBSCRIBE
dialog.
When the caller is again available for the CC recall, the caller
updates his presence event state at the callee's presence server by
generating a PUBLISH request informing the server that the PIDF state
is "open"; this request will otherwise be constructed in the same way
as the suspend PUBLISH request.
9. 'call-completion' Event Package
This section specifies the call-completion event package, in
accordance with Section 5.4 of [RFC6665]. The call-completion event
package has the media type "application/call-completion".
Note that if the callee has a caller-queuing facility, the callee's
monitor may want to treat the CC queue as part of the queuing
facility and include in the event package information regarding the
state of the queue. How this information is conveyed is left for
further standardization.
9.1. Event Package Name
The SIP events specification [RFC6665] requires package definitions
to specify the name of their package or template-package. The name
of this package is "call-completion". This value appears in the
Event and Allow-Events header fields.
9.2. Event Package Parameters
No package-specific Event header field parameters are defined for
this event package.
Worley, et al. Standards Track [Page 24]
^L
RFC 6910 Completion of Calls April 2013
9.3. SUBSCRIBE Bodies
[RFC6665] requires package definitions to define the usage, if any,
of bodies in SUBSCRIBE requests.
The SUBSCRIBE request MAY contain an Accept header field. If no
such header field is present, it has a default value of
"application/call-completion". If the header field is present, it
MUST include "application/call-completion".
A SUBSCRIBE request for a CC package MAY contain a body. This body
defines a filter to be applied to the subscription. Filter documents
are not specified in this document and may be the subject of future
standardization activity.
A SUBSCRIBE request requests CC information regarding calls recently
made from the same caller to the callee UA(s) serviced by the
notifier. Calls are defined to be "from the same caller" if the
URI-part of the From header field value in the INVITE is the same as
the URI-part of the From header field value in the SUBSCRIBE.
9.4. Subscribe Duration
[RFC6665] requires package definitions to define a default value for
subscription durations and to discuss reasonable choices for
durations when they are explicitly specified.
If a SUBSCRIBE does not explicitly request a duration, the default
requested duration is 3600 seconds, as that is the highest service
duration timer value recommended for the CC services in the ETSI
[ETS300.356-18] and ITU-T [ITU-T.Q.733] documents. Because the
subscription duration means that no explicit timer is needed, and the
subscription duration can be seen as an equivalent to the SS7 service
duration timer, this specification refers to the subscription
duration also as the service duration timer. It is RECOMMENDED that
subscribers request, and that notifiers grant, a subscription time of
at least 3600 seconds.
If a notifier can determine that, according to its policy, after a
certain duration the requested subscription can no longer proceed to
the "ready" state, it SHOULD reduce the granted subscription time to
that duration. If a notifier can determine that, according to its
policy, the requested subscription can never proceed to the "ready"
state, it should refuse the subscription.
Worley, et al. Standards Track [Page 25]
^L
RFC 6910 Completion of Calls April 2013
9.5. NOTIFY Bodies
[RFC6665] requires package definitions to describe the allowed set of
body types in NOTIFY requests and to specify the default value to be
used when there is no Accept header field in the SUBSCRIBE request.
A NOTIFY for a call-completion event package MUST contain a body that
describes the CC states.
As described in [RFC6665], the NOTIFY message will contain bodies
that describe the state of the subscribed resource. This body is in
a format listed in the Accept header field of the SUBSCRIBE, or in a
package-specific default format if the Accept header field was
omitted from the SUBSCRIBE.
In this event package, the body of the notification contains a CC
document. All subscribers and notifiers MUST support the
"application/call-completion" data format described in Section 10.
The SUBSCRIBE request MAY contain an Accept header field. If no
such header field is present, it has a default value of
"application/call-completion". If the header field is present, it
MUST include "application/call-completion". Of course, the
notifications generated by the server MUST be in one of the formats
specified in the Accept header field in the SUBSCRIBE request.
9.6. Subscriber Generation of SUBSCRIBE Requests
Subscribers MUST generate SUBSCRIBE requests when they want to
subscribe to the call-completion event package at the terminating
side in order to receive CC notifications. The generation of
SUBSCRIBE requests can imply the usage of a CC service-specific timer
as described in Section 9.4.
9.7. Notifier Processing of SUBSCRIBE Requests
Upon receiving a subscription refresh, the notifier MUST set the
"expires" parameter of the Subscription-State header field to a value
not higher than the current remaining duration of the subscription,
regardless of the value received in the Expires header field (if
present) of the subscription refresh.
If a subscription is not successful because the CC queue has reached
the maximum allowed number of entries (short-term denial), the
notifier MUST send a 480 Temporarily Unavailable response to the
subscriber, possibly with a retry-after parameter in accordance with
the notifier's policy. If a subscription is not successful because a
condition has occurred that prevents and will continue to prevent the
CC service (long-term denial), the notifier MUST send a 403 Forbidden
response to the subscriber.
Worley, et al. Standards Track [Page 26]
^L
RFC 6910 Completion of Calls April 2013
A notifier MAY receive multiple forks of the same SUBSCRIBE, as
defined by Section 8.2.2.2 of [RFC3261]. In such a case, the
notifier MUST reject all but one of the SUBSCRIBEs with a 482 Merged
Request response, unless some other failure response applies.
The CC information can be sensitive. Therefore, all subscriptions
SHOULD be handled with consideration of the security considerations
discussed in Section 11, in particular for verifying the identity of
the subscriber.
9.8. Notifier Generation of NOTIFY Requests
Notifiers MUST generate NOTIFY requests when the CC request's state
changes to "queued" or to "ready (for CC)". A NOTIFY that is sent
with non-zero expiration MUST contain the "cc-state" parameter. The
parameter's value MUST be "queued" if the CC request represented by
the subscription is not at this time selected by the callee's monitor
for CC recall, and the parameter's value MUST be "ready" if the
request is at this time selected by the callee's monitor for CC
recall.
A NOTIFY sent with a zero expiration (e.g., as a confirmation of a
request to unsubscribe) MAY contain the "cc-state" parameter.
When the callee's monitor withdraws the selection of the request for
the CC recall (e.g., because the caller's agent has not initiated the
CC recall INVITE before the CC recall timer expires, or because the
agent has suspended the request from being considered for CC recall),
the notifier MUST send a NOTIFY to the subscription of the selected
request. This NOTIFY MUST contain the "cc-state" parameter set to
"queued".
If the CC subscription was successful and the retain option is
supported at the callee, the NOTIFY MUST contain the
"cc-service-retention" parameter.
9.9. Subscriber Processing of NOTIFY Requests
When receiving a NOTIFY request with the cc-state set to "ready",
subscribers SHOULD suspend all other CC subscriptions for the
original call at other notifiers. The receipt of a NOTIFY request
with the cc-state set to "ready" by the subscriber will also cause an
interaction with the instances at the subscriber's side that are
responsible for starting the CC recall.
Worley, et al. Standards Track [Page 27]
^L
RFC 6910 Completion of Calls April 2013
9.10. Handling of Forked Requests
Forked requests are expected to be common for the CC event type. The
subscriber MUST be prepared to process NOTIFY requests from multiple
notifiers and to coordinate its processing of the information
obtained from them in accordance with the procedures in this
document.
9.11. Rate of Notifications
The CC service typically involves a single notification, per notifier
and per subscription, regarding the change to "ready" (for CC) but
MAY involve several notifications about the change to the "ready"
state, separated by a CC call that failed due to a busy callee.
Typically, notifications will be separated by at least tens of
seconds. Notifiers SHOULD NOT generate more than three notifications
for one subscription in any ten-second interval. Since it is
important to avoid useless recalls, a notifier SHOULD send state
changes to "queued" from "ready" promptly. Thus, a notifier SHOULD
NOT send a state change to "ready" as the third notification in a
ten-second interval, as that would make it impossible to promptly
send a further state change to "queued".
9.12. State Agents
State agents have no defined role in the handling of the
call-completion event package.
10. CC Information Format
The following syntax specification uses the Augmented Backus-Naur
Form (ABNF) as described in [RFC5234]. The formal syntax for the
application/call-completion MIME type is described below. In
general, the CC body is to be interpreted in the same way as SIP
headers: (1) the names of the lines are case-insensitive, (2) the
lines can be continued over line boundaries if the succeeding lines
start with horizontal white space, and (3) lines with unknown names
are to be ignored. The header lines defined in this document can
occur at most once in any given CC information format document.
call-completion = 1*(cc-header CRLF)
cc-header = cc-state / cc-service-retention / cc-URI /
extension-header
The above rules whose names start with "cc-" are described below.
Other rules are described in [RFC3261].
Worley, et al. Standards Track [Page 28]
^L
RFC 6910 Completion of Calls April 2013
10.1. CC Status
The cc-state line indicates the CC status of a particular user with
an entry in a CC queue. It MUST be present, unless the expiration
time indicated in the NOTIFY is zero.
cc-state = "cc-state" HCOLON ( "queued" / "ready" )
The value "queued" indicates that a subscriber's entry in the CC
queue is not selected for CC recall. The value "ready" indicates
that a user's entry in the CC queue has been selected for CC recall.
10.2. CC Service-Retention Indication
The service-retention line indicates the support of the retain
option. The retain option, if supported at the callee, will maintain
the entry in the CC queue, if a CC call has failed due to a callee
busy condition. If present, this parameter indicates that the retain
option is supported; otherwise, it is not supported. This parameter
MAY be present in NOTIFY requests.
cc-service-retention = "cc-service-retention" HCOLON "true"
10.3. CC URI
The cc-URI line provides a URI that the agent SHOULD use as the
request-URI of the CC recall INVITE and the suspend/resume PUBLISH.
It SHOULD be provided in all NOTIFYs. The URI SHOULD be globally
routable and SHOULD uniquely identify the CCE in question. The
syntax provides for generic-params in the value, but this document
defines no such parameters. Parameters that are not understood by
the subscriber MUST be retained with the URI.
cc-URI = "cc-URI" HCOLON addr-spec
11. Security Considerations
The CC facility allows the caller's agent to determine some status
information regarding the callee. This information intrinsically
diminishes the privacy of the callee; in order to protect
sufficiently the privacy of the callee, the overall amount of
disclosure must be limited, and the amount of disclosure to any
single caller must be limited.
Of course, if a caller is not permitted to call the callee, that
caller should not be allowed to establish a CC subscription. Callers
that are particularly sensitive about their privacy may reject all CC
subscriptions. But in the ordinary case, the optimal protection is
Worley, et al. Standards Track [Page 29]
^L
RFC 6910 Completion of Calls April 2013
to permit any caller to subscribe but prevent any caller from
subscribing for too long, or too often, or in a pattern that does not
reveal to the callee (through CC calls) that the subscriptions are
taking place.
In legitimate use, CC event subscriptions will be made in stereotyped
ways that limit the disclosure of status information:
1. When a subscriber is selected for CC, a call should arrive
promptly for the callee, or the subscription should be
terminated. This expectation may be violated by a race condition
between selection of the subscription for CC and the caller
becoming unavailable, but it should be rare that a single
subscription will exhibit the race condition more than once.
2. Subscriptions should not remain suspended for longer than the
expected duration of a call (a call by the caller to a third
party).
3. Subscriptions should be initiated only shortly after failed
incoming calls.
4. Most of the time, a callee should have no queued subscriptions.
Violations of these expectations should be detected by the callee's
monitor and reported as possible attempts at privacy violation.
The CC facility may enhance the effectiveness of Spam over Internet
Telephony (SPIT) via the following technique: the caller makes calls
to a group of callees. The caller then requests CC for the calls
that do not connect to the callees. The resultant CC calls are
probably more likely to reach the callees than original calls to a
further group of targets.
In order to prevent senders of SUBSCRIBE and PUBLISH requests from
causing Denial-of-Service (DoS) attacks and suspending other CC
entries than their own, a mechanism to correlate the identity of the
original caller and the sender of SUBSCRIBE and PUBLISH requests is
needed. The RECOMMENDED mechanism to authenticate the identity of
the originator of requests relevant to CC is the SIP Identity
mechanism [RFC4474]. Alternatively, CC agents and monitors within an
administrative domain or federation of domains MAY use the mechanism
described in [RFC3325] to authenticate their identities with a
P-Asserted-Identity header field.
Furthermore, the use of the presence server to suspend or resume
SHOULD be limited to a caller that has an active queue in the
callee's monitor. This can be achieved first by monitoring and
Worley, et al. Standards Track [Page 30]
^L
RFC 6910 Completion of Calls April 2013
logging incoming calls to the callee and the destination where CC
indication was sent, then to ensure that subscription to the
call-completion event package is permitted only within a short time
frame after the initial call failed and to only accept PUBLISH
requests to the presence server if there is an active queue for the
caller in question.
Note that regarding authentication/authorization/billing logic
subject to operator policy, CC calls or subscriptions do not differ
from other basic calls or event subscriptions.
12. IANA Considerations
12.1. SIP Event Package Registration for CC
This specification registers an event package, based on the
registration procedures defined in [RFC6665]. The following
information is required for such a registration:
Package name: call-completion
Is this registration for a Template-Package: No.
Published specification: RFC 6910.
Person & email address to contact for further information: Martin
Huelsemann, martin.huelsemann@telekom.de
12.2. MIME Registration for application/call-completion
MIME media type name: application
MIME subtype name: call-completion
Required parameters: none.
Optional parameters: none.
Encoding considerations: Consists of lines of UTF-8-encoded
characters, ended with CRLF.
Security considerations: There are no security considerations
internal to the media type. Its typical usage involves the security
considerations described in RFC 6910.
Interoperability considerations: See RFC 6910.
Published specification: RFC 6910.
Worley, et al. Standards Track [Page 31]
^L
RFC 6910 Completion of Calls April 2013
Applications that use this media type: The implementations of the CC
features of the Session Initiation Protocol.
Additional information:
Magic number(s): none
File extension(s): Not expected to be stored in files.
Macintosh file type code(s): Not expected to be stored in files.
Person & email address to contact for further information:
Martin Huelsemann, martin.huelsemann@telekom.de
Intended usage: LIMITED USE
Restrictions on usage: none
Author/Change controller: The IETF
12.3. SIP/SIPS URI Parameter 'm'
This specification defines one new SIP/SIPS URI parameter 'm' as per
the registry created by [RFC3969]. It is used to identify that an
INVITE request is a CC call, or to further identify that a SUBSCRIBE
request is for the call-completion event package. The parameter may
have a value that describes the type of the CC operation, as
described in this specification.
Name of the parameter: m
Predefined values: yes
Reference: [RFC6910]
Worley, et al. Standards Track [Page 32]
^L
RFC 6910 Completion of Calls April 2013
12.4. The 'purpose' Parameter Value 'call-completion'
This specification adds a new predefined value "call-completion" for
the 'purpose' header field parameter of the Call-Info header field.
This modifies the registry header field parameters and parameter
values by adding this RFC as a reference to the line for header field
"Call-Info" and parameter name 'purpose':
Header field: Call-Info
Parameter name: purpose
Predefined values: yes
Reference: [RFC3261] [RFC5367] [RFC6910]
12.5. 'm' Header Parameter for Call-Info
This specification extends [RFC3261] to add a new header field
parameter 'm' to the Call-Info header field. This adds a row to the
registry header field parameters and parameter values:
Header field: Call-Info
Parameter name: m
Predefined values: yes
Reference: [RFC6910]
The predefined values are 'BS', 'NR', and 'NL'.
13. Acknowledgements
Thanks to Paul Kyzivat, John Elwell, Keith Drage, Andrew Hutton,
Thomas Stach, Dennis Luebbers, and Christer Holmberg, who provided
helpful comments, feedback, and suggestions.
Worley, et al. Standards Track [Page 33]
^L
RFC 6910 Completion of Calls April 2013
14. References
14.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002.
[RFC3515] Sparks, R., "The Session Initiation Protocol (SIP) Refer
Method", RFC 3515, April 2003.
[RFC3863] Sugano, H., Fujimoto, S., Klyne, G., Bateman, A., Carr,
W., and J. Peterson, "Presence Information Data Format
(PIDF)", RFC 3863, August 2004.
[RFC3903] Niemi, A., "Session Initiation Protocol (SIP) Extension
for Event State Publication", RFC 3903, October 2004.
[RFC3969] Camarillo, G., "The Internet Assigned Number Authority
(IANA) Uniform Resource Identifier (URI) Parameter
Registry for the Session Initiation Protocol (SIP)",
BCP 99, RFC 3969, December 2004.
[RFC4235] Rosenberg, J., Schulzrinne, H., and R. Mahy, "An INVITE-
Initiated Dialog Event Package for the Session Initiation
Protocol (SIP)", RFC 4235, November 2005.
[RFC4474] Peterson, J. and C. Jennings, "Enhancements for
Authenticated Identity Management in the Session
Initiation Protocol (SIP)", RFC 4474, August 2006.
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, January 2008.
[RFC5367] Camarillo, G., Roach, A.B., and O. Levin, "Subscriptions
to Request-Contained Resource Lists in the Session
Initiation Protocol (SIP)", RFC 5367, October 2008.
[RFC5627] Rosenberg, J., "Obtaining and Using Globally Routable User
Agent URIs (GRUUs) in the Session Initiation Protocol
(SIP)", RFC 5627, October 2009.
[RFC6665] Roach, A.B., "SIP-Specific Event Notification", RFC 6665,
July 2012.
Worley, et al. Standards Track [Page 34]
^L
RFC 6910 Completion of Calls April 2013
14.2. Informative References
[ETS300.356-18]
European Telecommunications Standards Institute,
"Completion of Calls to Busy Subscriber (CCBS)
supplementary service", February 1995.
[ITU-T.Q.733]
International Telecommunication Union, "Description for
Call Completion Supplementary Services Using SS No. 7",
February 1995.
[RFC3325] Jennings, C., Peterson, J., and M. Watson, "Private
Extensions to the Session Initiation Protocol (SIP) for
Asserted Identity within Trusted Networks", RFC 3325,
November 2002.
[RFC3725] Rosenberg, J., Peterson, J., Schulzrinne, H., and G.
Camarillo, "Best Current Practices for Third Party Call
Control (3pcc) in the Session Initiation Protocol (SIP)",
BCP 85, RFC 3725, April 2004.
[RFC5359] Johnston, A., Sparks, R., Cunningham, C., Donovan, S., and
K. Summers, "Session Initiation Protocol Service
Examples", BCP 144, RFC 5359, October 2008.
Worley, et al. Standards Track [Page 35]
^L
RFC 6910 Completion of Calls April 2013
Appendix A. Example Caller's Agent
This section outlines how an autonomous caller's agent can operate
using only standard SIP features to interact with the caller's UA.
This example is suitable only as a learning aid, as its performance
is poor.
The agent monitors calls made from the UA(s) by subscribing to the
dialog event package of the UA(s).
The UA(s) or their proxy routes calls made with either of two special
dial sequences to the agent, which interprets the INVITEs as
indications to make a CC request with BS or NR or NL mode for the
latest call made by the UA.
The agent monitors the status of the UA(s) for availability to be
used for a CC call by examining the dialog events.
The agent indicates to the UA(s) that CC recall is in progress by
making call to the UA(s). If the UA is answered, the agent assumes
that the caller is available and plays pre-recorded audio to indicate
that CC recall is in progress.
After playing the pre-recorded audio, the caller's agent uses REFER
to order the UA to make the CC call to the callee.
Appendix B. Example Callee's Monitor
This section outlines how an autonomous callee's monitor can operate
using only standard SIP features to interact with the callee's UA.
This example is suitable only as a learning aid, as its performance
is poor.
The callee's monitor monitors calls made to the UA(s) by subscribing
to the dialog events of the UA(s). This enables it to determine
their Call-Ids and their final response statuses.
The proxy for the UA(s) routes to the callee's monitor any SUBSCRIBEs
for the call-completion event package directed to the URIs serviced
by the UA(s).
The callee's monitor monitors the status of the UA(s) to determine
when they are in a suitable state to receive a CC call by watching
the busy/not-busy status of the UA(s): for example, a UA is available
for CCBS when it is not busy, but a UA is available for CCNR when it
becomes not busy after being busy with an established call.
Worley, et al. Standards Track [Page 36]
^L
RFC 6910 Completion of Calls April 2013
Authors' Addresses
Dale R. Worley
Ariadne Internet Services, Inc.
738 Main St.
Waltham, MA 02451
US
Phone: +1 781 647 9199
EMail: worley@ariadne.com
Martin Huelsemann
Deutsche Telekom
Heinrich-Hertz-Strasse 3-7
Darmstadt 64307
Germany
Phone: +4961515812765
EMail: martin.huelsemann@telekom.de
URI: http://www.telekom.de
Roland Jesske
Deutsche Telekom
Heinrich-Hertz-Strasse 3-7
Darmstadt 64307
Germany
Phone: +4961515812766
EMail: r.jesske@telekom.de
URI: http://www.telekom.de
Denis Alexeitsev
TeleFLASH
Mainzer Landstrasse 47
Frankfurt 60329
Germany
Phone: +49-69-257-378-230
EMail: alexeitsev@teleflash.com
URI: http://www.teleflash.com
Worley, et al. Standards Track [Page 37]
^L
|