Split ticket and group name fixes

This commit is contained in:
Darren Clarke 2025-12-19 15:27:27 +01:00
parent 69394c813d
commit a882c9ecff
5 changed files with 37 additions and 7 deletions

View file

@ -282,6 +282,35 @@ const sendSignalMessageTask = async ({
},
"Message sent successfully",
);
// Update group name to use consistent template with ticket number
// This ensures groups created by receive-signal-message get renamed
// to match the template (e.g., "Support Request: 94085")
if (finalTo.startsWith("group.") && conversationId) {
try {
const expectedGroupName = buildSignalGroupName(conversationId);
await groupsClient.v1GroupsNumberGroupidPut({
number: bot.phoneNumber,
groupid: finalTo,
data: {
name: expectedGroupName,
},
});
logger.debug(
{ groupId: finalTo, newName: expectedGroupName },
"Updated group name",
);
} catch (renameError) {
// Non-fatal - group name update is best-effort
logger.warn(
{
error: renameError instanceof Error ? renameError.message : renameError,
groupId: finalTo,
},
"Could not update group name",
);
}
}
} catch (error: any) {
// Try to get the actual error message from the response
if (error.response) {

View file

@ -20,12 +20,6 @@ const envFile = path.resolve(process.cwd(), '.env');
const finalFiles = files[app]
.map((file) => ['-f', `docker/compose/${file}.yml`]).flat();
// Add bridge-dev.yml for dev commands that include zammad
const devAppsWithZammad = ['linkDev', 'bridgeDev', 'all'];
if (devAppsWithZammad.includes(app) && files[app].includes('zammad')) {
finalFiles.push('-f', 'docker-compose.bridge-dev.yml');
}
const finalCommand = command === "up" ? ["up", "-d", "--remove-orphans"] : [command];
const dockerCompose = spawn('docker', ['compose', '--env-file', envFile, ...finalFiles, ...finalCommand]);

View file

@ -66,7 +66,7 @@ RUN if [ "$EMBEDDED" = "true" ] ; then \
sed -i '$ d' /opt/zammad/contrib/nginx/zammad.conf && \
echo "" >> /opt/zammad/contrib/nginx/zammad.conf && \
echo " location /link {" >> /opt/zammad/contrib/nginx/zammad.conf && \
echo " proxy_pass ${LINK_HOST};" >> /opt/zammad/contrib/nginx/zammad.conf && \
echo " set \$link_url ${LINK_HOST}; proxy_pass \$link_url;" >> /opt/zammad/contrib/nginx/zammad.conf && \
echo " proxy_set_header Host \$host;" >> /opt/zammad/contrib/nginx/zammad.conf && \
echo " proxy_set_header X-Real-IP \$remote_addr;" >> /opt/zammad/contrib/nginx/zammad.conf && \
echo " proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;" >> /opt/zammad/contrib/nginx/zammad.conf && \

View file

@ -264,6 +264,11 @@ class ChannelsCdrSignalController < ApplicationController
chat_id: chat_id
}
# Store original recipient phone for group tickets to enable ticket splitting
if is_group_message
cdr_signal_prefs[:original_recipient] = sender_phone_number
end
Rails.logger.info "=== CREATING NEW TICKET ==="
Rails.logger.info "Preferences to be stored:"
Rails.logger.info " - channel_id: #{channel.id}"

View file

@ -42,6 +42,8 @@ module Link::SetupSplitSignalGroup
'chat_id' => original_recipient, # Phone number, NOT group ID
'original_recipient' => original_recipient
}
# Set article type so Zammad shows Signal reply option
child_ticket.create_article_type_id = Ticket::Article::Type.find_by(name: 'cdr_signal')&.id
child_ticket.save!
Rails.logger.info "Signal split: Ticket ##{child_ticket.number} set up for new group (recipient: #{original_recipient})"