1<? wireshark:protocol
2   proto_name="mscml"
3   media="application/mediaservercontrol+xml"
4   description="Media Server Control Markup Language - draft 07"
5   hierarchy="yes" ?>
6
7<!--
8    DTD for MSCML - draft 07
9		https://tools.ietf.org/html/draft-vandyke-mscml-07
10		See this for current limitations:
11		https://wireshark.org/lists/ethereal-dev/200605/msg02351.html
12
13		(c)Copyright 2006 Hewlett-Packard Development Company, LP.
14		   Contact: olivier.jacques@hp.com
15-->
16
17<!ELEMENT MediaServerControl (request | response | notification) >
18<!-- <!ATTLIST MediaServerControl version <!ATTLIST > #REQUIRED > -->
19<!ATTLIST MediaServerControl version CDATA #REQUIRED >
20<!ELEMENT request (configure_conference | configure_leg | play | playcollect | playrecord | managecontent | faxplay | faxrecord | stop)>
21<!ELEMENT configure_conference (subscribe?)>
22<!ATTLIST configure_conference
23	id CDATA #IMPLIED
24	reservedtalkers NMTOKEN #IMPLIED
25        <!-- there should be | 1 | 0 in addition but Wireshark doesn't like it -->
26	reserveconfmedia (yes | no | true | false) "yes"
27>
28<!ELEMENT configure_leg (inputgain?, outputgain?, configure_team?, subscribe?)>
29<!ATTLIST configure_leg
30	id CDATA #IMPLIED
31	type (talker | listener) #IMPLIED
32	mixmode (full | mute | preferred | parked | private) #IMPLIED
33	dtmfclamp (yes | no | true | false) #IMPLIED
34	toneclamp (yes | no | true | false) #IMPLIED
35>
36<!ELEMENT play (prompt?)>
37<!ATTLIST play
38	id CDATA #IMPLIED
39	prompturl CDATA #IMPLIED
40	offset CDATA #IMPLIED
41	promptencoding CDATA #IMPLIED
42>
43<!ELEMENT playcollect (prompt?, pattern?)>
44<!ATTLIST playcollect
45	id CDATA #IMPLIED
46	prompturl CDATA #IMPLIED
47	offset CDATA #IMPLIED
48	barge (yes | no | true | false) "yes"
49	promptencoding CDATA #IMPLIED
50	cleardigits (yes | no | true | false) "no"
51	maxdigits CDATA #IMPLIED
52	firstdigittimer CDATA "5000ms"
53	interdigittimer CDATA "2000ms"
54	extradigittimer CDATA "1000ms"
55	interdigitcriticaltimer CDATA #IMPLIED
56	skipinterval CDATA "6s"
57	ffkey CDATA #IMPLIED
58	rwkey CDATA #IMPLIED
59	returnkey CDATA "#"
60	escapekey CDATA "*"
61	maskdigits (yes | no | true | false) "no"
62>
63<!ELEMENT playrecord (prompt?)>
64<!ATTLIST playrecord
65	id CDATA #IMPLIED
66	prompturl CDATA #IMPLIED
67	promptencoding CDATA #IMPLIED
68	offset CDATA "0"
69	barge (yes | no | true | false) "yes"
70	cleardigits (yes | no | true | false) "no"
71	escapekey CDATA "*"
72	recurl CDATA #REQUIRED
73	mode (append | overwrite) "overwrite"
74	recencoding CDATA #IMPLIED
75	initsilence CDATA #IMPLIED
76	endsilence CDATA #IMPLIED
77	duration CDATA #IMPLIED
78	beep (yes | no | true | false) "yes"
79	recstopmask CDATA "01234567890*#"
80>
81<!ELEMENT managecontent EMPTY>
82<!ATTLIST managecontent
83	id CDATA #IMPLIED
84	fetchtimeout CDATA "10000"
85	mimetype CDATA #IMPLIED
86	name CDATA #IMPLIED
87	httpmethod (put | post) #IMPLIED
88	action (move | delete) #IMPLIED
89	dest CDATA #IMPLIED
90	src CDATA #REQUIRED
91>
92<!ELEMENT faxplay (prompt?)>
93<!ATTLIST faxplay
94	id CDATA #IMPLIED
95	lclid CDATA #IMPLIED
96	prompturl CDATA #IMPLIED
97	recurl CDATA #IMPLIED
98	rmtid CDATA #IMPLIED
99>
100<!ELEMENT faxrecord (prompt?)>
101<!ATTLIST faxrecord
102	id CDATA #IMPLIED
103	lclid CDATA #IMPLIED
104	prompturl CDATA #IMPLIED
105	recurl CDATA #IMPLIED
106	rmtid CDATA #IMPLIED
107>
108<!ELEMENT stop EMPTY>
109<!ATTLIST stop
110	id CDATA #IMPLIED
111>
112<!ELEMENT response (error_info?, team?)>
113<!ATTLIST response
114	request (configure_conference | configure_leg | play | playcollect | playrecord | managecontent | faxplay | faxrecord | stop) #REQUIRED
115	id CDATA #IMPLIED
116	code CDATA #REQUIRED
117	text CDATA #REQUIRED
118	reason CDATA #IMPLIED
119	reclength CDATA #IMPLIED
120	recduration CDATA #IMPLIED
121	digits CDATA #IMPLIED
122	name CDATA #IMPLIED
123	playduration CDATA #IMPLIED
124	playoffset CDATA #IMPLIED
125	faxcode CDATA #IMPLIED
126	pages_sent CDATA #IMPLIED
127	pages_recv CDATA #IMPLIED
128>
129<!ELEMENT notification (conference | keypress | signal)>
130<!ELEMENT conference (activetalkers?)>
131<!ATTLIST conference
132	uniqueid CDATA #REQUIRED
133	numtalkers CDATA #REQUIRED
134>
135<!ELEMENT keypress (status)>
136<!ATTLIST keypress
137	digit CDATA #REQUIRED
138	length (standard | long) #REQUIRED
139	method (standard | long | double) #REQUIRED
140	interdigittime CDATA #REQUIRED
141        <!-- FIXME: Added for events in leg_eventsubscriptionType -->
142        report (standard | long | both | none) #REQUIRED
143        maskdigits (yes | no | true | false) "no"
144        <!-- /FIXME -->
145>
146<!ELEMENT signal EMPTY>
147<!-- FIXME: added because signal can be of type CDATA and nmtoken -->
148<!ATTLIST signal
149	type CDATA #FIXED "busy"
150	report (yes | no | true | false) #REQUIRED
151>
152<!ELEMENT prompt (audio | variable)+>
153<!ATTLIST prompt
154	locale CDATA #IMPLIED
155	baseurl CDATA #IMPLIED
156	stoponerror (yes | no | true | false) "no"
157	gain CDATA "0"
158	gaindelta CDATA "0"
159	rate CDATA "0"
160	ratedelta CDATA "0"
161	repeat CDATA "1"
162	duration CDATA "infinite"
163	offset CDATA "0"
164	delay CDATA "0"
165>
166<!ELEMENT subscribe (events)>
167<!ELEMENT inputgain (auto | fixed)>
168<!ELEMENT outputgain (auto | fixed)>
169<!ELEMENT configure_team (teammate*)>
170<!ATTLIST configure_team
171	id CDATA #IMPLIED
172	action (add | delete | query | set) #REQUIRED
173>
174<!ELEMENT teammate EMPTY>
175<!ATTLIST teammate
176	id CDATA #REQUIRED
177>
178<!ELEMENT pattern (regex+ | mgcpdigitmap | megacodigitmap)>
179<!ELEMENT regex EMPTY>
180<!ATTLIST regex
181	value CDATA #REQUIRED
182	name CDATA #IMPLIED
183>
184<!ELEMENT mgcpdigitmap EMPTY>
185<!ATTLIST mgcpdigitmap
186	value CDATA #REQUIRED
187	name CDATA #IMPLIED
188>
189<!ELEMENT megacodigitmap EMPTY>
190<!ATTLIST megacodigitmap
191	value CDATA #REQUIRED
192	name CDATA #IMPLIED
193>
194<!ELEMENT error_info EMPTY>
195<!ATTLIST error_info
196	code CDATA #REQUIRED
197	text CDATA #REQUIRED
198	context CDATA #REQUIRED
199>
200<!ELEMENT team (teammate*)>
201<!ATTLIST team
202	id CDATA #REQUIRED
203	numteam NMTOKEN #REQUIRED
204>
205<!-- two events elements are possible (conference_eventsubscriptionType, leg_eventsubscriptionType)
206     Let's take the union
207     It should be:
208<!ELEMENT events (activetalkers)>
209<!ELEMENT activetalkers EMPTY>
210<!ATTLIST activetalkers
211	interval CDATA "60s"
212>
213<!ELEMENT events (keypress?, signal*)>
214<!ELEMENT keypress EMPTY>
215<!ATTLIST keypress
216	report (standard | long | both | none) #REQUIRED
217	maskdigits (yes | no | true | false) "no"
218>
219-->
220<!ELEMENT events (activetalkers*, keypress*, signal*)>
221<!-- FIXME: two different activetalkers defined
222<!ELEMENT activetalkers EMPTY>
223<!ATTLIST activetalkers
224        report (yes | no | true | false) #REQUIRED
225        interval CDATA "60s"
226>
227-->
228
229<!--
230<!ELEMENT signal EMPTY>
231<!ATTLIST signal
232	type NMTOKEN #REQUIRED
233	report (yes | no | true | false) #REQUIRED
234>
235-->
236<!ELEMENT activetalkers (talker*)?>
237<!ATTLIST activetalkers
238        report (yes | no | true | false) #IMPLIED
239        interval CDATA "60s"
240>
241<!ELEMENT talker EMPTY>
242<!ATTLIST talker
243	callid CDATA #REQUIRED
244>
245<!ELEMENT status EMPTY>
246<!ATTLIST status
247	command (idle | play | collect | record) #REQUIRED
248	duration CDATA #REQUIRED
249>
250<!ELEMENT audio EMPTY>
251<!ATTLIST audio
252	url CDATA #REQUIRED
253	encoding CDATA #IMPLIED
254	gain CDATA "0"
255	gaindelta CDATA "0"
256	rate CDATA "0"
257	ratedelta CDATA "0"
258>
259<!ELEMENT variable EMPTY>
260<!ATTLIST variable
261	type (dat | dig | dur | mth | mny | num | sil | str | tme | wkd) #REQUIRED
262        <!-- FIXME: USD creates an error -> is it because of all capital? -->
263	<!-- subtype (mdy | dmy | ymd | ndn | t12 | t24 | USD | gen | ndn | crd | ord) #IMPLIED -->
264	subtype (mdy | dmy | ymd | ndn | usd | t12 | t24 | gen | ndn | crd | ord) #IMPLIED
265	value CDATA #REQUIRED
266>
267<!ELEMENT auto EMPTY>
268<!ATTLIST auto
269	startlevel CDATA #IMPLIED
270	targetlevel CDATA #IMPLIED
271	silencethreshold CDATA #IMPLIED
272>
273<!ELEMENT fixed EMPTY>
274<!ATTLIST fixed
275	level CDATA #IMPLIED
276>
277
278