Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Важно!
- Библиотека ИИ Teams теперь переименована в Пакет SDK для Teams.
- Библиотека ИИ Teams версии 1 устарела. Мы рекомендуем обновить агенты, чтобы использовать обновленный пакет SDK для Teams.
Пакет SDK для Teams теперь доступен для JavaScript и C#, поддерживает Python в предварительной версии для разработчиков. Он предоставляет упрощенный пакет SDK, поддержку протокола контекста модели (MCP), обмен данными между агентами (A2A) и упрощенные средства, позволяющие разработчикам создавать интеллектуальные агенты для Teams.
Метка ИИ, ссылка, кнопки обратной связи и метка конфиденциальности в сообщениях бота повышают вовлеченность пользователей и повышают прозрачность и доверие.
- Метка ИИ позволяет пользователям идентифицировать, что сообщение было создано с помощью ИИ.
- Ссылка позволяет пользователям ссылаться на источник сообщения бота с помощью текстовых ссылок и ссылок.
- Кнопки обратной связи позволяют пользователям предоставлять положительные или отрицательные отзывы для сообщений бота.
- Метка конфиденциальности позволяет пользователям понять конфиденциальность сообщения бота.
На следующих снимках экрана показано, как сообщения бота можно улучшить с помощью метки ИИ, ссылки, кнопки обратной связи и метки конфиденциальности.
Примечание.
- Метка ИИ, ссылки, кнопки обратной связи и метка конфиденциальности доступны для ботов в личных чатах, групповых чатах и каналах.
- Метка ИИ, ссылки, кнопки обратной связи и метка конфиденциальности доступны в средах Облака сообщества для государственных организаций (GCC), GCC High и Министерства обороны (DoD).
Метка ИИ
Метка ИИ в сообщении бота указывает, что она создана СИ. Хотя боты на основе ИИ, использующие большие языковые модели (LLM), как правило, надежны, метка помогает предотвратить путаницу в источнике информации.
Добавление метки ИИ
Если вы используете пакет SDK Teams для создания бота, метка ИИ автоматически включается для всех сообщений бота на основе ИИ в ai модуле в действии PredictedSayCommand . Дополнительные сведения см. в разделе Интерфейс AIEntity.
Если вы используете пакет SDK для Microsoft Bot Framework для создания ботаentities, добавьте additionalType в массив объекта сущностиmessage. В следующем фрагменте кода показано, как включить метку ИИ в сообщении бота:
await context.sendActivity({
type: ActivityTypes.Message,
text: `Hey! I'm a friendly AI bot. This message is generated by AI.`,
entities: [
{
type: "https://schema.org/Message",
"@type": "Message",
"@context": "https://schema.org",
additionalType: ["AIGeneratedContent"], // Enables AI label
}
]
});
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
additionalType |
Array | Да | Включает метку ИИ в сообщении бота. Допустимое значение: AIGeneratedContent |
После добавления метки ИИ в сообщении бота рядом с именем бота отображается метка, созданная ИИ . При наведении указателя мыши на метку ИИ отображается заявление об отказе от ответственности, указывающее, что содержимое, созданное ИИ, может быть неправильным. Метку ИИ и заявление об отказе от ответственности нельзя настроить для ботов на основе ИИ.
Обработка ошибок
| Код ошибки | Описание |
|---|---|
| 400 | Несколько сущностей корневого сообщения, найденных в массиве entities . |
| 400 | Ошибка при синтаксическом анализе сущности сообщения из entities массива. |
Цитаты
Цитирование источников в сообщениях бота помогает пользователям задавать дополнительные вопросы или проводить независимые исследования. Цитировать источники данных, такие как файлы, сообщения, сообщения электронной почты и рабочие элементы, чтобы получить ценные аналитические сведения. Ссылки имеют решающее значение для ботов, использующих такие методы, как создание Retrieval-Augmented (RAG).
Ссылки в сообщениях бота могут включать следующие:
- Текстовые ссылки обозначают номера ссылок, добавленные в сообщение бота в формате [#], каждый из которых соответствует ссылке. Ссылку можно вставить в любом месте текста.
- Сведения о ссылке на ссылку включают заголовок, значок, ключевые слова, абстракт, гиперссылку, сведения о конфиденциальности и кнопку для открытия модального окна с дополнительным содержимым. Ссылки отображаются в виде всплывающих окон для каждой текстовой ссылки.
- Метки конфиденциальности для ссылок указывают на конфиденциальность ссылочного содержимого и не добавляются автоматически. Сведения о добавлении меток конфиденциальности для ссылок см. в статье Добавление метки конфиденциальности.
- Модальное окно с дополнительным содержимым отображает адаптивную карточку без интерактивных элементов.
Примечание.
- В сообщении отображается не более 20 ссылок.
- Ссылки с адаптивными карточками доступны в общедоступной предварительной версии для разработчиков.
- Адаптивные карточки не отображаются во всплывающем окне ссылки. Тем не менее адаптивные карточки можно отобразить в сообщении бота или в модальном окне ссылки, доступном во всплывающем окне.
Добавление ссылок
Если вы используете пакет SDK Teams для создания бота, ссылки добавляются в сообщение бота на основе ИИ автоматически с помощью PredictedSayCommand действия. Вы также можете изменить действие, PredictedSayCommand чтобы добавить ссылки на сообщение бота. Дополнительные сведения см. в разделе Интерфейс ClientCitation.
Если вы используете пакет SDK Bot Framework для создания бота, добавьте в citationentities массив. Ниже приведен пример фрагмента кода:
await context.sendActivity({
type: ActivityTypes.Message,
text: `Hey I'm a friendly AI bot. This message is generated through AI [1]`, // cite with [1],
entities: [
{
type: "https://schema.org/Message",
"@type": "Message",
"@context": "https://schema.org",
citation: [
{
"@type": "Claim",
position: 1, // Required. Must match the [1] in the text above
appearance: {
"@type": "DigitalDocument",
name: "AI bot", // Title
url: "https://example.com/claim-1", // Hyperlink on the title
abstract: "Excerpt description", // Appears in the citation pop-up window
text: "{\"type\":\"AdaptiveCard\",\"$schema\":\"http://adaptivecards.io/schemas/adaptive-card.json\",\"version\":\"1.6\",\"body\":[{\"type\":\"TextBlock\",\"text\":\"Adaptive Card text\"}]}", // Appears as a stringified Adaptive Card
keywords: ["keyword 1", "keyword 2", "keyword 3"], // Appears in the citation pop-up window
encodingFormat: "application/vnd.microsoft.card.adaptive",
image: {
"@type": "ImageObject",
name: "Microsoft Word"
},
},
},
],
},
],
})
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
citation |
Object | ✔️ | Сведения о ссылке. |
citation.@type |
String | ✔️ | Объект ссылки. Допустимое значение: Claim |
citation.position |
Integer | ✔️ | Отображает номер ссылки. Это значение должно быть уникальным для каждой ссылки. |
citation.appearance |
Объект | ✔️ | Сведения о внешнем виде ссылки. |
citation.appearance.@type |
String | ✔️ | Объект внешнего вида ссылки. Допустимое значение: DigitalDocument |
citation.appearance.name |
String | ✔️ | Заголовок содержимого, на который ссылается ссылка. Максимальное число символов: 80 |
citation.appearance.url |
String | URL-адрес содержимого, на который ссылается ссылка. | |
citation.appearance.abstract |
String | Абстракция содержимого, на который ссылается ссылка. Максимальное число символов: 160 | |
citation.appearance.text |
String | Строка адаптивная карточка с дополнительными сведениями о ссылке. Он отображается в модальном окне, доступном из всплывающего окна. | |
citation.appearance.keywords |
Array | Ключевые слова из указанного содержимого. Нельзя добавить более трех ключевых слов. Каждая ключевое слово может содержать только 28 символов. | |
citation.appearance.encodingFormat |
String | Формат citation.appearance.text кодирования поля.Допустимое значение: application/vnd.microsoft.card.adaptive |
|
citation.appearance.image |
Объект | Сведения о значке ссылки. | |
citation.appearance.image.@type |
String | ✔️ | Объект значка ссылки. Должно быть задано значение ImageObject. |
citation.appearance.image.name |
String | ✔️ | Имя предопределенного значка. Он отображает значок ссылки в сведениях о ссылке. Допустимые значения: Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Microsoft OneNote, Microsoft SharePoint, Microsoft Visio, Microsoft Loop, Microsoft Whiteboard, Source Code, Adobe IllustratorSketch, , Adobe InDesignAdobe Photoshop, , Adobe Flash, Image, , GIFVideo, , Sound, , ZIPTextPDF |
После включения ссылок сообщение бота содержит текстовые ссылки и ссылки. Текстовые ссылки отображают сведения о ссылке при наведении указателя мыши на ссылку.
Обработка ошибок
| Код ошибки | Описание |
|---|---|
| 400 | Несколько сущностей корневого сообщения, найденных в массиве entities . |
| 400 | Ошибка при синтаксическом анализе сущности сообщения из entities массива. |
| 400 | Сообщение бота с более чем 20 цитатами. |
| 400 | Объект appearance пуст. |
| 400 | Ошибка при синтаксическом анализе сущности ссылки с идентификатором: X. |
Кнопки обратной связи
Кнопки обратной связи в сообщениях бота необходимы для отслеживания вовлеченности пользователей, выявления ошибок и получения аналитических сведений о производительности бота. Эти аналитические сведения позволяют улучшить возможности общения бота. Включите кнопки обратной связи, чтобы разрешить пользователям любить или не любить сообщения, а также предоставлять подробные отзывы.
Когда пользователь нажимает кнопку обратной связи, появляется форма обратной связи в зависимости от выбранного пользователем. Вы можете использовать форму обратной связи по умолчанию или настроить ее в соответствии с потребностями приложения.
Примечание.
Настраиваемые формы обратной связи доступны в общедоступной предварительной версии для разработчиков.
Кнопки обратной связи находятся в нижнем колонтитуле сообщения бота и включают кнопку 👍 (большие пальцы вверх) и кнопку 👎 (вниз), которую выбирает пользователь.
Добавить кнопки обратной связи
Для бота, созданного с помощью пакета SDK для Teams, Teams включает кнопки обратной связи для всех сообщений бота, если enable_feedback_loop в модуле ai задано значение true .
export const app = new Application<ApplicationTurnState>({
ai: {
planner: planner,
enable_feedback_loop: true
},
Дополнительные сведения см. в разделе переменная приложения const.
После включения кнопок обратной связи для всех SAY команд бота feedbackLoopEnabled в объекте channelData автоматически задано значение true.
Чтобы включить кнопки обратной связи в боте, созданном с помощью пакета SDK Bot Framework, определите feedbackLoop объект в объекте channelData сообщения бота.
await context.sendActivity({
type: ActivityTypes.Message,
text: `Hey! I'm a friendly AI bot!`,
channelData: {
feedbackLoop: { // Enable feedback buttons
type: "custom"
},
});
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
feedbackLoop |
Object | ✔️ | Включает кнопки обратной связи в сообщении бота. |
feedbackLoop.type |
String | ✔️ | Определяет тип формы обратной связи, которая появляется, когда пользователь нажимает кнопки обратной связи. Допустимые значения: custom, default |
Если задано значение feedbackLoop.typedefault, форма обратной связи по умолчанию отображается, когда пользователь нажимает кнопки обратной связи. Если вы хотите отобразить настраиваемую форму обратной связи, задайте для значение feedbackLoop.typecustom. Следующий запрос на вызов отправляется боту для получения пользовательской формы, отображаемой для пользователя:
{
"type": "invoke",
"name": "message/fetchTask",
"value": {
"actionName": "feedback",
"actionValue": {
"reaction": "like" // like or dislike
}
}
}
Вы должны отвечать на этот вызов с помощью диалогового окна (называемого модулями задач в TeamsJS версии 1.x) так же, как и на task/fetch вызов. Дополнительные сведения о вызове диалогов в ботах см. в разделе Использование диалогов с ботами.
Обработка отзывов
Бот получает от пользователя входные данные из формы обратной связи через поток вызова бота. Для ботов, созданных с помощью пакета SDK для Teams, запрос на вызов бота обрабатывается автоматически. Для обработки обратной app.feedbackLoop связи используйте метод для регистрации обработчика цикла обратной связи, вызываемого при отправке отзывов пользователем.
app.feedbackLoop(async (_context: TurnContext, _state: TurnState, feedbackLoopData: FeedbackLoopData) => {
// custom logic here...
});
Дополнительные сведения см. в статье асинхронная функция обратного вызова.
Для бота, созданного с помощью пакета SDK Bot Framework, необходимо иметь onInvokeActivity обработчик для обработки отзывов. Убедитесь, что в ответ возвращается код 200 состояния с пустым объектом JSON.
В следующем фрагменте кода показано, как обрабатывать отзывы, полученные при вызове бота, и возвращать ответ с кодом 200состояния .
public async onInvokeActivity(context: TurnContext): Promise<InvokeResponse> {
try {
switch (context.activity.name) {
case "message/submitAction":
console.log('Your feedback is ' + JSON.stringify(context.activity.value))
// Your feedback is {"actionName":"feedback","actionValue":{"reaction":"like","feedback":"{\"feedbackText\":\"This is my feedback.\"}"}}
return CreateInvokeResponse(200, {});
default:
return {
status: 200,
body: `Unknown invoke activity handled as default- ${context.activity.name}`,
};
}
} catch (err) {
console.log(`Error in onInvokeActivity: ${err}`);
return {
status: 500,
body: `Invoke activity received- ${context.activity.name}`,
};
}
}
export const CreateInvokeResponse = (
status: number,
body?: unknown
): InvokeResponse => {
return { status, body };
};
Сохраните отзывы, сохраняя идентификаторы сообщений и содержимое сообщений, которые бот отправляет и получает. Когда бот получает запрос на вызов с отзывом, совпадите идентификатор сообщения с соответствующим отзывом.
Примечание.
Teams не хранит и не обрабатывает отзывы. Он не предоставляет API или механизм хранения.
Если пользователь удаляет бот и по-прежнему имеет доступ к чату бота, Teams удаляет кнопки обратной связи из сообщений бота, чтобы запретить пользователю отправлять отзыв боту.
Обработка ошибок
| Код ошибки | Описание |
|---|---|
| 400 |
message/submitAction Ответ invoke не пуст. |
Метка конфиденциальности
Ответы бота могут содержать конфиденциальную информацию или быть доступны только определенным лицам в организации. Добавьте метку конфиденциальности, чтобы помочь пользователям определить конфиденциальность сообщения, позволяя им проявлять осторожность при предоставлении общего доступа к нему.
Примечание.
Добавьте метку конфиденциальности в сообщения бота, только если они содержат конфиденциальную информацию.
Добавление метки конфиденциальности
Для ботов, созданных с помощью пакета SDK для Teams, метку конфиденциальности можно добавить с помощью PredictedSayCommand действия. Дополнительные сведения см. в разделе Интерфейс SensitivityUsageInfo.
Для ботов, созданных с помощью пакета SDK Bot Framework, добавьте метку конфиденциальности в сообщение бота, изменив сообщение для включения usageInfo в entities объект .
В следующем фрагменте кода показано, как добавить метки конфиденциальности как в сообщения бота, так и в ссылку на ссылки:
await context.sendActivity({
type: ActivityTypes.Message,
text: `Hey, I'm a friendly AI bot. This message is generated through AI [1]`,
entities: [
{
type: "https://schema.org/Message",
"@type": "Message",
"@context": "https://schema.org",
usageInfo: {
"@type": "CreativeWork",
name: "Sensitivity title",
description: "Sensitivity description",
},
},
],
});
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
usageInfo.@type |
String | ✔️ | Включает метку конфиденциальности в сообщении бота. |
citation.usageInfo.@id |
String | ✔️ | Включает метку конфиденциальности в ссылке. Это необходимо при добавлении метки конфиденциальности в ссылку на ссылку. |
usageInfo.name |
String | ✔️ | Указывает заголовок метки конфиденциальности. |
usageInfo.description |
String | Указывает сообщение всплывающего окна, которое появляется при наведении указателя мыши на метку конфиденциальности. |
После добавления метки конфиденциальности в сообщении бота отображается значок щита. Пользователи могут навести указатель мыши на значок, чтобы увидеть заявление об отказе от ответственности о конфиденциальности сообщения.
Обработка ошибок
| Код ошибки | Описание |
|---|---|
| 400 | Несколько сущностей корневого сообщения, найденных в массиве entities . |
| 400 | Ошибка при синтаксическом анализе сущности сообщения из entities массива. |
| 400 | Значение уровня usageInfo.@id цитирования не соответствует уровню usageInfo.@id сообщения по крайней мере в одном экземпляре. |
| 400 | Существует несколько свойств уровня usageInfo ссылки с одинаковыми @idсвойствами , но их name свойства и description отличаются. |
Изменить PredictedSayCommand
Для бота, созданного с помощью пакета SDK для Teams, предоставляет контроль над тем, PredictedSayCommand как метка ИИ, ссылка, кнопка обратной связи и метка конфиденциальности добавляются в действия бота. Ниже приведен фрагмент кода для изменения PredictedSayCommand:
app.ai.action<PredictedSayCommand>(AI.SayCommandActionName, async (context, state, data, action) => {
// custom logic here...
await context.sendActivity(data.content);
return "";
});
Дополнительные сведения о PredictedSayCommandсм. в разделе Интерфейс PredictedSayCommand.
Примеры кода
| Название примера | Описание | Node.js | .NET |
|---|---|---|---|
| Бот для беседы в Teams | Этот пример приложения отображает метку ИИ, ссылку, кнопки обратной связи и метку конфиденциальности в сообщениях. | Просмотр | Н/Д |
| Azure OpenAI для ваших данных | Этот бот для общения использует пакет SDK Для Teams и содержит метку ИИ, кнопки обратной связи, метку конфиденциальности и ссылку в созданных сообщениях. | Н/Д | Просмотр |
См. также
Platform Docs