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
| #ifndef SpRecordLibTypesWH
#define SpRecordLibTypesWH
#include <windef.h>
// Ôëàãè èíèöèàëèçàöèè ïîäêëþ÷åíèÿ ñ êàíàëîì
#define SPR_CHANNEL_HARDNAME 0x00000001
#define SPR_CHANNEL_USERNAME 0x00000002
#define SPR_CHANNEL_EXCLUSIVE 0x00000004
// Ðåçóëüòàòû âûïîëåíèÿ îïåðàöèé
#define SPR_E_BASE 0x80040200L
#define SPR_S_BASE 0x00040200L
#define SPR_S_OK 0x00000000L
#define SPR_S_FALSE 0x00000001L
#define SPR_S_CONNECTIONNOTFOUND SPR_S_BASE + 0x0001L
#define SPR_S_WAITDISCONNECTTIMEOUT SPR_S_BASE + 0x0002L
#define SPR_S_WAIT_TIMEOUT SPR_S_BASE + 0x0003L
#define SPR_E_ACCESS_DENIED SPR_E_BASE + 0x1001L
#define SPR_E_CONNECT_LIMIT SPR_E_BASE + 0x1002L
#define SPR_E_NOTFOUNDCHANNELNAME SPR_E_BASE + 0x1003L
#define SPR_E_SOCKETOPEN SPR_E_BASE + 0x1004L
#define SPR_E_WAIT_FAILED SPR_E_BASE + 0x1005L
#define SPR_E_CLIENTSOCKETOPEN SPR_E_BASE + 0x1006L
#define SPR_E_NOCONNECT SPR_E_BASE + 0x1007L
#define SPR_E_INSUFFICIENT_BUFFER SPR_E_BASE + 0x1008L
#define SPR_E_NOMEMORY SPR_E_BASE + 0x1009L
#define SPR_E_UNKNOWNCMD SPR_E_BASE + 0x100AL
#define SPR_E_NOTSUPPORT SPR_E_BASE + 0x100BL
#define SPR_E_INVALIDNUMBER SPR_E_BASE + 0x100CL
#define SPR_E_ALREADYUSE SPR_E_BASE + 0x100DL
#define SPR_E_INEXCLUSIVEMODE SPR_E_BASE + 0x100EL
#define SPR_E_NUMBERISDIALING SPR_E_BASE + 0x100FL
#define SPR_E_CMDWAITERROR SPR_E_BASE + 0x1010L
#define SPR_E_LIBVERSION SPR_E_BASE + 0x1011L
#define SPR_E_OUTPUTMODEALREADYUSE SPR_E_BASE + 0x1012L
#define SPR_E_NOTINOUTPUTMODE SPR_E_BASE + 0x1013L
#define SPR_E_HANDSETTAKENOTHERUSER SPR_E_BASE + 0x1014L
#define SPR_E_HANDSETNOTTAKE SPR_E_BASE + 0x1015L
#define SPR_E_NOTWRITING SPR_E_BASE + 0x1016L
#define SPR_E_USEEVENTOBJECT SPR_E_BASE + 0x1017L
#define SPR_E_DEVICENOTUSE SPR_E_BASE + 0x1018L
#define SPR_E_CHANNELNOTUSE SPR_E_BASE + 0x1019L
#define SPR_E_NOTFOUNDDEVICENAME SPR_E_BASE + 0x101AL
#define SPR_E_NORECORDDETECT SPR_E_BASE + 0x101BL
#define SPR_E_ALREADYWRITEAUTO SPR_E_BASE + 0x101CL
#define SPR_E_ALREADYWRITEUSER SPR_E_BASE + 0x101DL
#define SPR_E_NOTYOURWRITING SPR_E_BASE + 0x101EL
#define SPR_E_VOICEMAILWORKING SPR_E_BASE + 0x101FL
#define SPR_E_SENDCMDPARAM SPR_E_BASE + 0x1020L
#define SPR_E_SPRECORDPRGNOTFOUND SPR_E_BASE + 0x1021L
#define SPR_E_USERNAMEORPASSWORD SPR_E_BASE + 0x1022L
#define SPR_E_NOCONVERSATION SPR_E_BASE + 0x1023L
#define SPR_E_NORING SPR_E_BASE + 0x1024L
#define SPR_E_UNKNOWNERROR SPR_E_BASE + 0x1100L
#define SPR_E_INVALIDARG 0x80070057L
// Ôëàãè âîçìîæíîñòåé àäàïòåðîâ è êàíàëîâ
#define SPR_DEVICE_SUPPORT_LINESTATE 0x00000001
#define SPR_DEVICE_SUPPORT_VOICEMAIL 0x00000002
#define SPR_DEVICE_SUPPORT_ISDNBRI 0x00000004
#define SPR_DEVICE_SUPPORT_ISDN 0x00000008
#define SPR_DEVICE_SUPPORT_DIGITAL 0x00000010
// Ôëàãè íà÷àëà è îêîí÷àíèÿ çâóêîâûõ äàííûõ
#define SPR_AUDIODATA_BEGIN 0x00000001
#define SPR_AUDIODATA_END 0x00000002
// Âèäû íàáîðà íîìåðà
#define DIAL_PULSE 0x00000001
#define DIAL_TONE 0x00000002
// Ñîîáùåíèÿ ïîäêëþ÷åíèþ ê ïðîãðàììå
#define SPR_MSG_RECORD_START 0x00000001
#define SPR_MSG_RING 0x00000002
#define SPR_MSG_ANI_DETECT 0x00000003
#define SPR_MSG_RECORD_TYPE 0x00000004
#define SPR_MSG_DIALLED_PHONE 0x00000005
#define SPR_MSG_MISSED_PHONE 0x00000006
#define SPR_MSG_RECORD_STOP 0x00000007
#define SPR_MSG_DEVICE_CONNECTED 0x00000008
#define SPR_MSG_DEVICE_DISCONNECTED 0x00000009
#define SPR_MSG_CONVERSATION_BEGIN 0x0000000A
#define SPR_MSG_CONVERSATION_END 0x0000000B
#define SPR_MSG_COMPRESSING_FINISHED 0x0000000C
#define SPR_MSG_FAX_DETECTED 0x0000000D
// Ñîîáùåíèÿ ïîäêëþ÷åíèþ ê êàíàëó
#define SPR_MSG_C_RECORD_START 0x00008001
#define SPR_MSG_C_RING 0x00008002
#define SPR_MSG_C_ANI_DETECT 0x00008003
#define SPR_MSG_C_RECORD_TYPE 0x00008004
#define SPR_MSG_C_DIALLED_PHONE 0x00008005
#define SPR_MSG_C_MISSED_PHONE 0x00008006
#define SPR_MSG_C_RECORD_STOP 0x00008007
#define SPR_MSG_C_AUDIODATA 0x00008008
#define SPR_MSG_C_DIALINGISCOMPLETED 0x00008009
#define SPR_MSG_C_DTMF 0x0000800A
#define SPR_MSG_C_LINEBUSY 0x0000800B
#define SPR_MSG_C_AUDIOBUFSTATE 0x0000800C
#define SPR_MSG_C_LINEOFF 0x0000800D
#define SPR_MSG_C_LINEON 0x0000800E
#define SPR_MSG_C_HANDSETOFF 0x0000800F
#define SPR_MSG_C_HANDSETON 0x00008010
#define SPR_MSG_C_TARGETTAKENHANDSET 0x00008011
#define SPR_MSG_C_CONVERSATION_BEGIN 0x00008012
#define SPR_MSG_C_CONVERSATION_END 0x00008013
#define SPR_MSG_C_PHONEHANDSETON 0x00008014
#define SPR_MSG_C_CALLSENDINGCONTROL 0x00008015
#define SPR_MSG_C_FILECREATEERROR 0x00008016
#define SPR_MSG_C_CARRIER 0x00008017
#define SPR_MSG_C_FAX_DETECTED 0x00008018
// Îáùèå ñîîáùåíèÿ
#define SPR_MSG_CHANGE_CHANNEL_NAME 0x00010001
#define SPR_MSG_TEXT 0x00010002
#define SPR_MSG_POWERSUSPEND 0x00010003
#define SPR_MSG_DESTROY_CONNECTION 0x000100FF
// Ïðè÷èíû ðàçðûâà ñîåäèíåíèÿ MSGDestroyConnection.dwDestroyReason
#define SPR_DR_PROGRAM_EXIT 0x00
#define SPR_DR_DISABLED 0x01
#define SPR_DR_CONNECTIONERROR 0x02
#define SPR_DR_SWITCHEDOFF 0x03
#define SPR_DR_DEVICEERROR 0x04
#define SPR_DR_UNKNOWN 0xFF
// Òèïû çàïèñåé
#define SPR_RT_UNKNOWN 0x0000
#define SPR_RT_RECEIVED 0x0001
#define SPR_RT_DIALLED 0x0002
#define SPR_RT_MISSED 0x0004
#define SPR_RT_BYLEVEL 0x0008
#define SPR_RT_BYCOMMAND 0x0010
#define SPR_RT_VOICEMAIL 0x0020
#define SPR_RT_FRAGMENT 0x0040
// DTMF - ñèãíàëû
#define SPR_DTMF_0 0x00
#define SPR_DTMF_1 0x01
#define SPR_DTMF_2 0x02
#define SPR_DTMF_3 0x03
#define SPR_DTMF_4 0x04
#define SPR_DTMF_5 0x05
#define SPR_DTMF_6 0x06
#define SPR_DTMF_7 0x07
#define SPR_DTMF_8 0x08
#define SPR_DTMF_9 0x09
#define SPR_DTMF_STAR 0x0A
#define SPR_DTMF_POUND 0x0B
#define SPR_DTMF_A 0x0C
#define SPR_DTMF_B 0x0D
#define SPR_DTMF_C 0x0E
#define SPR_DTMF_D 0x0F
#define SPR_DTMF_UNKNOWN 0xFF
// InfoIndex äëÿ ISpRecordChannelClientW.GetInfo
#define SPR_CHANNEL_INFO_CONVERSATIONACTIVE 0x00000001 // WordBool
#define SPR_CHANNEL_INFO_CONVERSATIONDATETIME 0x00000002 // DateTime
#define SPR_CHANNEL_INFO_CONVERSATIONLENG 0x00000003 // LONG
#define SPR_CHANNEL_INFO_RECORDACTIVE 0x00000004 // WordBool
#define SPR_CHANNEL_INFO_RECORDDATETIME 0x00000005 // DateTime
#define SPR_CHANNEL_INFO_RECORDLENG 0x00000006 // LONG
#define SPR_CHANNEL_INFO_PHONEFROM 0x00000007 // BSTR
#define SPR_CHANNEL_INFO_SUBPHONEFROM 0x00000008 // BSTR
#define SPR_CHANNEL_INFO_PHONETO 0x00000009 // BSTR
#define SPR_CHANNEL_INFO_SUBPHONETO 0x0000000A // BSTR
#define SPR_CHANNEL_INFO_RECORDTYPE 0x0000000B // LONG
#define SPR_CHANNEL_INFO_FILENAME 0x0000000C // BSTR
#define SPR_CHANNEL_INFO_RING 0x0000000D // WordBool
#define SPR_CHANNEL_INFO_RINGFIRSTDATETIME 0x0000000E // DateTime
#define SPR_CHANNEL_INFO_RINGLENG 0x0000000F // LONG
#define SPR_CHANNEL_INFO_RINGCOUNT 0x00000010 // LONG
#define SPR_CHANNEL_INFO_HANDSETTAKEN 0x00000011 // WordBool
#define SPR_CHANNEL_INFO_HANDSETTAKEDATETIME 0x00000012 // DateTime
#define SPR_CHANNEL_INFO_HANDSETTAKELENG 0x00000013 // LONG
// Ðàçìåðíîñòè äàííûõ
#define SPR_MAX_MSG_SIZE 32768
#define MAX_CHANNEL_NAME_CHARS 48
#define MAX_PHONE_NUMBER_CHARS 48
#define MAX_SUBPHONE_NUMBER_CHARS 24
#define MAX_DEVICE_NAME_CHARS 64
#define MAX_SEND_AUDIO_DATA_SIZE SPR_MAX_MSG_SIZE - 12
#define MAX_COMMENT_CHARS 4096
#pragma pack(push, 1)
// Çàãîëîâîê ñîîáùåíèÿ
typedef struct _MSGHEADER {
DWORD dwMsgSize;
DWORD dwMsg;
DATE MsgTime;
} MSGHEADER, *PMSGHEADER, *LPMSGHEADER;
// Òèïû äàííûõ ñîîáùåíèé ïðîãðàììû
typedef struct _MSGCHANNELNAME {
MSGHEADER mh;
wchar_t cbChannelName[MAX_CHANNEL_NAME_CHARS];
} MSGCHANNELNAME, *PMSGCHANNELNAME, *LPMSGCHANNELNAME;
typedef struct _MSGRING {
MSGHEADER mh;
wchar_t cbChannelName[MAX_CHANNEL_NAME_CHARS];
DWORD dwRingCount;
} MSGRING, *PMSGRING, *LPMSGRING;
typedef struct _MSGRECORDSTART {
MSGHEADER mh;
wchar_t cbChannelName[MAX_CHANNEL_NAME_CHARS];
DWORD dwRecordType;
wchar_t cbPhoneFrom[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneFrom[MAX_SUBPHONE_NUMBER_CHARS];
wchar_t cbPhoneTo[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneTo[MAX_SUBPHONE_NUMBER_CHARS];
wchar_t cbFileName[MAX_PATH];
} MSGRECORDSTART, *PMSGRECORDSTART, *LPMSGRECORDSTART;
typedef struct _MSGRECORDSTOP {
MSGHEADER mh;
wchar_t cbChannelName[MAX_CHANNEL_NAME_CHARS];
DWORD dwRecordType;
wchar_t cbPhoneFrom[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneFrom[MAX_SUBPHONE_NUMBER_CHARS];
wchar_t cbPhoneTo[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneTo[MAX_SUBPHONE_NUMBER_CHARS]; <------------------------------------------------Эта
wchar_t cbFileName[MAX_PATH];
DWORD dwLeng;
BOOL NormalStop;
BOOL bCompress;
} MSGRECORDSTOP, *PMSGRECORDSTOP, *LPMSGRECORDSTOP;
typedef struct _MSGPHONENUMBER {
MSGHEADER mh;
wchar_t cbChannelName[MAX_CHANNEL_NAME_CHARS];
wchar_t cbPhoneNumber[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneNumber[MAX_SUBPHONE_NUMBER_CHARS];
} MSGPHONENUMBER, *PMSGPHONENUMBER, *LPMSGPHONENUMBER;
typedef struct _MSGMISSEDPHONE {
MSGHEADER mh;
wchar_t cbChannelName[MAX_CHANNEL_NAME_CHARS];
wchar_t cbPhoneFrom[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneFrom[MAX_SUBPHONE_NUMBER_CHARS];
wchar_t cbPhoneTo[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneTo[MAX_SUBPHONE_NUMBER_CHARS];
} MSGMISSEDPHONE, *PMSGMISSEDPHONE, *LPMSGMISSEDPHONE;
typedef struct _MSGRECORDTYPE {
MSGHEADER mh;
wchar_t cbChannelName[MAX_CHANNEL_NAME_CHARS];
DWORD dwRecordType;
} MSGRECORDTYPE, *PMSGRECORDTYPE, *LPMSGRECORDTYPE;
typedef struct _MSGCHANGECHANNELNAME {
MSGHEADER mh;
wchar_t cbOldChannelName[MAX_CHANNEL_NAME_CHARS];
wchar_t cbNewChannelName[MAX_CHANNEL_NAME_CHARS];
} MSGCHANGECHANNELNAME, *PMSGCHANGECHANNELNAME, *LPMSGCHANGECHANNELNAME;
typedef struct _MSGTEXT {
MSGHEADER mh;
wchar_t cbText[1];
} MSGTEXT, *PMSGTEXT, *LPMSGTEXT;
typedef struct _MSGDESTROYCONNECTION {
MSGHEADER mh;
DWORD dwDestroyReason;
} MSGDESTROYCONNECTION, *PMSGDESTROYCONNECTION, *LPMSGDESTROYCONNECTION;
typedef struct _MSGDEVICENAME {
MSGHEADER mh;
wchar_t cbDeviceName[MAX_DEVICE_NAME_CHARS];
} MSGDEVICENAME, *PMSGDEVICENAME, *LPMSGDEVICENAME;
typedef struct _MSGDEVICEDISCONNECT {
MSGHEADER mh;
wchar_t cbDeviceName[MAX_DEVICE_NAME_CHARS];
DWORD dsDisconnectReason;
} MSGDEVICEDISCONNECT, *PMSGDEVICEDISCONNECT, *LPMSGDEVICEDISCONNECT;
typedef struct _MSGCOMPRESSINGFINISHED {
MSGHEADER mh;
wchar_t cbFileName[MAX_PATH];
} MSGCOMPRESSINGFINISHED, *PMSGCOMPRESSINGFINISHED, *LPMSGCOMPRESSINGFINISHED;
// Òèïû äàííûõ ñîîáùåíèé êàíàëà
typedef struct _CHANNELMSGRING {
MSGHEADER mh;
DWORD dwRingCount;
} CHANNELMSGRING, *PCHANNELMSGRING, *LPCHANNELMSGRING;
typedef struct _CHANNELMSGRECORDSTART {
MSGHEADER mh;
DWORD dwRecordType;
wchar_t cbPhoneFrom[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneFrom[MAX_SUBPHONE_NUMBER_CHARS];
wchar_t cbPhoneTo[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneTo[MAX_SUBPHONE_NUMBER_CHARS];
wchar_t cbFileName[MAX_PATH];
} CHANNELMSGRECORDSTART, *PCHANNELMSGRECORDSTART, *LPCHANNELMSGRECORDSTART;
typedef struct _CHANNELMSGRECORDSTOP {
MSGHEADER mh;
DWORD dwRecordType;
wchar_t cbPhoneFrom[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneFrom[MAX_SUBPHONE_NUMBER_CHARS];
wchar_t cbPhoneTo[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneTo[MAX_SUBPHONE_NUMBER_CHARS];
wchar_t cbFileName[MAX_PATH];
DWORD dwLeng;
BOOL NormalStop;
BOOL bCompress;
} CHANNELMSGRECORDSTOP, *PCHANNELMSGRECORDSTOP, *LPCHANNELMSGRECORDSTOP;
typedef struct _CHANNELMSGPHONENUMBER {
MSGHEADER mh;
wchar_t cbPhoneNumber[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneNumber[MAX_SUBPHONE_NUMBER_CHARS];
} CHANNELMSGPHONENUMBER, *PCHANNELMSGPHONENUMBER, *LPCHANNELMSGPHONENUMBER;
typedef struct _CHANNELMSGMISSEDPHONE {
MSGHEADER mh;
wchar_t cbPhoneFrom[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneFrom[MAX_SUBPHONE_NUMBER_CHARS];
wchar_t cbPhoneTo[MAX_PHONE_NUMBER_CHARS];
wchar_t cbSubPhoneTo[MAX_SUBPHONE_NUMBER_CHARS];
} CHANNELMSGMISSEDPHONE, *PCHANNELMSGMISSEDPHONE, *LPCHANNELMSGMISSEDPHONE;
typedef struct _CHANNELMSGRECORDTYPE {
MSGHEADER mh;
DWORD dwRecordType;
} CHANNELMSGRECORDTYPE, *PCHANNELMSGRECORDTYPE, *LPCHANNELMSGRECORDTYPE;
typedef struct _CHANNELMSGDATA {
MSGHEADER mh;
DWORD dwDataSize;
unsigned char cbData[1];
} CHANNELMSGDATA, *PCHANNELMSGDATA, *LPCHANNELMSGDATA;
typedef struct _CHANNELMSGDTMFCODE {
MSGHEADER mh;
DWORD dwDTMFCode;
} CHANNELMSGDTMFCODE, *PCHANNELMSGDTMFCODE, *LPCHANNELMSGDTMFCODE;
typedef struct _CHANNELMSGAUDIOBUFSTATE {
MSGHEADER mh;
DWORD dwMilliseconds;
} CHANNELMSGAUDIOBUFSTATE, *PCHANNELMSGAUDIOBUFSTATE, *LPCHANNELMSGAUDIOBUFSTATE;
#pragma pack(pop)
#endif |