Перейти к содержимому страницы
Переключить меню
Переключить меню настроек
Переключить персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.

Задание 10. Обработка данных: различия между версиями

Материал из Платформа Эра. Документации
Новая страница: « Предыдущая статья курса: Работа с универсальным источником данных Предыдущее задание курса: ''Задание 9. Пользовательские действия в карточке'' = Задание = Следующая статья курса: Разработка отчётов Следующее задание курса: ''Задание 11. Раз...»
 
м Исправление орфографии (ссылки и код не затронуты)
 
(не показано 8 промежуточных версий 2 участников)
Строка 1: Строка 1:
  Предыдущая статья курса: [[Работа с универсальным источником данных]]
  Предыдущая статья курса: [[Работа с внешними системами. Возможности интеграции]]


  Предыдущее задание курса: ''[[Задание 9. Пользовательские действия в карточке]]''
  Предыдущее задание курса: ''[[Задание 9. Пользовательские действия в карточке]]''
Строка 5: Строка 5:
= Задание =
= Задание =


Данное задание состоит из трёх отдельных пунктов:


* Отправка email-уведомлений при изменении статуса Обращения
* Разработка сервиса для создания обращений из внешних систем
* Базовая интеграция с YandexGPT<br />


=== Отправка уведомлений ===
Необходимо разработать сервис, который будет подписываться на события по изменению статуса в обращении (поле Ticket.state), и при изменении статуса, будет отправлять контакту Email-уведомление.


В рамках данного задания, отправка email-уведомлений должна быть реализована с помощью служебного сценария.


Перед началом работ, необходимо добавить в класс Контакт (Contact) новое свойство - Адрес Email (тип base/String).


  Следующая статья курса: [[Разработка отчётов]]
Созданный сервис должен реализовывать следующую логику:
 
# Сервис подписывается на события изменения объекта Ticket,
# При получении события, сервис достает из Invocation информацию, отличается ли значение State в старой и новой версии данных
# Если значение State было изменено, сервис получает значение адреса email из объекта Contact по идентификатору, сохраненному в Ticket
# Сервис запускает служебный сценарий, передавая в него текущий статус и email для отправки нотификации<br />
 
После разработки сервиса, необходимо реализовать служебный сценарий, который в зависимости от статуса будет отправлять разный текст нотификации - для перевода в статусы "В работе", "Закрыто" и "Отменено". Для отправки Email-сообщения в служебном сценарии предусмотрен специальный компонент.
 
=== Сервис для создания обращений ===
Необходимо реализовать сервис, который будет принимать три параметра:
 
* Номер телефона
* Тема обращения
* Описание обращения
 
При получении запроса, сервис должен найти контакт (Contact) по полю PhoneNumber (оно должно быть добавлено в объект Contact в рамках [[Задание 6. Интеграция звонков в карточку|задания 6]]).
 
После того как контакт был найден (или не найден), сервис должен создать новое обращение, заполнив следующие свойства:
 
* contact_id - идентификатором контакта, если он найден
* client_id - идентификатором client_id из найденного объекта Contact, если контакт найден, а значение client_id в нем заполнено
* state - Открыто
* subject - переданной в сервис темой обращения
* description - переданным в сервис описанием обращения
 
После создания обращения сервис должен вернуть идентификатор нового обращения, а также два признака:
 
* contactFound (bool) - найден ли контакт по номеру телефона
* clientFound (bool) - найден ли контрагент через связь с контактом
 
=== Интеграция с YandexGPT ===
<blockquote>Для выполнения данного подзадания, необходимо иметь аккаунт в Yandex Cloud. Можно использовать trial аккаунт, который позволяет бесплатно пользоваться сервисами с некоторыми ограничениями, либо использовать платный доступ, пополнив биллинг на минимальные 10 рублей (этого количества хватит на любые тесты).</blockquote>Необходимо реализовать сервис, который будет выполнять простую интеграцию с YandexGPT - резюмирование текста обращения и генерация ИИ-подсказки по обращению.
 
Перед началом работы, в классе Ticket необходимо добавить два свойства - "ИИ-резюме" и "ИИ-подсказка", оба свойства с типом base/String. Поля не должны отображаться на карточке, если они пустые.
 
Сервис должен принимать на вход в качестве параметра идентификатор обращения.
 
В рамках разработки сервиса необходимо реализовать обращение к методу [https://yandex.cloud/ru/docs/foundation-models/text-generation/api-ref/TextGeneration/completion completion API YandexGPT]
 
Также, необходимо реализовать Bearer-аутентификацию ([https://yandex.cloud/ru/docs/foundation-models/api-ref/authentication#yandex-account_1 документация Yandex Cloud]), ключ для аутентификации необходимо хранить в проектных параметрах.
 
При выполнении запросов к LLM не требуется указывать каких-либо дополнительных параметров, кроме modelURI и одного элемента в массиве messages
 
При получении запроса, сервис должен отправить в YandexGPT два запроса на completion:
 
# Ты являешься ИИ-помощником по обработке обращений в контакт-центре. Резюмируй текст данного обращения. В ответе не используй вводных конструкций или дополнительного текста, в качестве ответа должно использоваться только резюме обращения: [Ticket.description]
# Ты являешься ИИ-помощником по обработке обращений в контакт-центре. Предложи решение по данному обращению. В ответе не используй вводных конструкций или дополнительного текста, в качестве ответа должна использоваться только подсказка по решению обращения: Тема обращения: [Ticket.subject]. Описание обращения: [Ticket.description]
Запросы представлены в качестве примера, для получения качественных результатов их необходимо модифицировать.
 
 
 
Пример итогового JSON запроса:<syntaxhighlight lang="json">
{
  "modelUri": "gpt://<идентификатор_каталога>/yandexgpt-lite/latest",
  "messages": [
    {
      "role": "system",
      "text": "Ты являешься ИИ-помощником по обработке обращений в контакт-центре. Резюмируй текст данного обращения. В ответе не используй вводных конструкций или дополнительного текста, в качестве ответа должно использоваться только резюме обращения: {Ticket.description}"
    }
  ]
}
 
</syntaxhighlight>
 
 
 
После получения результата, необходимо из result.alternatives получить одно из сообщений, и использовать его свойство text для заполнения, соответственно, резюме или подсказки.
 
Последним шагом в данном задании является создание действия (Action) "Обработать с помощью ИИ" в классе Ticket, которое будет запускать данный сервис и передавать в него идентификатор обращения.
 
  Следующая статья курса: [[Работа с универсальным источником данных]]


  Следующее задание курса: ''[[Задание 11. Разработка кастомного отчета]]''
  Следующее задание курса: ''[[Задание 11. Разработка кастомного отчета]]''


  Предыдущая статья курса: [[Работа с универсальным источником данных]]
  Предыдущая статья курса: [[Работа с внешними системами. Возможности интеграции]]


  Предыдущее задание курса: ''[[Задание 9. Пользовательские действия в карточке]]''
  Предыдущее задание курса: ''[[Задание 9. Пользовательские действия в карточке]]''
[[Категория:Курс Разработка приложений]]

Текущая версия от 21:22, 27 октября 2026

Предыдущая статья курса: Работа с внешними системами. Возможности интеграции
Предыдущее задание курса: Задание 9. Пользовательские действия в карточке

Задание

Данное задание состоит из трёх отдельных пунктов:

  • Отправка email-уведомлений при изменении статуса Обращения
  • Разработка сервиса для создания обращений из внешних систем
  • Базовая интеграция с YandexGPT

Отправка уведомлений

Необходимо разработать сервис, который будет подписываться на события по изменению статуса в обращении (поле Ticket.state), и при изменении статуса, будет отправлять контакту Email-уведомление.

В рамках данного задания, отправка email-уведомлений должна быть реализована с помощью служебного сценария.

Перед началом работ, необходимо добавить в класс Контакт (Contact) новое свойство - Адрес Email (тип base/String).

Созданный сервис должен реализовывать следующую логику:

  1. Сервис подписывается на события изменения объекта Ticket,
  2. При получении события, сервис достает из Invocation информацию, отличается ли значение State в старой и новой версии данных
  3. Если значение State было изменено, сервис получает значение адреса email из объекта Contact по идентификатору, сохраненному в Ticket
  4. Сервис запускает служебный сценарий, передавая в него текущий статус и email для отправки нотификации

После разработки сервиса, необходимо реализовать служебный сценарий, который в зависимости от статуса будет отправлять разный текст нотификации - для перевода в статусы "В работе", "Закрыто" и "Отменено". Для отправки Email-сообщения в служебном сценарии предусмотрен специальный компонент.

Сервис для создания обращений

Необходимо реализовать сервис, который будет принимать три параметра:

  • Номер телефона
  • Тема обращения
  • Описание обращения

При получении запроса, сервис должен найти контакт (Contact) по полю PhoneNumber (оно должно быть добавлено в объект Contact в рамках задания 6).

После того как контакт был найден (или не найден), сервис должен создать новое обращение, заполнив следующие свойства:

  • contact_id - идентификатором контакта, если он найден
  • client_id - идентификатором client_id из найденного объекта Contact, если контакт найден, а значение client_id в нем заполнено
  • state - Открыто
  • subject - переданной в сервис темой обращения
  • description - переданным в сервис описанием обращения

После создания обращения сервис должен вернуть идентификатор нового обращения, а также два признака:

  • contactFound (bool) - найден ли контакт по номеру телефона
  • clientFound (bool) - найден ли контрагент через связь с контактом

Интеграция с YandexGPT

Для выполнения данного подзадания, необходимо иметь аккаунт в Yandex Cloud. Можно использовать trial аккаунт, который позволяет бесплатно пользоваться сервисами с некоторыми ограничениями, либо использовать платный доступ, пополнив биллинг на минимальные 10 рублей (этого количества хватит на любые тесты).

Необходимо реализовать сервис, который будет выполнять простую интеграцию с YandexGPT - резюмирование текста обращения и генерация ИИ-подсказки по обращению.

Перед началом работы, в классе Ticket необходимо добавить два свойства - "ИИ-резюме" и "ИИ-подсказка", оба свойства с типом base/String. Поля не должны отображаться на карточке, если они пустые.

Сервис должен принимать на вход в качестве параметра идентификатор обращения.

В рамках разработки сервиса необходимо реализовать обращение к методу completion API YandexGPT

Также, необходимо реализовать Bearer-аутентификацию (документация Yandex Cloud), ключ для аутентификации необходимо хранить в проектных параметрах.

При выполнении запросов к LLM не требуется указывать каких-либо дополнительных параметров, кроме modelURI и одного элемента в массиве messages

При получении запроса, сервис должен отправить в YandexGPT два запроса на completion:

  1. Ты являешься ИИ-помощником по обработке обращений в контакт-центре. Резюмируй текст данного обращения. В ответе не используй вводных конструкций или дополнительного текста, в качестве ответа должно использоваться только резюме обращения: [Ticket.description]
  2. Ты являешься ИИ-помощником по обработке обращений в контакт-центре. Предложи решение по данному обращению. В ответе не используй вводных конструкций или дополнительного текста, в качестве ответа должна использоваться только подсказка по решению обращения: Тема обращения: [Ticket.subject]. Описание обращения: [Ticket.description]

Запросы представлены в качестве примера, для получения качественных результатов их необходимо модифицировать.


Пример итогового JSON запроса:

{
  "modelUri": "gpt://<идентификатор_каталога>/yandexgpt-lite/latest",
  "messages": [
    {
      "role": "system",
      "text": "Ты являешься ИИ-помощником по обработке обращений в контакт-центре. Резюмируй текст данного обращения. В ответе не используй вводных конструкций или дополнительного текста, в качестве ответа должно использоваться только резюме обращения: {Ticket.description}"
    }
  ]
}


После получения результата, необходимо из result.alternatives получить одно из сообщений, и использовать его свойство text для заполнения, соответственно, резюме или подсказки.

Последним шагом в данном задании является создание действия (Action) "Обработать с помощью ИИ" в классе Ticket, которое будет запускать данный сервис и передавать в него идентификатор обращения.

Следующая статья курса: Работа с универсальным источником данных
Следующее задание курса: Задание 11. Разработка кастомного отчета
Предыдущая статья курса: Работа с внешними системами. Возможности интеграции
Предыдущее задание курса: Задание 9. Пользовательские действия в карточке