Project

General

Profile

SipPayloadsApi » History » Version 15

Adrian Georgescu, 05/20/2010 12:59 PM

1 1 Adrian Georgescu
2 15 Adrian Georgescu
h1. Payloads API
3 1 Adrian Georgescu
4 15 Adrian Georgescu
5
6
7 1 Adrian Georgescu
The following modules are used for parsing and generating bodies carried using
8
SIP PUBLISH/SUBSCRIBE/NOTIFY methods that have been designed for
9
asynchronous event notifications to convey in real-time state and other
10
information between end-points. 
11
12
An example of state information is presence, which in its basic form provides user availability information based on end-user choice. In its
13
advanced form, presence can provide rich state information including but not
14
limited to user mood, geo-location, environment, noise level and type of
15
communication desired. The information can be disseminated based on a
16
granular policy which allows end-users to decide who has access to which
17
part of the published information.
18
19 15 Adrian Georgescu
These applications are used by the SIP core [[SipCoreApiDocumentation#Publication|Publication]] and [[SipCoreApiDocumentation#Subscription|Subscription]] classes.
20 1 Adrian Georgescu
21
22 15 Adrian Georgescu
h2. Common Policy
23
24
25 1 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/policy.py]
26
27 15 Adrian Georgescu
Generic data types to be used in policy applications, according to "RFC 4745":http://tools.ietf.org/html/rfc4745.
28 1 Adrian Georgescu
29
30 15 Adrian Georgescu
h3. Example
31
32
33
<pre>
34 1 Adrian Georgescu
>>> alice = IdentityOne('sip:alice@example.com')
35
>>> carol = IdentityOne('tel:+1-212-555-1234')
36
>>> bob = IdentityOne('mailto:bob@example.net')
37
>>> print carol
38
tel:+1-212-555-1234
39
>>> id = Identity([alice, bob])
40
>>> print id
41
Identity([IdentityOne('sip:alice@example.com'), IdentityOne('mailto:bob@example.net')])
42
>>> id[1:1] = [carol]
43
>>> print id
44
Identity([IdentityOne('sip:alice@example.com'), IdentityOne('tel:+1-212-555-1234'), IdentityOne('mailto:bob@example.net')])
45
>>> conditions = Conditions([id])
46
>>> rule = Rule(id='f3g44r1', conditions=conditions, actions=Actions(), transformations=Transformations())
47
>>> ruleset = RuleSet()
48
>>> ruleset.append(rule)
49
>>> print ruleset.toxml(pretty_print=True)
50
<?xml version='1.0' encoding='UTF-8'?>
51
<cp:ruleset xmlns:cp="urn:ietf:params:xml:ns:common-policy">
52
  <cp:rule id="f3g44r1">
53
    <cp:conditions>
54
      <cp:identity>
55
        <cp:one id="sip:alice@example.com"/>
56
        <cp:one id="mailto:bob@example.net"/>
57
        <cp:one id="tel:+1-212-555-1234"/>
58
      </cp:identity>
59
    </cp:conditions>
60
    <cp:actions/>
61
    <cp:transformations/>
62
  </cp:rule>
63
</cp:ruleset>
64
<BLANKLINE>
65 15 Adrian Georgescu
</pre>
66 1 Adrian Georgescu
67
68 15 Adrian Georgescu
h2. Pres-rules
69
70
71 1 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/presrules.py]
72
73 15 Adrian Georgescu
Parses and produces Presence Authorization Rules documents according to "RFC 5025":http://tools.ietf.org/html/rfc5025.
74 5 Adrian Georgescu
75 1 Adrian Georgescu
Authorization rules are stored on the XCAP server. The presence rules are generated either based on user initiative or as a response to a new subscription signaled by a change in the watcherinfo application.
76
77
78 15 Adrian Georgescu
h3. Example
79
80
81
<pre>
82 1 Adrian Georgescu
>>> conditions = Conditions([Identity([IdentityOne('sip:user@example.com')])])
83
>>> actions = Actions([SubHandling('allow')])
84
>>> transformations = Transformations()
85
>>> psrv = ProvideServices(provides=[ServiceURIScheme('sip'), ServiceURIScheme('mailto')])
86
>>> ppers = ProvidePersons(all=True)
87
>>> transformations[0:0] = [psrv, ppers]
88
>>> transformations.append(ProvideActivities('true'))
89
>>> transformations.append(ProvideUserInput('bare'))
90
>>> transformations.append(ProvideUnknownAttribute(ns='urn:vendor-specific:foo-namespace', name='foo', value='true'))
91
>>> rule = Rule(id='a', conditions=conditions, actions=actions, transformations=transformations)
92
>>> prules = PresRules([rule])
93
>>> print prules.toxml(pretty_print=True)
94
<?xml version='1.0' encoding='UTF-8'?>
95
<cp:ruleset xmlns:pr="urn:ietf:params:xml:ns:pres-rules" xmlns:cp="urn:ietf:params:xml:ns:common-policy">
96
  <cp:rule id="a">
97
    <cp:conditions>
98
      <cp:identity>
99
        <cp:one id="sip:user@example.com"/>
100
      </cp:identity>
101
    </cp:conditions>
102
    <cp:actions>
103
      <pr:sub-handling>allow</pr:sub-handling>
104
    </cp:actions>
105
    <cp:transformations>
106
      <pr:provide-services>
107
        <pr:service-uri-scheme>sip</pr:service-uri-scheme>
108
        <pr:service-uri-scheme>mailto</pr:service-uri-scheme>
109
      </pr:provide-services>
110
      <pr:provide-persons>
111
        <pr:all-persons/>
112
      </pr:provide-persons>
113
      <pr:provide-activities>true</pr:provide-activities>
114
      <pr:provide-user-input>bare</pr:provide-user-input>
115
      <pr:provide-unknown-attribute ns="urn:vendor-specific:foo-namespace" name="foo">true</pr:provide-unknown-attribute>
116
    </cp:transformations>
117
  </cp:rule>
118
</cp:ruleset>
119
<BLANKLINE>
120 15 Adrian Georgescu
</pre>
121 1 Adrian Georgescu
122
123 15 Adrian Georgescu
h2. Resource Lists
124
125
126 5 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/resourcelists.py]
127 1 Adrian Georgescu
128 15 Adrian Georgescu
This module provides convenient classes to parse and generate resource-lists documents as described in "RFC 4826":http://tools.ietf.org/html/rfc4826.
129 1 Adrian Georgescu
130
Used for server side storage of presence related buddy lists using XCAP protocol. The SIP clients maintain the resource-lists on the XCAP server which provides persisten storage and aggregation point for multiple devices.
131
132
133 15 Adrian Georgescu
h3. Generation
134
135
136
<pre>
137 1 Adrian Georgescu
>>> bill = Entry('sip:bill@example.com', display_name = 'Bill Doe')
138
>>> petri = EntryRef('some/ref')
139
>>> friends = List([bill, petri])
140
>>> rl = ResourceLists([friends])
141
>>> print rl.toxml(pretty_print=True)
142
<?xml version='1.0' encoding='UTF-8'?>
143
<rl:resource-lists xmlns:rl="urn:ietf:params:xml:ns:resource-lists">
144
  <rl:list>
145
    <rl:entry uri="sip:bill@example.com">
146
      <rl:display-name>Bill Doe</rl:display-name>
147
    </rl:entry>
148
    <rl:entry-ref ref="some/ref"/>
149
  </rl:list>
150
</rl:resource-lists>
151
<BLANKLINE>
152 15 Adrian Georgescu
</pre>
153 1 Adrian Georgescu
154
toxml() wraps etree.tostring() and accepts all its arguments (like pretty_print).
155
156
157 15 Adrian Georgescu
h3. Parsing
158
159
160
<pre>
161 1 Adrian Georgescu
>>> r = ResourceLists.parse(example_from_section_3_3_rfc)
162
>>> len(r)
163
1
164
165
>>> friends = r[0]
166
>>> friends.name
167
'friends'
168
169
>>> bill = friends[0]
170
>>> bill.uri
171
'sip:bill@example.com'
172
>>> print bill.display_name
173
Bill Doe
174
175
>>> close_friends = friends[2]
176
>>> print close_friends[0]
177
"Joe Smith" <sip:joe@example.com>
178
>>> print close_friends[2].display_name
179
Marketing
180 15 Adrian Georgescu
</pre>
181 1 Adrian Georgescu
182
183
184 15 Adrian Georgescu
h2. RLS Services
185
186
187 1 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/rlsservices.py]
188
189 15 Adrian Georgescu
Parses and builds application/rls-services+xml documents according to "RFC 4826":http://tools.ietf.org/html/rfc4826.
190 5 Adrian Georgescu
191 1 Adrian Georgescu
Used for delegating presence related works to the server. The client build rls-services lists with buddies and instructs the server to subscribe to the sip uris indicated in the lists. This way the client can save bandwidth as the server performs the signaling for subscription and collection of notifications and provides consolidated answers to the SIP user agent.
192
193
194 15 Adrian Georgescu
h3. Generation
195
196
197
<pre>
198 1 Adrian Georgescu
>>> buddies = Service('sip:mybuddies@example.com', 'http://xcap.example.com/xxx', ['presence'])
199
>>> marketing = Service('sip:marketing@example.com')
200
>>> marketing.list = RLSList([Entry('sip:joe@example.com'), Entry('sip:sudhir@example.com')])
201
>>> marketing.packages = ['presence']
202
>>> rls = RLSServices([buddies, marketing])
203
>>> print rls.toxml(pretty_print=True)
204
<?xml version='1.0' encoding='UTF-8'?>
205
<rls-services xmlns:rl="urn:ietf:params:xml:ns:resource-lists" xmlns="urn:ietf:params:xml:ns:rls-services">
206
  <service uri="sip:mybuddies@example.com">
207
    <resource-list>http://xcap.example.com/xxx</resource-list>
208
    <packages>
209
      <package>presence</package>
210
    </packages>
211
  </service>
212
  <service uri="sip:marketing@example.com">
213
    <list>
214
      <rl:entry uri="sip:joe@example.com"/>
215
      <rl:entry uri="sip:sudhir@example.com"/>
216
    </list>
217
    <packages>
218
      <package>presence</package>
219
    </packages>
220 3 Adrian Georgescu
  </service>
221 1 Adrian Georgescu
</rls-services>
222
<BLANKLINE>
223
224
=== Parsing ===
225
226
>>> rls = RLSServices.parse(example_from_section_4_3_rfc)
227
>>> len(rls)
228
2
229
230
>>> rls[0].uri
231
'sip:mybuddies@example.com'
232
233
>>> print rls[0].list
234
http://xcap.example.com/xxx
235
236
>>> print rls[0].packages[0]
237
presence
238
239
240
>>> rls[1].uri
241
'sip:marketing@example.com'
242
243
>>> assert len(rls[1].packages) == 1 and rls[1].packages[0] == 'presence'
244
245 15 Adrian Georgescu
</pre>
246 1 Adrian Georgescu
247
248 15 Adrian Georgescu
h2. Presence Data Model
249
250
251 1 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/presdm.py]
252
253 15 Adrian Georgescu
PIDF handling according to "RFC 3863":http://tools.ietf.org/html/rfc3863 and "RFC 3379":http://tools.ietf.org/html/rfc3379. This module provides classes to parse and generate PIDF documents.
254 1 Adrian Georgescu
255 6 Adrian Georgescu
Used to parse NOTIFY body for presence event and generate state information for use with PUBLISH method and to parse the state of buddy lists entries we have subscribed to. A SIP client typically instantiates a new PIDF object for itself and for each buddy it SUBSCRIBEs to and updates each object when a NOTIFY is received. The list of buddies is maintained using the resource-lists XCAP application.
256 1 Adrian Georgescu
257
258 15 Adrian Georgescu
h3. Example
259
260
261
<pre>
262 1 Adrian Georgescu
>>> from datetime import datetime
263
>>> pidf = PIDF('pres:someone@example.com')
264
>>> status = Status(basic=Basic('open'))
265
>>> contact = Contact('im:someone@mobilecarrier.net')
266
>>> contact.priority = "0.8"
267
>>> tuple1 = Service('bs35r9', notes=[ServiceNote("Don't Disturb Please!"), ServiceNote("Ne derangez pas, s'il vous plait", lang="fr")], status=status)
268
>>> tuple1.contact = contact
269
>>> tuple1.timestamp = Timestamp(datetime(2008, 9, 11, 20, 42, 03))
270
>>> tuple2 = Service('eg92n8', status=Status(basic=Basic('open')), contact=Contact('mailto:someone@example.com'))
271
>>> tuple2.contact.priority = "1.0"
272
>>> pidf.notes.add(Note("I'll be in Tokyo next week"))
273
>>> pidf.append(tuple1)
274
>>> pidf.append(tuple2)
275
>>> print pidf.toxml(pretty_print=True)
276
<?xml version='1.0' encoding='UTF-8'?>
277
<presence xmlns:rpid="urn:ietf:params:xml:ns:pidf:rpid" xmlns:dm="urn:ietf:params:xml:ns:pidf:data-model" xmlns="urn:ietf:params:xml:ns:pidf" entity="pres:someone@example.com"
278
  <tuple id="bs35r9">
279
    <status>
280
      <basic>open</basic>
281
    </status>
282
    <contact priority="0.8">im:someone@mobilecarrier.net</contact>
283
    <note>Don't Disturb Please!</note>
284
    <note xml:lang="fr">Ne derangez pas, s'il vous plait</note>
285
    <timestamp>2008-09-11T20:42:03Z</timestamp>
286
  </tuple>
287
  <tuple id="eg92n8">
288
    <status>
289
      <basic>open</basic>
290
    </status>
291
    <contact priority="1.0">mailto:someone@example.com</contact>
292
  </tuple>
293
  <note>I'll be in Tokyo next week</note>
294
</presence>
295
<BLANKLINE>
296 15 Adrian Georgescu
</pre>
297 5 Adrian Georgescu
298
299 15 Adrian Georgescu
h2. Rich Presence Extension
300
301
302 1 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/rpid.py]
303
304 15 Adrian Georgescu
RPID handling according to "RFC 4480":http://tools.ietf.org/html/rfc4480. This module provides an extension to PIDF to support rich presence.
305 1 Adrian Georgescu
306 15 Adrian Georgescu
<pre>
307 1 Adrian Georgescu
__all__ = ['_rpid_namespace_',
308
           'ActivityElement',
309
           'MoodElement',
310
           'PlaceTypeElement',
311
           'PrivacyElement',
312
           'SphereElement',
313
           'RPIDNote',
314
           'Activities',
315
           'Mood',
316
           'PlaceIs',
317
           'AudioPlaceInformation',
318
           'VideoPlaceInformation',
319
           'TextPlaceInformation',
320
           'PlaceType',
321
           'AudioPrivacy',
322
           'TextPrivacy',
323
           'VideoPrivacy',
324
           'Privacy',
325
           'Relationship',
326
           'ServiceClass',
327
           'Sphere',
328
           'StatusIcon',
329
           'TimeOffset',
330
           'UserInput',
331
           'Class',
332
           'Other']
333
334 15 Adrian Georgescu
</pre>
335 1 Adrian Georgescu
336
337 15 Adrian Georgescu
h2. Watcher-info
338
339
340 5 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/watcherinfo.py]
341 1 Adrian Georgescu
342 15 Adrian Georgescu
Parses application/watcherinfo+xml documents according to "RFC 3857":http://tools.ietf.org/html/rfc3857 and "RFC3858":http://tools.ietf.org/html/rfc3858.
343 6 Adrian Georgescu
344 1 Adrian Georgescu
Used for parsing of NOTIFY body for presence.winfo event. Used for keeping track of watchers that subscribed to our presentity. Based on this information the authorization rules can be managed using presrules.py. To retrieve this information the SIP client must subscribe to its own address for event presence.winfo.
345
346
347 15 Adrian Georgescu
h3. Example
348
349
350
<pre>
351 1 Adrian Georgescu
>>> winfo_doc='''<?xml version="1.0"?>
352
... <watcherinfo xmlns="urn:ietf:params:xml:ns:watcherinfo"
353
...              version="0" state="full">
354
...   <watcher-list resource="sip:professor@example.net" package="presence">
355
...     <watcher status="active"
356
...              id="8ajksjda7s"
357
...              duration-subscribed="509"
358
...              event="approved" >sip:userA@example.net</watcher>
359
...     <watcher status="pending"
360
...              id="hh8juja87s997-ass7"
361
...              display-name="Mr. Subscriber"
362
...              event="subscribe">sip:userB@example.org</watcher>
363
...   </watcher-list>
364
... </watcherinfo>'''
365
>>> winfo = WatcherInfo()
366
367
The return value of winfo.update() is a dictionary containing WatcherList objects
368
as keys and lists of the updated watchers as values.
369
370
>>> updated = winfo.update(winfo_doc)
371
>>> len(updated['sip:professor@example.net'])
372
2
373
374
winfo.pending, winfo.terminated and winfo.active are dictionaries indexed by
375
WatcherList objects as keys and lists of Wacher objects as values.
376
377
>>> print winfo.pending['sip:professor@example.net'][0]
378
"Mr. Subscriber" <sip:userB@example.org>
379
>>> print winfo.pending['sip:professor@example.net'][1]
380
Traceback (most recent call last):
381
  File "<stdin>", line 1, in <module>
382
IndexError: list index out of range
383
>>> print winfo.active['sip:professor@example.net'][0]
384
sip:userA@example.net
385
>>> len(winfo.terminated['sip:professor@example.net'])
386
0
387
388
winfo.wlists is the list of WatcherList objects
389
390
>>> list(winfo.wlists[0].active) == list(winfo.active['sip:professor@example.net'])
391
True
392
393
See the classes for more information.
394 15 Adrian Georgescu
</pre>
395 1 Adrian Georgescu
396
397
398 15 Adrian Georgescu
h2. XCAP-diff
399
400
401 1 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/xcapdiff.py]
402
403
This module allows parsing and building xcap-diff documents according to RFC5874.
404
405
Used to parse NOTIFY body for xcap-diff event. Used to detect changes in XCAP documents changed by other device configured for the same presentity.
406
407 15 Adrian Georgescu
<pre>
408 1 Adrian Georgescu
__all__ = ['namespace', 
409 14 Adrian Georgescu
    'XCAPDiffApplication', 
410 1 Adrian Georgescu
    'BodyNotChanged', 
411
    'Document', 
412
    'Element', 
413 11 Adrian Georgescu
    'Attribute', 
414 12 Adrian Georgescu
    'XCAPDiff']
415 15 Adrian Georgescu
</pre>
416 12 Adrian Georgescu
417
418 15 Adrian Georgescu
h2. Is-composing
419
420
421 11 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/iscomposing.py]
422 1 Adrian Georgescu
423
This module parses and produces isComposing messages according to RFC3994.
424 5 Adrian Georgescu
425 15 Adrian Georgescu
<pre>
426 1 Adrian Georgescu
__all__ = ['namespace', 
427
    'IsComposingApplication', 
428
    'State', 
429
    'LastActive', 
430 12 Adrian Georgescu
    'ContentType', 
431
    'Refresh', 
432
    'IsComposingMessage']
433 15 Adrian Georgescu
</pre>
434 12 Adrian Georgescu
435
436 15 Adrian Georgescu
h2. Message Summary
437
438
439 5 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/messagesummary.py]
440
441
This module parses and produces message-summary messages according to RF3842.
442
443
444 1 Adrian Georgescu
445 15 Adrian Georgescu
h2. User Agent Capability
446
447
448 8 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/caps.py]
449
450
User Agent Capability Extension handling according to RFC5196
451
452
This module provides an extension to PIDF to describe a user-agent capabilities in the PIDF documents.
453 1 Adrian Georgescu
454 15 Adrian Georgescu
<pre>
455 11 Adrian Georgescu
__all__ = ['caps_namespace',
456
            'Audio',
457
            'Application',
458
            'Data',
459
            'Control',
460
            'Video',
461
            'Video',
462
            'Text',
463
            'Message',
464
            'Type',
465
            'Automata',
466
            'Class',
467
            'ClassPersonal',
468
            'ClassBusiness',
469
            'Duplex',
470
            'DuplexFull',
471
            'DuplexHalf',
472
            'DuplexReceiveOnly',
473
            'DuplexSendOnly',
474
            'Description',
475
            'EventPackages',
476
            'EventConference',
477
            'EventDialog',
478
            'EventKpml',
479
            'EventMessageSummary',
480
            'EventPocSettings',
481
            'EventPresence',
482
            'EventReg',
483
            'EventRefer',
484
            'EventSiemensRtpStats',
485
            'EventSpiritsIndps',
486
            'EventSpiritsUserProf',
487
            'EventWinfo',
488
            'Priority',
489
            'PriorityLowerthan',
490
            'PriorityHigherthan',
491
            'PriorityEquals',
492
            'PriorityRange',
493
            'Methods',
494
            'MethodAck',
495
            'MethodBye',
496
            'MethodCancel',
497
            'MethodInfo',
498
            'MethodInvite',
499
            'MethodMessage',
500
            'MethodNotify',
501 1 Adrian Georgescu
            'MethodOptions',
502 11 Adrian Georgescu
            'MethodPrack',
503 1 Adrian Georgescu
            'MethodPublish',
504
            'MethodRefer',
505
            'MethodRegister',
506 11 Adrian Georgescu
            'MethodSubscribe',
507
            'MethodUpdate',
508
            'Extensions',
509 1 Adrian Georgescu
            'ExtensionRel100',
510 11 Adrian Georgescu
            'ExtensionEarlySession',
511
            'ExtensionEventList',
512
            'ExtensionFromChange',
513
            'ExtensionGruu',
514
            'ExtensionHistinfo',
515
            'ExtensionJoin',
516 1 Adrian Georgescu
            'ExtensionNoRefSub',
517 11 Adrian Georgescu
            'ExtensionPath',
518 1 Adrian Georgescu
            'ExtensionPrecondition',
519
            'ExtensionPref',
520
            'ExtensionPrivacy',
521 11 Adrian Georgescu
            'ExtensionRecipientListInvite',
522
            'ExtensionRecipientListSubscribe',
523
            'ExtensionReplaces',
524 1 Adrian Georgescu
            'ExtensionResourcePriority',
525 11 Adrian Georgescu
            'ExtensionSdpAnat',
526
            'ExtensionSecAgree',
527
            'ExtensionTdialog',
528
            'ExtensionTimer',
529
            'Schemes',
530
            'Scheme',
531
            'Actor',
532
            'ActorPrincipal',
533
            'ActorAttendant',
534
            'ActorMsgTaker',
535
            'ActorInformation',
536
            'IsFocus',
537
            'Languages',
538
            'Language',
539
            'Servcaps',
540
            'Mobility',
541
            'MobilityFixed',
542
            'MobilityMobile',
543
            'Devcaps',
544
            'ServcapsExtension',
545
            'EventPackagesExtension',
546
            'PriorityExtension',
547
            'MethodsExtension',
548
            'ExtensionsExtension',
549
            'DevcapsExtension',
550
            'MobilityExtension']
551 15 Adrian Georgescu
</pre>
552 11 Adrian Georgescu
553 1 Adrian Georgescu
554 15 Adrian Georgescu
h2. CIPID
555
556
557 1 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/cipid.py]
558 8 Adrian Georgescu
559
CIPID handling according to RFC4482. This module provides an extension to PIDF to provide additional contact information about a presentity.
560
561 15 Adrian Georgescu
<pre>
562 1 Adrian Georgescu
__all__ = ['cipid_namespace', 
563 11 Adrian Georgescu
    'Card', 
564
    'DisplayName', 
565 13 Adrian Georgescu
    'Homepage', 
566
    'Icon', 
567
    'Map', 
568
    'Sound']
569 15 Adrian Georgescu
</pre>
570 13 Adrian Georgescu
571
572 15 Adrian Georgescu
h2. Conference
573
574
575 11 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/conference.py]
576
577
Parses and produces conference-info messages according to RFC4575.
578
579 15 Adrian Georgescu
<pre>
580 11 Adrian Georgescu
__all__ = ['namespace',
581
        'ConferenceApplication',
582
        'ConferenceDescription',
583
        'ConfUris',
584
        'ConfUrisEntry',
585
        'ServiceUris',
586
        'ServiceUrisEntry',
587
        'UrisTypeModified',
588
        'UrisTypeEntry',
589
        'AvailableMedia',
590
        'AvailableMediaEntry',
591
        'Users',
592
        'User',
593
        'AssociatedAors',
594
        'Roles',
595
        'Role',
596
        'Endpoint',
597
        'CallInfo',
598
        'Sip',
599
        'Referred',
600
        'JoiningInfo',
601
        'DisconnectionInfo',
602
        'HostInfo',
603
        'HostInfoUris',
604
        'ConferenceState',
605
        'SidebarsByRef',
606
        'SidebarsByVal',
607
        'Conference',
608
        'ConferenceDescriptionExtension']
609 15 Adrian Georgescu
</pre>
610 11 Adrian Georgescu
611
612 15 Adrian Georgescu
h2. Dialog Info
613
614
615 11 Adrian Georgescu
Implemented in [browser:sipsimple/payloads/dialoginfo.py]
616
617
Parses and produces conference-info messages according to RFC4575.
618
619 15 Adrian Georgescu
<pre>
620 11 Adrian Georgescu
621
__all__ = ['namespace',
622
        'DialogInfoApplication',
623
        'DialogState',
624
        'Replaces',
625
        'ReferredBy',
626
        'Identity',
627
        'Param',
628
        'Target',
629
        'Local',
630
        'Remote',
631
        'Dialog',
632
        'DialogInfo']
633 15 Adrian Georgescu
</pre>