Автозаполнение поля "копия"

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
alidml
OTRS Новобранец
Сообщения: 1
Зарегистрирован: 04 сен 2019, 09:42

Автозаполнение поля "копия"

Сообщение alidml » 04 сен 2019, 10:16

Добрый день.
OTRS 6.0.10
Хочу что бы при создании ответа на заявку (AgentTicketCompose) автоматически заполнялось поле "копия" по аналоги с полем "получатель"
Для этого создал динамическое поле ccemail откуда будет браться нужный email.
Проанализировал существующий механизм заметил что значения поля получатель передаётся через скрипт Core.Config.AddConfig("EmailAddressesTo":[{"CustomerKey":"%ключ получателя%,"CustomerTicketText":"%Фио получателя <%email получателя%>"}]

В AgentTicketCompose.pm есть аналогичный механизм для копии EmailAddressesСс

Вопрос, где и каким образом я могу задать значение переменной EmailAddressesCc?

Пока просто вставил в шаблоне AgentTicketCompose.tt

Код: Выделить всё

 <Input id="CcCustomer" ...value="[% Data.DynamicFields_ccemail | html %]"...>
но поле необходимо "прожимать энтером", что бы запись email подтянулась.

Хочется автоматики.

alex.t
OTRS Новобранец
Сообщения: 30
Зарегистрирован: 29 апр 2018, 09:26
Благодарил (а): 1 раз
Поблагодарили: 9 раз

Re: Автозаполнение поля "копия"

Сообщение alex.t » 05 сен 2019, 11:27

Добрый день!

Находим файл AgentTicketCompose.pm, в коде ищем где происходит отправка '# send email' и перед отправкой добавляем следующий код:

Код: Выделить всё

        # Получаем дин поле:
        my $DF_ccmail = $Kernel::OM->Get('Kernel::System::DynamicField')->DynamicFieldGet( Name => 'ccemail' );  

        # Проверка на существование дин поля 'ccemail':
        unless ( $DF_ccmail ) 
        {
            # Пишем в лог и консоль что дин поля нет:
            $Kernel::OM->Get('Kernel::System::Log')->Log(
                Priority => 'error',
                Message  => "Dynamic field 'ccemail' not defined!",
            );
        }
        else 
        {   
            # Получаем текст из поля 'ccemail':
            my $DFV_email = $Kernel::OM->Get('Kernel::System::DynamicField::Backend')->ValueGet(
                DynamicFieldConfig => $DF_ccmail,
                ObjectID           => $Self->{TicketID}
            );

            # Если в копии кто то есть, то добавляем email из 'ccemail':
            if ( $GetParam{Cc} ) { $GetParam{Cc} .= ', ' . $DFV_email }
            # Иначе записываем email из 'ccemail':
            else { $GetParam{Cc} = $DFV_email }            
        }
        # ---

        # send email
        my $ArticleID = $TicketObject->ArticleSend(
            ArticleTypeID  => $ArticleTypeID,
            SenderType     => 'agent',
            TicketID       => $Self->{TicketID},
            HistoryType    => 'SendAnswer',
            HistoryComment => "\%\%$Recipients",
            From           => $GetParam{From},
            To             => $GetParam{To},
            Cc             => $GetParam{Cc},
            Bcc            => $GetParam{Bcc},
            Subject        => $GetParam{Subject},
            UserID         => $Self->{UserID},
            Body           => $GetParam{Body},
            InReplyTo      => $GetParam{InReplyTo},
            References     => $GetParam{References},
            Charset        => $LayoutObject->{UserCharset},
            MimeType       => $MimeType,
            Attachment     => \@AttachmentData,
            %ArticleParam,
        );
При отправке в экшене AgentTicketCompose email не отобразится, но письмо отправится, в копии будет указан email из ccemail.
На 5 версии работает.

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Автозаполнение поля "копия"

Сообщение alexus » 23 сен 2019, 23:28

Было бы здорово запостить для памяти в How-to!
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

Ответить