Persist call transcripts and source call audio from DB
This commit is contained in:
@@ -552,6 +552,29 @@ async function createCommunication(auth: AuthContext | null, input: {
|
||||
return { ok: true, id: created.id };
|
||||
}
|
||||
|
||||
async function updateCommunicationTranscript(auth: AuthContext | null, id: string, transcript: string[]) {
|
||||
const ctx = requireAuth(auth);
|
||||
const messageId = String(id ?? "").trim();
|
||||
if (!messageId) throw new Error("id is required");
|
||||
|
||||
const lines = Array.isArray(transcript)
|
||||
? transcript.map((line) => String(line ?? "").trim()).filter(Boolean)
|
||||
: [];
|
||||
|
||||
const updated = await prisma.contactMessage.updateMany({
|
||||
where: {
|
||||
id: messageId,
|
||||
contact: { teamId: ctx.teamId },
|
||||
},
|
||||
data: {
|
||||
transcriptJson: lines,
|
||||
},
|
||||
});
|
||||
|
||||
if (!updated.count) throw new Error("communication not found");
|
||||
return { ok: true, id: messageId };
|
||||
}
|
||||
|
||||
async function updateFeedDecision(auth: AuthContext | null, id: string, decision: "accepted" | "rejected" | "pending", decisionNote?: string) {
|
||||
const ctx = requireAuth(auth);
|
||||
|
||||
@@ -769,6 +792,7 @@ export const crmGraphqlSchema = buildSchema(`
|
||||
toggleContactPin(contact: String!, text: String!): PinToggleResult!
|
||||
createCalendarEvent(input: CreateCalendarEventInput!): CalendarEvent!
|
||||
createCommunication(input: CreateCommunicationInput!): MutationWithIdResult!
|
||||
updateCommunicationTranscript(id: ID!, transcript: [String!]!): MutationWithIdResult!
|
||||
updateFeedDecision(id: ID!, decision: String!, decisionNote: String): MutationWithIdResult!
|
||||
}
|
||||
|
||||
@@ -1027,6 +1051,11 @@ export const crmGraphqlRoot = {
|
||||
context: GraphQLContext,
|
||||
) => createCommunication(context.auth, args.input),
|
||||
|
||||
updateCommunicationTranscript: async (
|
||||
args: { id: string; transcript: string[] },
|
||||
context: GraphQLContext,
|
||||
) => updateCommunicationTranscript(context.auth, args.id, args.transcript),
|
||||
|
||||
updateFeedDecision: async (
|
||||
args: { id: string; decision: "accepted" | "rejected" | "pending"; decisionNote?: string },
|
||||
context: GraphQLContext,
|
||||
|
||||
Reference in New Issue
Block a user