@imessaging/core 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/types.ts +44 -0
package/package.json
CHANGED
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -217,6 +217,25 @@ export type IncomingAttachment = {
|
|
|
217
217
|
sizeBytes?: number;
|
|
218
218
|
};
|
|
219
219
|
|
|
220
|
+
/**
|
|
221
|
+
* Адрес, вложенный в сообщение.
|
|
222
|
+
*
|
|
223
|
+
* Отдельным полем, а не поиском по тексту: половина адресов в тексте НЕ ЛЕЖИТ. Слово со скрытой
|
|
224
|
+
* гиперссылкой («откликнуться»), надпись на кнопке и предпросмотр страницы приходят сущностями
|
|
225
|
+
* разметки, и потребитель, разбирающий `text` регулярным выражением, их не увидит вовсе — а
|
|
226
|
+
* промах здесь выглядит не ошибкой, а вакансией без ссылки.
|
|
227
|
+
*
|
|
228
|
+
* Выбор адреса за потребителем: одному нужна площадка, другому форма выгрузки резюме, и решать за
|
|
229
|
+
* них здесь значит отдавать одному чужое.
|
|
230
|
+
*/
|
|
231
|
+
export type IncomingLink = {
|
|
232
|
+
url: string;
|
|
233
|
+
/** Что видит человек на месте адреса: слово гиперссылки или надпись на кнопке. */
|
|
234
|
+
label?: string;
|
|
235
|
+
/** Где адрес лежал. Разные места — разный смысл, и «кнопка» отличается от «упомянут в тексте». */
|
|
236
|
+
origin: "text" | "markup" | "button" | "preview";
|
|
237
|
+
};
|
|
238
|
+
|
|
220
239
|
/**
|
|
221
240
|
* Входящее сообщение — общий вид для всех каналов.
|
|
222
241
|
*
|
|
@@ -234,8 +253,33 @@ export type IncomingMessage = {
|
|
|
234
253
|
messageId: string;
|
|
235
254
|
text: string;
|
|
236
255
|
attachments: IncomingAttachment[];
|
|
256
|
+
/**
|
|
257
|
+
* Адреса из сообщения, в порядке появления.
|
|
258
|
+
*
|
|
259
|
+
* `undefined` — канал разметку не разбирает вовсе; пустой список — разобрал и не нашёл. Это
|
|
260
|
+
* РАЗНЫЕ вещи: первое молчит о своём незнании, второе утверждает, что адресов нет.
|
|
261
|
+
*/
|
|
262
|
+
links?: IncomingLink[];
|
|
237
263
|
replyToMessageId?: string;
|
|
238
264
|
threadId?: number;
|
|
265
|
+
/**
|
|
266
|
+
* Откуда сообщение переслано. Есть только у форварда.
|
|
267
|
+
*
|
|
268
|
+
* Нужно не для истории: в канале-агрегаторе лежат ЧУЖИЕ сообщения, и владелец вакансии —
|
|
269
|
+
* канал-источник, а не тот, в котором она оказалась. Без этого поля продукт приписал бы её
|
|
270
|
+
* агрегатору, то есть не тому заказчику.
|
|
271
|
+
*
|
|
272
|
+
* `chatId` может отсутствовать: автор форварда вправе скрыть источник — тогда известно только
|
|
273
|
+
* имя (`title`), а иногда и его нет.
|
|
274
|
+
*/
|
|
275
|
+
forwardedFrom?: {
|
|
276
|
+
chatId?: string;
|
|
277
|
+
chatType?: IncomingMessage["chatType"];
|
|
278
|
+
/** Как назван источник в самом форварде: имя канала или человека. */
|
|
279
|
+
title?: string;
|
|
280
|
+
/** Номер сообщения в источнике, если он известен. */
|
|
281
|
+
messageId?: string;
|
|
282
|
+
};
|
|
239
283
|
};
|
|
240
284
|
|
|
241
285
|
/**
|