Zammad-tiketit: vastaus Zammad API:n kautta + to-osoite + HTML-viestit
1. Zammad-tiketeille näytetään vastaanotto-osoite (esim. support@web1.fi) lähettäjäkentässä eikä SMTP-postilaatikkolistaa — vastaus menee Zammad API:n kautta. 2. Ensimmäisen artikkelin to-osoite tallennetaan zammad_to_email kenttään on-demand artikkelien haussa. 3. Korjattu _dbFetchRow → _dbFetchOne zammad_reply endpointissa. 4. sanitizeHtml() renderöi viestien HTML turvallisesti. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
11
api.php
11
api.php
@@ -3075,8 +3075,13 @@ switch ($action) {
|
||||
if ($integ && $integ['enabled']) {
|
||||
$z = new ZammadClient($integ['config']['url'], $integ['config']['token']);
|
||||
$articles = $z->getArticles((int)$ticket['zammad_ticket_id']);
|
||||
$toEmail = '';
|
||||
foreach ($articles as $art) {
|
||||
if (($art['internal'] ?? false)) continue;
|
||||
// Tallenna ensimmäisen saapuneen viestin to-osoite
|
||||
if (!$toEmail && ($art['sender'] ?? '') === 'Customer' && !empty($art['to'])) {
|
||||
$toEmail = $art['to'];
|
||||
}
|
||||
$artId = (int)$art['id'];
|
||||
$existingMsg = dbGetMessageByZammadArticleId($ticket['id'], $artId);
|
||||
if ($existingMsg) continue;
|
||||
@@ -3094,6 +3099,10 @@ switch ($action) {
|
||||
$art['message_id'] ?? '', $artId]
|
||||
);
|
||||
}
|
||||
// Tallenna Zammad to-osoite tikettiin
|
||||
if ($toEmail) {
|
||||
_dbExecute("UPDATE tickets SET zammad_to_email = ? WHERE id = ?", [$toEmail, $ticket['id']]);
|
||||
}
|
||||
// Lataa tiketti uudelleen viestien kanssa
|
||||
$tickets = dbLoadTickets($companyId);
|
||||
foreach ($tickets as $t) {
|
||||
@@ -5276,7 +5285,7 @@ switch ($action) {
|
||||
$body = $input['body'] ?? '';
|
||||
if (!$ticketId || !$body) { http_response_code(400); echo json_encode(['error' => 'Tiketti ja viesti vaaditaan']); break; }
|
||||
|
||||
$ticket = _dbFetchRow("SELECT * FROM tickets WHERE id = ? AND company_id = ?", [$ticketId, $companyId]);
|
||||
$ticket = _dbFetchOne("SELECT * FROM tickets WHERE id = ? AND company_id = ?", [$ticketId, $companyId]);
|
||||
if (!$ticket || !$ticket['zammad_ticket_id']) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => 'Tiketti ei ole Zammad-tiketti']);
|
||||
|
||||
Reference in New Issue
Block a user