@adonis-agora/agent 0.64.0 → 0.65.0

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/src/action-proposal-outcome.d.ts +4 -0
  3. package/dist/src/action-proposal-outcome.d.ts.map +1 -1
  4. package/dist/src/action-proposal-outcome.js +23 -4
  5. package/dist/src/action-proposal-outcome.js.map +1 -1
  6. package/dist/src/action-proposal-text.js +3 -3
  7. package/dist/src/action-proposal-text.js.map +1 -1
  8. package/dist/src/agent-service.d.ts +10 -1
  9. package/dist/src/agent-service.d.ts.map +1 -1
  10. package/dist/src/agent-service.js +3 -2
  11. package/dist/src/agent-service.js.map +1 -1
  12. package/dist/src/channels/adapters/evolution_api.d.ts +7 -2
  13. package/dist/src/channels/adapters/evolution_api.d.ts.map +1 -1
  14. package/dist/src/channels/adapters/evolution_api.js +127 -41
  15. package/dist/src/channels/adapters/evolution_api.js.map +1 -1
  16. package/dist/src/channels/adapters/telegram.d.ts +2 -1
  17. package/dist/src/channels/adapters/telegram.d.ts.map +1 -1
  18. package/dist/src/channels/adapters/telegram.js +57 -4
  19. package/dist/src/channels/adapters/telegram.js.map +1 -1
  20. package/dist/src/channels/adapters/whatsapp_cloud.d.ts +3 -2
  21. package/dist/src/channels/adapters/whatsapp_cloud.d.ts.map +1 -1
  22. package/dist/src/channels/adapters/whatsapp_cloud.js +55 -4
  23. package/dist/src/channels/adapters/whatsapp_cloud.js.map +1 -1
  24. package/dist/src/channels/adapters/whatsmiau.d.ts +5 -3
  25. package/dist/src/channels/adapters/whatsmiau.d.ts.map +1 -1
  26. package/dist/src/channels/adapters/whatsmiau.js +6 -2
  27. package/dist/src/channels/adapters/whatsmiau.js.map +1 -1
  28. package/dist/src/channels/executor.d.ts +116 -0
  29. package/dist/src/channels/executor.d.ts.map +1 -0
  30. package/dist/src/channels/executor.js +138 -0
  31. package/dist/src/channels/executor.js.map +1 -0
  32. package/dist/src/channels/handler.d.ts +228 -89
  33. package/dist/src/channels/handler.d.ts.map +1 -1
  34. package/dist/src/channels/handler.js +845 -337
  35. package/dist/src/channels/handler.js.map +1 -1
  36. package/dist/src/channels/http.d.ts +15 -0
  37. package/dist/src/channels/http.d.ts.map +1 -1
  38. package/dist/src/channels/http.js +43 -0
  39. package/dist/src/channels/http.js.map +1 -1
  40. package/dist/src/channels/index.d.ts +7 -4
  41. package/dist/src/channels/index.d.ts.map +1 -1
  42. package/dist/src/channels/index.js +6 -3
  43. package/dist/src/channels/index.js.map +1 -1
  44. package/dist/src/channels/texts.d.ts +102 -0
  45. package/dist/src/channels/texts.d.ts.map +1 -0
  46. package/dist/src/channels/texts.js +79 -0
  47. package/dist/src/channels/texts.js.map +1 -0
  48. package/dist/src/channels/types.d.ts +61 -1
  49. package/dist/src/channels/types.d.ts.map +1 -1
  50. package/dist/src/durable/agent-run-context.d.ts +10 -0
  51. package/dist/src/durable/agent-run-context.d.ts.map +1 -1
  52. package/dist/src/durable/agent-run-context.js +22 -0
  53. package/dist/src/durable/agent-run-context.js.map +1 -1
  54. package/dist/src/index.d.ts +2 -2
  55. package/dist/src/index.d.ts.map +1 -1
  56. package/dist/src/index.js +1 -1
  57. package/dist/src/index.js.map +1 -1
  58. package/package.json +1 -1
  59. package/skills/agent-setup/SKILL.md +11 -4
@@ -1,4 +1,4 @@
1
- import { ChannelDeliveryError, ChannelMediaTooLargeError, decodeBase64, fetchBytes, postJson, queryParam, record, safeEqual, sizeOf, str, } from '../http.js';
1
+ import { ChannelDeliveryError, ChannelMediaTooLargeError, decodeBase64, fetchBytes, mediaFilename, postJson, queryParam, record, safeEqual, sizeOf, str, } from '../http.js';
2
2
  const PHONE_JID = /^(\d{5,20})@s\.whatsapp\.net$/;
3
3
  /** A phone jid's digits; any other jid as is. */
4
4
  function addressOf(jid) {
@@ -68,29 +68,61 @@ function mediaOf(message, key) {
68
68
  }
69
69
  return undefined;
70
70
  }
71
+ const LID_JID = /@lid$/;
72
+ /** The message types of a button or list reply. */
73
+ const REPLY_TYPES = new Set([
74
+ 'buttonsResponseMessage',
75
+ 'templateButtonReplyMessage',
76
+ 'listResponseMessage',
77
+ 'interactiveResponseMessage',
78
+ ]);
79
+ /**
80
+ * Is the message from the person (not sent by the instance itself)? Explicit `fromMe: false` → yes,
81
+ * `fromMe: true` → no. Absent from both the key and the data — Whatsmiau (Go, `omitempty`) drops a
82
+ * `false` — only a `status: 'received'` says it came in; any other status is never assumed incoming,
83
+ * so the agent never answers its own messages.
84
+ */
85
+ function direction(key, data) {
86
+ if (key.fromMe === true || data.fromMe === true)
87
+ return 'own';
88
+ if (key.fromMe === false || data.fromMe === false)
89
+ return 'incoming';
90
+ if (key.fromMe === undefined && data.fromMe === undefined && data.status === 'received') {
91
+ return 'incoming';
92
+ }
93
+ return 'unknown';
94
+ }
71
95
  function parseOne(data, options) {
72
96
  const key = record(data.key);
73
97
  const remoteJid = str(key?.remoteJid);
74
98
  const id = str(key?.id);
75
99
  if (!key || !remoteJid || !id)
76
- return null;
77
- // Only a message explicitly marked as incoming: never assume a missing `fromMe` means "not mine".
78
- if (!(key.fromMe === false || data.fromMe === false) || key.fromMe === true)
79
- return null;
80
- if (remoteJid.endsWith('@broadcast') || remoteJid.endsWith('@newsletter'))
81
- return null;
100
+ return { skipped: 'no message key', unexpected: true };
101
+ const from = direction(key, data);
102
+ if (from === 'own')
103
+ return { skipped: 'own message' };
104
+ if (from === 'unknown') {
105
+ return { skipped: `fromMe missing and status ${String(data.status)}`, unexpected: true };
106
+ }
107
+ if (remoteJid.endsWith('@broadcast') || remoteJid.endsWith('@newsletter')) {
108
+ return { skipped: 'broadcast' };
109
+ }
82
110
  const group = remoteJid.endsWith('@g.us');
83
111
  if (group && options.groups !== true)
84
- return null;
85
- // A `@lid` chat (`addressingMode: 'lid'`) hides the number; Evolution adds it alongside
86
- // (`remoteJidAlt`, older versions `senderPn`) when it knows it.
87
- const phoneJid = [remoteJid, str(key.remoteJidAlt), str(key.senderPn)].find((jid) => jid !== undefined && PHONE_JID.test(jid));
88
- const sender = group ? str(key.participant) : (phoneJid ?? remoteJid);
112
+ return { skipped: 'group' };
113
+ // A chat is addressed by its phone jid or by its `@lid` one (`addressingMode: 'lid'`), and the
114
+ // server adds the other alongside when it knows it: Evolution `remoteJidAlt` (older versions
115
+ // `senderPn`), Whatsmiau `remoteLid`. The phone wins, so the chat keeps one id either way.
116
+ const aliases = [remoteJid, str(key.remoteJidAlt), str(key.senderPn), str(key.remoteLid)];
117
+ const phoneJid = aliases.find((jid) => jid !== undefined && PHONE_JID.test(jid));
118
+ const lidJid = aliases.find((jid) => jid !== undefined && LID_JID.test(jid));
119
+ const chat = phoneJid ?? lidJid ?? remoteJid;
120
+ const sender = group ? str(key.participant) : chat;
89
121
  if (sender === undefined)
90
- return null;
122
+ return { skipped: 'no group participant', unexpected: true };
91
123
  const message = record(data.message);
92
124
  if (!message)
93
- return null;
125
+ return { skipped: 'no message body' };
94
126
  const button = buttonReply(message);
95
127
  const file = button ? undefined : mediaOf(message, key);
96
128
  const text = button
@@ -98,36 +130,78 @@ function parseOne(data, options) {
98
130
  : file
99
131
  ? (file.caption ?? '')
100
132
  : (str(message.conversation) ?? str(record(message.extendedTextMessage)?.text));
101
- if (text === undefined || (text.trim() === '' && !file))
102
- return null;
133
+ if (text === undefined || (text.trim() === '' && !file)) {
134
+ return { skipped: 'unsupported message type' };
135
+ }
136
+ // Whatsmiau forwards a button press as `messageType: 'buttonsResponseMessage'` with only the
137
+ // label in `message.conversation` — the button's id is lost.
138
+ const pressWithoutId = !button && !file && REPLY_TYPES.has(str(data.messageType) ?? '');
103
139
  return {
104
140
  id,
105
141
  from: addressOf(sender),
106
- // Replies go to the phone when it is known — `sendText`'s `number` is a phone number, and the
107
- // same chat arrives under its phone jid or its `@lid` one; the `@lid` jid only when it is all
108
- // there is.
109
- conversation: group ? remoteJid : (phoneJid ?? remoteJid),
142
+ // Replies go to the phone when it is known — `sendText`'s `number` is a phone number; the `@lid`
143
+ // jid only when it is all there is.
144
+ conversation: group ? remoteJid : chat,
110
145
  text: text.trim(),
111
146
  ...(button ? { buttonId: button.id } : {}),
147
+ ...(pressWithoutId ? { buttonWithoutId: true } : {}),
112
148
  ...(file ? { media: [file.media] } : {}),
113
149
  raw: data,
114
150
  };
115
151
  }
152
+ /** The messages in a webhook body, or why there are none. */
153
+ function readBody(body, options) {
154
+ const envelope = record(body);
155
+ if (!envelope)
156
+ return { messages: null, ignored: { reason: 'not a JSON object' } };
157
+ const rawEvent = str(envelope.event);
158
+ const event = rawEvent?.toLowerCase().replace(/_/g, '.');
159
+ const named = rawEvent !== undefined ? { event: rawEvent } : {};
160
+ if (event !== 'messages.upsert') {
161
+ return { messages: null, ignored: { ...named, reason: 'not a messages.upsert event' } };
162
+ }
163
+ const from = str(envelope.instance);
164
+ if (from !== undefined && from !== options.instance) {
165
+ return { messages: null, ignored: { ...named, reason: 'another instance' } };
166
+ }
167
+ const items = (Array.isArray(envelope.data) ? envelope.data : [envelope.data])
168
+ .map((item) => record(item))
169
+ .filter((item) => item !== undefined)
170
+ .map((item) => parseOne(item, options));
171
+ const messages = items.filter((item) => !('skipped' in item));
172
+ if (messages.length > 0)
173
+ return { messages };
174
+ const skipped = items.filter((item) => 'skipped' in item);
175
+ if (skipped.length === 0)
176
+ return { messages, ignored: { ...named, reason: 'no data' } };
177
+ return {
178
+ messages,
179
+ ignored: {
180
+ ...named,
181
+ reason: [...new Set(skipped.map((item) => item.skipped))].join(', '),
182
+ ...(skipped.some((item) => item.unexpected) ? { unexpected: true } : {}),
183
+ },
184
+ };
185
+ }
116
186
  /** The WhatsApp reply-button limit. */
117
187
  const MAX_BUTTONS = 3;
188
+ /** The longest caption WhatsApp shows under a file. */
189
+ const MAX_CAPTION = 1024;
190
+ /** The longest footer a buttons message carries. */
191
+ const MAX_FOOTER = 60;
118
192
  /**
119
193
  * WhatsApp through [Evolution API](https://doc.evolution-api.com) v2 (or a server with the same
120
194
  * routes). Point the instance's webhook — event `MESSAGES_UPSERT` — at the route, with the token:
121
195
  * `https://app.example.com/webhooks/whatsapp?token=<webhookToken>`.
122
196
  *
123
197
  * Reads `messages.upsert` (text, extended text, button and list replies, images, audio, video,
124
- * documents and stickers); ignores the instance's own messages, broadcasts and (unless `groups`)
125
- * groups. Sends with `POST {url}/message/sendText/{instance}`. Downloads media from the webhook's
198
+ * documents and stickers); ignores the instance's own messages (an item without `fromMe` counts as
199
+ * incoming only with `status: 'received'`), broadcasts and (unless `groups`) groups. Sends with `POST {url}/message/sendText/{instance}`. Downloads media from the webhook's
126
200
  * inline `base64` (Evolution's "webhook base64" setting), else its `mediaUrl`, else
127
201
  * `POST {url}/chat/getBase64FromMediaMessage/{instance}`.
128
202
  */
129
203
  export function evolutionApi(options) {
130
- return evolutionFormatAdapter(options, { buttons: false });
204
+ return evolutionFormatAdapter(options, { buttons: false, instructionWithButtons: true });
131
205
  }
132
206
  /**
133
207
  * The adapter for any server speaking Evolution's webhook and routes — `evolutionApi()` and
@@ -148,6 +222,8 @@ export function evolutionFormatAdapter(options, defaults) {
148
222
  ...(buttons ? { buttons: MAX_BUTTONS } : {}),
149
223
  markdown: 'whatsapp',
150
224
  maxLength: options.maxLength ?? 4096,
225
+ media: true,
226
+ maxCaptionLength: MAX_CAPTION,
151
227
  },
152
228
  verify(request) {
153
229
  if (options.webhookToken === false)
@@ -162,21 +238,10 @@ export function evolutionFormatAdapter(options, defaults) {
162
238
  return supplied.some((token) => safeEqual(token, options.webhookToken));
163
239
  },
164
240
  parse(body) {
165
- const envelope = record(body);
166
- if (!envelope)
167
- return null;
168
- const event = str(envelope.event)?.toLowerCase().replace(/_/g, '.');
169
- if (event !== 'messages.upsert')
170
- return null;
171
- const from = str(envelope.instance);
172
- if (from !== undefined && from !== options.instance)
173
- return null;
174
- const items = Array.isArray(envelope.data) ? envelope.data : [envelope.data];
175
- return items
176
- .map((item) => record(item))
177
- .filter((item) => item !== undefined)
178
- .map((item) => parseOne(item, options))
179
- .filter((item) => item !== null);
241
+ return readBody(body, options).messages;
242
+ },
243
+ ignored(body) {
244
+ return readBody(body, options).ignored ?? null;
180
245
  },
181
246
  async download(media, { maxBytes }) {
182
247
  const ref = media.ref;
@@ -215,12 +280,30 @@ export function evolutionFormatAdapter(options, defaults) {
215
280
  },
216
281
  async send(conversation, message) {
217
282
  const number = addressOf(conversation);
283
+ if (message.media !== undefined) {
284
+ const { media } = message;
285
+ const source = media.url ?? media.data?.toString('base64');
286
+ if (source === undefined)
287
+ throw new Error(`${name}: a file needs a url or its data`);
288
+ await post('/message/sendMedia', {
289
+ number,
290
+ mediatype: media.kind,
291
+ media: source,
292
+ ...(media.contentType !== undefined ? { mimetype: media.contentType } : {}),
293
+ ...(message.text !== '' ? { caption: message.text.slice(0, MAX_CAPTION) } : {}),
294
+ ...(media.kind === 'document' ? { fileName: mediaFilename(media) } : {}),
295
+ });
296
+ return;
297
+ }
218
298
  if (message.buttons !== undefined && buttons) {
219
299
  const [first = '', ...rest] = message.text.split('\n');
220
300
  const title = first.replace(/[*_~]/g, '').trim();
221
- // The reply instruction rides along: a phone that shows the text but not the buttons can
222
- // still answer by text.
223
- const description = [rest.join('\n').trim(), message.instruction?.trim() ?? '']
301
+ // Where buttons may not render, the reply instruction rides along: a phone that shows the
302
+ // text but not the buttons can still answer by text.
303
+ const instruction = defaults.instructionWithButtons
304
+ ? (message.instruction?.trim() ?? '')
305
+ : '';
306
+ const description = [rest.join('\n').trim(), instruction]
224
307
  .filter((part) => part !== '')
225
308
  .join('\n\n');
226
309
  if (title.length <= 60 && description.length <= 1024 && message.buttons.length > 0) {
@@ -229,6 +312,9 @@ export function evolutionFormatAdapter(options, defaults) {
229
312
  number,
230
313
  title,
231
314
  description: description === '' ? title : description,
315
+ ...(message.footer !== undefined && message.footer.trim() !== ''
316
+ ? { footer: message.footer.replace(/[*_~]/g, '').trim().slice(0, MAX_FOOTER) }
317
+ : {}),
232
318
  buttons: message.buttons.slice(0, MAX_BUTTONS).map((button) => ({
233
319
  type: 'reply',
234
320
  displayText: button.label.slice(0, 20),
@@ -1 +1 @@
1
- {"version":3,"file":"evolution_api.js","sourceRoot":"","sources":["../../../../src/channels/adapters/evolution_api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evolution_api.js","sourceRoot":"","sources":["../../../../src/channels/adapters/evolution_api.ts"],"names":[],"mappings":"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"}
@@ -28,7 +28,8 @@ export interface TelegramOptions {
28
28
  * with `getFile`, which serves up to 20 MB) and inline-keyboard presses (`callback_query`, answered with
29
29
  * `answerCallbackQuery` and the keyboard removed so it cannot be pressed twice); ignores bots and
30
30
  * (unless `groups`) group chats. Sends `sendMessage` in MarkdownV2 — when Telegram refuses the
31
- * formatting, the same text goes again as plain text.
31
+ * formatting, the same text goes again as plain text. Files go with `sendPhoto` / `sendDocument` /
32
+ * `sendAudio` / `sendVideo` (by URL, or uploaded as `multipart/form-data` when given as bytes).
32
33
  */
33
34
  export declare function telegram(options: TelegramOptions): ChannelAdapter;
34
35
  //# sourceMappingURL=telegram.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../../../src/channels/adapters/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAQlB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AA4DD;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAuIjE"}
1
+ {"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../../../src/channels/adapters/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAUlB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,cAAc,EAMf,MAAM,aAAa,CAAC;AAWrB,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AA4DD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAuLjE"}
@@ -1,5 +1,13 @@
1
- import { ChannelDeliveryError, ChannelMediaTooLargeError, fetchBytes, postJson, record, safeEqual, sizeOf, str, } from '../http.js';
1
+ import { ChannelDeliveryError, ChannelMediaTooLargeError, fetchBytes, mediaFilename, postForm, postJson, record, safeEqual, sizeOf, str, } from '../http.js';
2
2
  import { unescapeTelegramMarkdown } from '../markdown.js';
3
+ const FILE_METHODS = {
4
+ image: ['sendPhoto', 'photo'],
5
+ document: ['sendDocument', 'document'],
6
+ audio: ['sendAudio', 'audio'],
7
+ video: ['sendVideo', 'video'],
8
+ };
9
+ /** The longest caption Telegram takes. */
10
+ const MAX_CAPTION = 1024;
3
11
  /** Telegram's limits: message text, buttons we put in one keyboard. */
4
12
  const MAX_TEXT = 4096;
5
13
  const MAX_BUTTONS = 8;
@@ -63,7 +71,8 @@ function pressedLabel(message, data) {
63
71
  * with `getFile`, which serves up to 20 MB) and inline-keyboard presses (`callback_query`, answered with
64
72
  * `answerCallbackQuery` and the keyboard removed so it cannot be pressed twice); ignores bots and
65
73
  * (unless `groups`) group chats. Sends `sendMessage` in MarkdownV2 — when Telegram refuses the
66
- * formatting, the same text goes again as plain text.
74
+ * formatting, the same text goes again as plain text. Files go with `sendPhoto` / `sendDocument` /
75
+ * `sendAudio` / `sendVideo` (by URL, or uploaded as `multipart/form-data` when given as bytes).
67
76
  */
68
77
  export function telegram(options) {
69
78
  const name = options.name ?? 'telegram';
@@ -73,6 +82,40 @@ export function telegram(options) {
73
82
  const origin = (options.apiUrl ?? 'https://api.telegram.org').replace(/\/+$/, '');
74
83
  const api = `${origin}/bot${options.botToken}`;
75
84
  const call = (method, body) => postJson(name, fetcher, `${api}/${method}`, {}, body, timeoutMs);
85
+ /** `sendPhoto` / `sendDocument` / `sendAudio` / `sendVideo`, by URL or uploaded. */
86
+ const sendFile = async (chatId, media, caption) => {
87
+ const [method, field] = FILE_METHODS[media.kind];
88
+ const formatted = caption !== '' && markdown ? { parse_mode: 'MarkdownV2' } : {};
89
+ const send = (text, format) => {
90
+ if (media.url !== undefined)
91
+ return call(method, {
92
+ chat_id: chatId,
93
+ [field]: media.url,
94
+ ...(text !== '' ? { caption: text, ...format } : {}),
95
+ });
96
+ if (media.data === undefined)
97
+ throw new Error(`${name}: a file needs a url or its data`);
98
+ return postForm(name, fetcher, `${api}/${method}`, {}, {
99
+ chat_id: chatId,
100
+ ...(text !== '' ? { caption: text, ...format } : {}),
101
+ [field]: {
102
+ data: media.data,
103
+ contentType: media.contentType ?? 'application/octet-stream',
104
+ filename: mediaFilename(media),
105
+ },
106
+ }, timeoutMs);
107
+ };
108
+ try {
109
+ await send(caption, formatted);
110
+ }
111
+ catch (error) {
112
+ if (!('parse_mode' in formatted))
113
+ throw error;
114
+ if (!(error instanceof ChannelDeliveryError) || error.status !== 400)
115
+ throw error;
116
+ await send(unescapeTelegramMarkdown(caption), {});
117
+ }
118
+ };
76
119
  const privateOnly = (chat) => options.groups === true || chat?.type === 'private';
77
120
  return {
78
121
  name,
@@ -80,6 +123,8 @@ export function telegram(options) {
80
123
  buttons: MAX_BUTTONS,
81
124
  markdown: markdown ? 'telegram' : 'none',
82
125
  maxLength: MAX_TEXT,
126
+ media: true,
127
+ maxCaptionLength: MAX_CAPTION,
83
128
  },
84
129
  verify(request) {
85
130
  return safeEqual(request.header('x-telegram-bot-api-secret-token'), options.secretToken);
@@ -161,9 +206,17 @@ export function telegram(options) {
161
206
  };
162
207
  },
163
208
  async send(conversation, message) {
209
+ if (message.media !== undefined) {
210
+ await sendFile(conversation, message.media, message.text.slice(0, MAX_CAPTION));
211
+ return;
212
+ }
213
+ // Telegram has no footer: it goes under the text.
214
+ const text = message.footer !== undefined && message.footer.trim() !== ''
215
+ ? `${message.text}\n\n${message.footer}`
216
+ : message.text;
164
217
  const body = {
165
218
  chat_id: conversation,
166
- text: message.text,
219
+ text,
167
220
  link_preview_options: { is_disabled: true },
168
221
  ...(message.buttons !== undefined && message.buttons.length > 0
169
222
  ? {
@@ -188,7 +241,7 @@ export function telegram(options) {
188
241
  // "can't parse entities": the same words, unformatted, beat no answer.
189
242
  if (!(error instanceof ChannelDeliveryError) || error.status !== 400)
190
243
  throw error;
191
- await call('sendMessage', { ...body, text: unescapeTelegramMarkdown(message.text) });
244
+ await call('sendMessage', { ...body, text: unescapeTelegramMarkdown(text) });
192
245
  }
193
246
  },
194
247
  };
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../../../src/channels/adapters/telegram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../../../src/channels/adapters/telegram.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,9 @@ export interface WhatsappCloudOptions {
24
24
  *
25
25
  * Verifies `X-Hub-Signature-256` over the raw body; reads text, interactive button/list replies,
26
26
  * template quick replies and media (image, audio, video, document, sticker — downloaded through the
27
- * Graph API media endpoint) addressed to `phoneNumberId` (status updates are ignored); sends text and
28
- * interactive reply buttons (at most 3, 20-character titles).
27
+ * Graph API media endpoint) addressed to `phoneNumberId` (status updates are ignored); sends text,
28
+ * interactive reply buttons (at most 3, 20-character titles, with a footer) and files (image,
29
+ * document, audio, video — by link, or uploaded first when given as bytes).
29
30
  */
30
31
  export declare function whatsappCloud(options: WhatsappCloudOptions): ChannelAdapter;
31
32
  //# sourceMappingURL=whatsapp_cloud.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"whatsapp_cloud.d.ts","sourceRoot":"","sources":["../../../../src/channels/adapters/whatsapp_cloud.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,YAAY,EASlB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,oBAAoB;IACnC,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAwDD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,CAmI3E"}
1
+ {"version":3,"file":"whatsapp_cloud.d.ts","sourceRoot":"","sources":["../../../../src/channels/adapters/whatsapp_cloud.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,YAAY,EAWlB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,cAAc,EAMf,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,oBAAoB;IACnC,6FAA6F;IAC7F,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,SAAS,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AA0DD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,CA2L3E"}
@@ -1,10 +1,12 @@
1
1
  import { createHmac } from 'node:crypto';
2
- import { ChannelDeliveryError, ChannelMediaTooLargeError, fetchBytes, postJson, queryParam, record, safeEqual, sizeOf, str, } from '../http.js';
2
+ import { ChannelDeliveryError, ChannelMediaTooLargeError, fetchBytes, mediaFilename, postForm, postJson, queryParam, record, safeEqual, sizeOf, str, } from '../http.js';
3
3
  /** Cloud API limits: text body, interactive body, button title. */
4
4
  const MAX_TEXT = 4096;
5
5
  const MAX_INTERACTIVE_BODY = 1024;
6
6
  const MAX_BUTTON_TITLE = 20;
7
7
  const MAX_BUTTONS = 3;
8
+ const MAX_CAPTION = 1024;
9
+ const MAX_FOOTER = 60;
8
10
  const MEDIA_TYPES = ['image', 'audio', 'video', 'document', 'sticker'];
9
11
  /** The file a Cloud API message carries (`{ id, mime_type, caption?, filename? }`), and its caption. */
10
12
  function mediaOf(message) {
@@ -58,8 +60,9 @@ function parseMessage(message) {
58
60
  *
59
61
  * Verifies `X-Hub-Signature-256` over the raw body; reads text, interactive button/list replies,
60
62
  * template quick replies and media (image, audio, video, document, sticker — downloaded through the
61
- * Graph API media endpoint) addressed to `phoneNumberId` (status updates are ignored); sends text and
62
- * interactive reply buttons (at most 3, 20-character titles).
63
+ * Graph API media endpoint) addressed to `phoneNumberId` (status updates are ignored); sends text,
64
+ * interactive reply buttons (at most 3, 20-character titles, with a footer) and files (image,
65
+ * document, audio, video — by link, or uploaded first when given as bytes).
63
66
  */
64
67
  export function whatsappCloud(options) {
65
68
  const name = options.name ?? 'whatsapp';
@@ -69,9 +72,31 @@ export function whatsappCloud(options) {
69
72
  const endpoint = `https://graph.facebook.com/${graphVersion}/${encodeURIComponent(options.phoneNumberId)}/messages`;
70
73
  const post = (body) => postJson(name, fetcher, endpoint, { authorization: `Bearer ${options.accessToken}` }, { messaging_product: 'whatsapp', recipient_type: 'individual', ...body }, timeoutMs);
71
74
  const sendText = (to, body) => post({ to, type: 'text', text: { body, preview_url: false } });
75
+ /** Bytes are uploaded first (`POST /{phone-number-id}/media`); the message names the upload. */
76
+ const upload = async (media) => {
77
+ const answer = record(await postForm(name, fetcher, endpoint.replace(/\/messages$/, '/media'), { authorization: `Bearer ${options.accessToken}` }, {
78
+ messaging_product: 'whatsapp',
79
+ type: media.contentType ?? 'application/octet-stream',
80
+ file: {
81
+ data: media.data,
82
+ contentType: media.contentType ?? 'application/octet-stream',
83
+ filename: mediaFilename(media),
84
+ },
85
+ }, timeoutMs));
86
+ const id = str(answer?.id);
87
+ if (id === undefined)
88
+ throw new ChannelDeliveryError(name, null, `${name}: upload failed`);
89
+ return id;
90
+ };
72
91
  return {
73
92
  name,
74
- capabilities: { buttons: MAX_BUTTONS, markdown: 'whatsapp', maxLength: MAX_TEXT },
93
+ capabilities: {
94
+ buttons: MAX_BUTTONS,
95
+ markdown: 'whatsapp',
96
+ maxLength: MAX_TEXT,
97
+ media: true,
98
+ maxCaptionLength: MAX_CAPTION,
99
+ },
75
100
  challenge(request) {
76
101
  if (request.method !== 'GET')
77
102
  return null;
@@ -144,6 +169,29 @@ export function whatsappCloud(options) {
144
169
  };
145
170
  },
146
171
  async send(conversation, message) {
172
+ if (message.media !== undefined) {
173
+ const { media } = message;
174
+ const source = media.url !== undefined
175
+ ? { link: media.url }
176
+ : media.data !== undefined
177
+ ? { id: await upload({ ...media, data: media.data }) }
178
+ : undefined;
179
+ if (source === undefined)
180
+ throw new Error(`${name}: a file needs a url or its data`);
181
+ await post({
182
+ to: conversation,
183
+ type: media.kind,
184
+ [media.kind]: {
185
+ ...source,
186
+ // Audio carries no caption on WhatsApp.
187
+ ...(message.text !== '' && media.kind !== 'audio'
188
+ ? { caption: message.text.slice(0, MAX_CAPTION) }
189
+ : {}),
190
+ ...(media.kind === 'document' ? { filename: mediaFilename(media) } : {}),
191
+ },
192
+ });
193
+ return;
194
+ }
147
195
  if (message.buttons === undefined || message.buttons.length === 0) {
148
196
  await sendText(conversation, message.buttons === undefined ? message.text : message.fallbackText);
149
197
  return;
@@ -163,6 +211,9 @@ export function whatsappCloud(options) {
163
211
  interactive: {
164
212
  type: 'button',
165
213
  body: { text: body },
214
+ ...(message.footer !== undefined && message.footer.trim() !== ''
215
+ ? { footer: { text: message.footer.replace(/[*_~]/g, '').trim().slice(0, MAX_FOOTER) } }
216
+ : {}),
166
217
  action: {
167
218
  buttons: message.buttons.slice(0, MAX_BUTTONS).map((button) => ({
168
219
  type: 'reply',