Signal group and Formstack fixes
This commit is contained in:
parent
00d1fe5eef
commit
0e8c9be247
16 changed files with 692 additions and 142 deletions
|
|
@ -65,10 +65,9 @@ const sendSignalMessageTask = async ({
|
|||
|
||||
try {
|
||||
// Check if 'to' is a group ID (UUID format, group.base64 format, or base64) vs phone number
|
||||
const isUUID =
|
||||
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(
|
||||
to,
|
||||
);
|
||||
const isUUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(
|
||||
to,
|
||||
);
|
||||
const isGroupPrefix = to.startsWith("group.");
|
||||
const isBase64 = /^[A-Za-z0-9+/]+=*$/.test(to) && to.length > 20; // Base64 internal_id
|
||||
const isGroupId = isUUID || isGroupPrefix || isBase64;
|
||||
|
|
@ -79,8 +78,7 @@ const sendSignalMessageTask = async ({
|
|||
to,
|
||||
isGroupId,
|
||||
enableAutoGroups,
|
||||
shouldCreateGroup:
|
||||
enableAutoGroups && !isGroupId && to && conversationId,
|
||||
shouldCreateGroup: enableAutoGroups && !isGroupId && to && conversationId,
|
||||
},
|
||||
"Recipient analysis",
|
||||
);
|
||||
|
|
@ -140,6 +138,7 @@ const sendSignalMessageTask = async ({
|
|||
);
|
||||
|
||||
// Notify Zammad about the new group ID via webhook
|
||||
// Set group_joined: false initially - will be updated when user accepts invitation
|
||||
await worker.addJob("common/notify-webhooks", {
|
||||
backendId: bot.id,
|
||||
payload: {
|
||||
|
|
@ -148,6 +147,7 @@ const sendSignalMessageTask = async ({
|
|||
original_recipient: to,
|
||||
group_id: finalTo,
|
||||
internal_group_id: internalId,
|
||||
group_joined: false,
|
||||
timestamp: new Date().toISOString(),
|
||||
},
|
||||
});
|
||||
|
|
@ -155,8 +155,7 @@ const sendSignalMessageTask = async ({
|
|||
} catch (groupError) {
|
||||
logger.error(
|
||||
{
|
||||
error:
|
||||
groupError instanceof Error ? groupError.message : groupError,
|
||||
error: groupError instanceof Error ? groupError.message : groupError,
|
||||
to,
|
||||
conversationId,
|
||||
},
|
||||
|
|
@ -217,7 +216,9 @@ const sendSignalMessageTask = async ({
|
|||
const MAX_TOTAL_SIZE = getMaxTotalAttachmentSize();
|
||||
|
||||
if (attachments.length > MAX_ATTACHMENTS) {
|
||||
throw new Error(`Too many attachments: ${attachments.length} (max ${MAX_ATTACHMENTS})`);
|
||||
throw new Error(
|
||||
`Too many attachments: ${attachments.length} (max ${MAX_ATTACHMENTS})`,
|
||||
);
|
||||
}
|
||||
|
||||
let totalSize = 0;
|
||||
|
|
@ -228,20 +229,26 @@ const sendSignalMessageTask = async ({
|
|||
const estimatedSize = (attachment.data.length * 3) / 4;
|
||||
|
||||
if (estimatedSize > MAX_ATTACHMENT_SIZE) {
|
||||
logger.warn({
|
||||
filename: attachment.filename,
|
||||
size: estimatedSize,
|
||||
maxSize: MAX_ATTACHMENT_SIZE
|
||||
}, 'Attachment exceeds size limit, skipping');
|
||||
logger.warn(
|
||||
{
|
||||
filename: attachment.filename,
|
||||
size: estimatedSize,
|
||||
maxSize: MAX_ATTACHMENT_SIZE,
|
||||
},
|
||||
"Attachment exceeds size limit, skipping",
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
totalSize += estimatedSize;
|
||||
if (totalSize > MAX_TOTAL_SIZE) {
|
||||
logger.warn({
|
||||
totalSize,
|
||||
maxTotalSize: MAX_TOTAL_SIZE
|
||||
}, 'Total attachment size exceeds limit, skipping remaining');
|
||||
logger.warn(
|
||||
{
|
||||
totalSize,
|
||||
maxTotalSize: MAX_TOTAL_SIZE,
|
||||
},
|
||||
"Total attachment size exceeds limit, skipping remaining",
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -253,8 +260,10 @@ const sendSignalMessageTask = async ({
|
|||
logger.debug(
|
||||
{
|
||||
attachmentCount: validatedAttachments.length,
|
||||
attachmentNames: attachments.slice(0, validatedAttachments.length).map((att) => att.filename),
|
||||
totalSizeBytes: totalSize
|
||||
attachmentNames: attachments
|
||||
.slice(0, validatedAttachments.length)
|
||||
.map((att) => att.filename),
|
||||
totalSizeBytes: totalSize,
|
||||
},
|
||||
"Including attachments in message",
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue