Project

General

Profile

SipPayloadsApi » History » Version 17

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