Предыдущая статья курса: Работа с внешними системами. Возможности интеграции
Предыдущее задание курса: Задание 9. Пользовательские действия в карточке
Задание
Данное задание состоит из трёх отдельных пунктов:
- Отправка email-уведомлений при изменении статуса Обращения
- Разработка сервиса для создания обращений из внешних систем
- Базовая интеграция с YandexGPT
Отправка уведомлений
Необходимо разработать сервис, который будет подписываться на события по изменению статуса в обращении (поле Ticket.state), и при изменении статуса, будет отправлять контакту Email-уведомление.
В рамках данного задания, отправка email-уведомлений должна быть реализована с помощью служебного сценария.
Перед началом работ, необходимо добавить в класс Контакт (Contact) новое свойство - Адрес Email (тип base/String).
Созданный сервис должен реализовывать следующую логику:
- Сервис подписывается на события изменения объекта Ticket,
- При получении события, сервис достает из Invocation информацию, отличается ли значение State в старой и новой версии данных
- Если значение State было изменено, сервис получает значение адреса email из объекта Contact по идентификатору, сохраненному в Ticket
- Сервис запускает служебный сценарий, передавая в него текущий статус и email для отправки нотификации
После разработки сервиса, необходимо реализовать служебный сценарий, который в зависимости от статуса будет отправлять разный текст нотификации - для перевода в статусы "В работе", "Закрыто" и "Отменено". Для отправки Email-сообщения в служебном сценарии предусмотрен специальный компонент.
Сервис для создания обращений
Необходимо реализовать сервис, который будет принимать три параметра:
- Номер телефона
- Тема обращения
- Описание обращения
При получении запроса, сервис должен найти контакт (Contact) по полю PhoneNumber (оно должно быть добавлено в объект Contact в рамках задания 6).
После того как контакт был найден (или не найден), сервис должен создать новое обращение, заполнив следующие свойства:
- contact_id - идентификатором контакта, если он найден
- client_id - идентификатором client_id из найденного объекта Contact, если контакт найден, а значение client_id в нем заполнено
- state - Открыто
- subject - переданной в сервис темой обращения
- description - переданным в сервис описанием обращения
После созания обращения сервис должен вернуть идентификатор нового обращения, а также два признака:
- contactFound (bool) - найден ли контакт по номеру телефона
- clientFound (bool) - найден ли контрагент через связь с контактом
Следующая статья курса: Работа с универсальным источником данных
Следующее задание курса: Задание 11. Разработка кастомного отчета
Предыдущая статья курса: Работа с внешними системами. Возможности интеграции
Предыдущее задание курса: Задание 9. Пользовательские действия в карточке