Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Note
Функции, описанные в этой статье, питаются стандартным жгутом, который использует опции выставления счетов, описанные в разделе «Лицензирование для агентов, работающих на стандартном жгуте». Узнайте, как получить доступ к стандартным функциям в стандартных агентах и потоках агентов доступа.
Используя Copilot Studio, вы можете создать агента, который общается с клиентами на разных языках. Вы можете настроить многоязычных агентов так, чтобы они автоматически определяли нужный язык на основе настроек веб-браузера пользователя агента и отвечали на том же языке, обеспечивая более персонализированный и привлекательный опыт для клиентов.
Когда вы создаете агент, вы указываете его основной язык.
После того как вы добавили дополнительные языки в агент, вы отвечаете за перевод сообщений в темах, которые вы создаёте. Для агентов, использующих генеративную оркестрацию, генерируемые сообщения переводятся автоматически.
Когда клиент начинает сеанс с опубликованным агентом, агент выбирает один из поддерживаемых языков в соответствии с языком, указанным в клиентском приложении или браузере клиента. Если агент не может определить язык или определяет язык, который он не поддерживает, агент использует основной язык по умолчанию.
Вы можете настроить агента так, чтобы он изменял используемый язык во время разговора (см. Настройка переключения агента на другой язык). Вы также можете настроить агента, использующего генеративную оркестрацию, для динамического переключения языков в соответствии с языком текущей реплики в беседе (см. Настройка агента для динамического переключения языков).
Список поддерживаемых языков см. в разделе "Поддержка языков".
Note
Классические чат-боты поддерживают только один язык. Дополнительные сведения о преобразовании классического чат-бота в агента см. в статье Переход на унифицированную разработку в Copilot Studio.
Добавление языков в агент
Перейдите на страницу Параметры агента, и выберите Языки.
Выберите "Добавить язык".
На панели «Добавить языки» выберите языки, которые хотите добавить в агент, и нажмите «Добавить».
Просмотрите список языков и закройте страницу Параметры.
Управление локализацией для многоязычного агента
В Copilot Studio вы редактируете все темы и контент на основном языке агента. В этом разделе объясняется, как скачать строки из вашего агента и перевести их на дополнительные языки вашего агента. После загрузки переведённых строк вы можете переключить язык в тестовой панели и убедиться, что беседы на дополнительных языках проходят как ожидается.
Подготовьте локализованный контент
Когда вы впервые загружаете файл локализации для дополнительного языка, все строки будут на основном языке агента. Загрузив файл локализации, используйте его в предпочитаемом процессе локализации.
Перейдите на страницу Параметры для вашего агента и выберите Языки.
На странице Языки в списке дополнительных языков выберите Отправить для языка, который требуется обновить.
На панели Обновить локализации выберите формат JSON или ResX, чтобы загрузить текущий файл локализации для этого языка.
Note
Загруженный файл содержит последнюю версию локализации агента. Чтобы загрузить предыдущие версии файла локализации, откройте решение агента.
Откройте загруженный файл и замените строки основного языка соответствующим переведенным текстом.
Вернитесь на панель Обновить локализации, выберите Обзор и загрузите переведенный файл.
Закройте панель Обновления локализаций и страницу Параметры.
Обновление локализованного контента
Если вы изменяете строки основного языка, необходимо также обновить содержимое на дополнительных языках. Этот процесс включает в себя как новое, так и измененное содержимое. Инкрементные изменения не переводятся автоматически. Вам необходимо скачать файл JSON или ResX для дополнительного языка и обновить непереведённые строки с помощью вашего предпочтительного процесса локализации.
Следующий сценарий является типичным для рабочего процесса для переведенного содержимого. Ранее вы перевели свой основной язык (en-US) на дополнительный язык (fr-FR), а также добавили и изменили содержимое на основном языке. Когда вы скачиваете файл локализации для дополнительного языка, все новые строки будут на основном языке (en-US), а ранее переведённые строки останутся на дополнительном языке (fr-FR). Однако ранее переведённые строки, исходный текст которых был изменён с момента последнего обновления файла локализации, по-прежнему отображаются так, как были переведены на дополнительный язык. Поскольку идентификаторы строк (string IDs) не меняются, строки на дополнительном языке и строки на основном языке могут рассинхронизироваться после внесения изменений в основной язык. Убедитесь, что сравнение нового файла локализации с версией, которую вы загрузили последней, для выявления изменений строк на основном языке, является частью вашего процесса локализации.
Сделать динамический контент из адаптивных карт доступным для локализации.
Файлы локализации не включают в себя строки смешанного типа из адаптивных карт. Если вам нужно локализовать адаптивные карточки, в которых строка может содержать как статический текст, так и переменные (динамический контент), используйте следующий обходной путь. В этой процедуре показано, как использовать узел Задать текстовую переменную для сохранения полной строки со статическим текстом и переменными в промежуточной переменной. Затем вы ссылаетесь только на эту промежуточную переменную в вашей адаптивной карточке. Когда вы загружаете файл локализации для вашего агента, значение промежуточной переменной, со статическим текстом и ссылками на переменные, доступно для локализации в рамках действия setVariable.
Чтобы сделать динамический контент адаптивной карты доступным для локализации:
Добавьте узел Задать значение переменной перед вашей адаптивной карточкой. Этот шаг создает представление в формате YAML, которое вы можете обновить с помощью редактора кода, чтобы преобразовать в узел Задать значение переменной . Вы не можете создавать узлы Задать значение переменной напрямую на холсте разработки.
В узле Задать значение переменной создайте новую переменную, но пока не устанавливайте её значение.
Откройте редактор кода для вашей темы.
В редакторе кода найдите часть, которая представляет ваш узел Задать значение переменной и замените
kind: SetVariableнаkind: SetTextVariable. Это изменение преобразует ваш узел Задать значение переменной в узел Задать текстовую переменную.Закройте редактор кода.
Выберите нижнее поле узла Задать текстовую переменную и введите полную строку со статическим текстом и переменными, которые вы хотите отобразить на вашей адаптивной карточке. Вставьте переменную так же, как вы вставляете переменную в сообщение.
Обновите свои адаптивные карточки, добавив ссылку на эту новую переменную.
Сохраните тему. Теперь вы можете скачать файл локализации и убедиться, что он содержит динамический контент для ваших адаптивных карточек.
Дополнительную информацию см. в разделе «Локализация содержимого адаптивной карточки».
Протестируйте многоязычного агента
Откройте панель тестирования.
Нажмите на три точки (…) в верхней части панели тестирования и выберите желаемый язык. Тестовая панель перезагружается, используя выбранный язык. Холст разработки остаётся на основном языке, и вы не сможете сохранить изменения в теме, пока не переключитесь обратно на основной язык.
Чтобы протестировать агента, введите сообщение на выбранном языке.
Вы также можете установить язык браузера на один из языков вашего агента и перейти на предварительно созданный демо-сайт. Демо-сайт открывается на указанном языке, и агент общается на этом языке.
Настройте агента на переключение на другой язык
При создании вы можете настроить агента так, чтобы он переключался на другой язык в середине разговора. Логика может быть реализована в любой теме агента. Однако рекомендуется переключать язык непосредственно после узла Вопрос, чтобы гарантировать, что все последующие сообщения до следующего узла Вопрос будут на том же языке.
Чтобы изменить текущий язык агента, установите для User.Languageсистемной переменной значение одного из дополнительных языков агента. Этот выбор мгновенно меняет язык, на котором говорит ваш агент.
Настройте агент для динамического переключения языков
Note
Эта функция доступна только для агентов с включенной генеративной оркестрацией.
Вы можете настроить агента так, чтобы он определял язык, используемый пользователем, и отвечал на том же языке. С такой конфигурацией агент может многократно переключаться между языками в ходе одной беседы. Следующий сценарий показывает, как настроить агента для переключения между голландским и английским языками. Вы можете расширить его для любой комбинации языков, которые поддерживает ваш агент.
Warning
Этот метод динамического переключения языка несовместим с автоматическим определением языка на основе настроек браузера. После того как тема, динамически обнаруживающая язык пользователя, устанавливает переменную User.Language, определение языка на основе настроек браузера перестаёт действовать для этого пользователя, даже если тема позже будет отключена или удалена. Если хотите поэкспериментировать или проверить оба подхода, используйте отдельного тестового агента. После тестирования динамического переключения языка необходимо очистить сохранённое языковое состояние пользователя прежде чем тестировать определение языка на основе настроек браузера.
В этом сценарии используется тема с триггером темы Сообщение получено. Этот триггер темы позволяет вашему агенту анализировать каждое сообщение, которое он получает. В этой теме используется пользовательский запрос для определения языка и условие для установки системной переменной языка агента.
Убедитесь, что ваш агент настроен на поддержку всех необходимых языков.
Замените тип триггера по умолчанию для темы на Сообщение получено.
Добавление запроса в вашу тему:
Выберите значок Добавить узел под
узлом Триггер.Выберите Добавить инструмент>Новый запрос.
В редакторе запросов введите имя оператора для вашего запроса, например «Определение языка».
В области инструкций введите: «Определите, на каком языке написано это сообщение: ».
В нижней части области инструкций выберите Добавить содержимое, затем выберите Текст. Появится окно, предлагающее ввести имя и пример сообщения.
Для поля Имя укажите — «Сообщение». Для поля Демонстрационные данные укажите — «Сообщение от пользователя», затем нажмите Закрыть.
В области Ответ модели переключите формат Выходные данные на JSON.
Выберите Тест. Ваш запрос содержит JSON-литерал с единственным свойством, определяющим язык как английский.
Нажмите Сохранить. Узел Запрос появится на холсте разработки.
Настройте узел Запрос:
- Для входных данных выберите системную переменную
Activity.Text(текст входящего сообщения). - Для выходных данных, создайте новую переменную с именем
DetectedLanguage.
- Для входных данных выберите системную переменную
Разветвите логику в зависимости от определенного языка:
Добавьте условие ниже узла Запрос.
Основывайте условие на пользовательской переменной
DetectedLanguage.structuredOutput.language, которая содержит имя определенного языка.Добавьте ветку условия для каждого языка, который вам необходимо определить.
В каждой ветке добавьте узел Задать значение переменной для соответствующей установки
User.Languageсистемной переменной. Следующее изображение показывает тему с условием переключения между нидерландским и английским.
Восстановление распознавания языка на основе браузера
Когда агент, настроенный на динамическое переключение языка, устанавливает системную User.Language переменную, выбранный язык сохраняется как переопределение для пользователя агента. Предпочитаемый язык пользователя определяется в следующем порядке приоритетов:
- Язык, явно выбранный пользователем и сохранённый для этого пользователя в качестве переопределения (наивысший приоритет).
- Входящее сообщение от пользователя на языке, соответствующем одному из поддерживаемых агентом языков (
Activity.Locale). - Основной язык агента (резервный).
Чтобы сбросить сохранённый язык после тестирования динамического переключения языка:
- Отправьте агенту
/debug clearstate. Эта команда удаляет переопределение языка из состояния пользователя.
Устранение неполадок многоязычного агента
В этом разделе приведены советы, которые помогут вам понять неожиданное поведение многоязычного агента.
Поведение многоязычного агента для языков, которые не настроены
Если пользователь выбирает в браузере язык, который не поддерживается агентом, агент переключается на свой основной язык.
Вы указываете основной язык для агента, когда вы создаете агент. Вы не можете изменить основной язык после создания, но можете изменить регион для основного языка агента, если доступно более одного региона.
Поведение многоязычного агента при отсутствии переводов
Если вы добавляете сообщения агенту на его основном языке, но не загружаете переводы для новых сообщений, агент будет отображать эти сообщения на основном языке без перевода. Всегда убедитесь, что переводы актуальны после внесения изменений в агенте.
Файлы локализации не включают в себя строки смешанного типа из адаптивных карточек. Если нужно локализовать адаптивные карточки, где строка может содержать как статический текст, так и переменные (динамический контент), нужно использовать обходное решение. Узнайте, как хранить смешанную строку в текстовой переменной перед использованием в адаптивной карточке.
Ошибки при публикации мультиязычного агента
Когда вы пытаетесь опубликовать многоязычного агента, вы можете увидеть сообщение об ошибке «Ошибка проверки бота» с необработанным кодом ошибки ответа SynonymsNotUnique. Эта ошибка означает, что в вашем файле локализации есть либо дублирующиеся синонимы, либо синоним, совпадающий со значением DisplayName. Обычно эта ошибка возникает, когда узел содержит Entity.Definition.'closedListItem', при котором возникает один из следующих сценариев:
- Один из
Synonymsэлементов не уникален. - Один из элементов
Synonymsимеет то же значение, что и элементDisplayName.
Все Synonyms для одной сущности должны быть уникальными и иметь имя, отличное от имени элемента DisplayName.
Чтобы исправить ошибку, просмотрите файл JSON или ResX для вашего дополнительного языка и выявите все случаи, где может возникать эта ситуация.