Project

General

Profile

SipPayloadsApi » History » Version 16

Adrian Georgescu, 08/07/2012 12:27 PM

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