跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) 聊天机器人(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 编程语言(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

category

您可以创建具有各种功能的机器人,如文本、按钮、图像、以旋转木马或列表格式显示的富卡等。然而,每个渠道,如脸书、Slack等,最终都控制着其消息客户端呈现功能的方式。即使多个通道支持一个功能,每个通道也可能以略微不同的方式渲染该功能。如果消息包含通道本机不支持的功能,通道可能会尝试将消息内容向下呈现为文本或静态图像,这可能会显著影响消息在客户端上的外观。在某些情况下,频道可能根本不支持特定功能。例如,GroupMe客户端无法显示键入指示符。

丰富的用户控制


富用户控件是常见的UI控件,如按钮、图像、旋转木马和菜单,机器人向用户展示这些控件,用户通过这些控件来传达选择和意图。机器人可以使用一组UI控件来模仿应用程序,甚至可以在应用程序中嵌入运行。当机器人嵌入到应用程序或网站中时,它可以使用托管它的应用程序的功能来表示几乎任何UI控件。

应用程序和网站开发人员依靠UI控件使用户能够与他们的应用程序进行交互。这些相同的UI控件在机器人中也很有效。例如,按钮是向用户呈现简单选择的好方法。允许用户通过选择标记为“酒店”的按钮来传达“酒店”比强迫用户键入“酒店”更容易、更快。例如,在移动设备上,选择通常比键入更可取。

卡片


卡片允许您向用户展示各种视觉、音频和/或可选择的消息,并有助于帮助对话流畅。如果用户需要从一组固定的项目中进行选择,您可以显示一个卡片转盘,每张卡片都包含一个图像、一个文本描述和一个选择按钮。如果用户对单个项目有一组选择,您可以显示一个较小的单个图像和一组按钮,其中有各种选项可供选择。他们是否要求提供有关某个主题的更多信息?卡片可以使用音频或视频输出或详细说明购物体验的收据提供深入的信息。卡片的用途非常广泛,可以帮助引导用户和机器人之间的对话。你使用的卡片类型将取决于你的应用程序的需求。让我们仔细看看卡片、它们的动作和一些推荐用途。

Azure AI Bot Service卡是可编程对象,包含在各种渠道中可识别的标准化丰富用户控件集合。下表描述了可用卡的列表以及每种卡的最佳使用建议。

Card typeExampleDescription
AdaptiveCardImage of an Adaptive Card.An open card exchange format rendered as a JSON object. Typically used for cross-channel deployment of cards. Cards adapt to the look and feel of each host channel.
AnimationCardImage of an animation card.A card that can play animated GIFs or short videos.
AudioCardImage of an audio card.A card that can play an audio file.
HeroCardImage of a hero card.A card that contains a single large image, one or more buttons, and text. Typically used to visually highlight a potential user selection.
ThumbnailCardImage of a thumbnail card.A card that contains a single thumbnail image, one or more buttons, and text. Typically used to visually highlight the buttons for a potential user selection.
ReceiptCardImage of a receipt card.A card that enables a bot to provide a receipt to the user. It typically contains the list of items to include on the receipt, tax and total information, and other text.
SignInCardImage of a sign-in card.A card that lets a user sign in. It typically contains text and one or more buttons that the user can use to initiate a sign-in process.
SuggestedActionImage of suggested actions rendered as buttons within a chat.Presents your user with a set of card actions that represent a user choice. The buttons disappear once any of the suggested actions is selected.
VideoCardImage of a video card.A card that can play videos. Typically used to open a URL and stream an available video.
CardCarouselImage of a card carousel.A horizontally scrollable collection of cards that allows your user to easily view a series of possible user choices.


卡片允许你设计一次机器人,并让它在各种渠道上工作。但是,并非所有可用通道都完全支持所有卡类型。

  • 向机器人添加卡片的详细说明可以在添加富卡媒体附件和向消息添加建议操作中找到。
  • 有关示例代码,请参阅Bot Framework Samples仓库中的以下示例机器人。
SampleNameDescription
6Using cardsDemonstrates use of all card types.
7Adaptive CardsDemonstrates use of Adaptive Cards.
8Suggested actionsDemonstrates use of suggested actions.
15AttachmentsDemonstrates how to accept user provided attachments.


在设计机器人时,不要自动忽略常见的UI元素,因为它们不够智能。正如会话用户体验中所讨论的,你的机器人应该被设计成以最好、最快、最简单的方式解决用户的问题。避免从结合自然语言理解开始,因为这通常是不必要的,并且会引入不合理的复杂性。

小贴士
首先使用使机器人能够解决用户问题的最小UI控件,如果这些控件不再足够,则稍后添加其他元素。

文本和自然语言理解


机器人可以接受用户的文本输入,并尝试使用正则表达式匹配或自然语言理解API解析该输入。根据用户提供的输入类型,自然语言理解可能是也可能不是一个好的解决方案。

在某些情况下,机器人可能会问用户一个特定的问题。例如,如果机器人问“你叫什么名字?”,用户可能会用只指定名字“约翰”的文本或一句话“我叫约翰”来回答。

提出具体问题会缩小机器人可能合理收到的潜在响应的范围,从而降低解析和理解响应所需的逻辑复杂性。例如,考虑以下广泛的开放式问题:“你感觉怎么样?”。理解这样一个问题的潜在答案的许多可能排列是一项复杂的任务。

相比之下,诸如“你感到疼痛吗?是/否”和“你在哪里感到疼痛?胸部/头部/手臂/腿部”等具体问题可能会提示机器人可以解析和理解的更具体的答案,而不需要实现自然语言理解。

小贴士
只要有可能,问一些不需要自然语言理解能力来解析响应的具体问题。这将简化你的机器人,并增加你的机器人理解用户的成功率。

在其他情况下,用户可以键入特定命令。例如,一个使开发人员能够管理虚拟机的DevOps机器人可以被设计为接受特定的命令,如“/STOP VM XYZ”或“/START VM XYZ“。设计一个机器人来接受这样的特定命令可以获得良好的用户体验,因为语法易于学习,每个命令的预期结果都很明确。此外,机器人不需要自然语言理解能力,因为用户的输入可以使用正则表达式轻松解析。

小贴士
设计一个需要用户发出特定命令的机器人通常可以提供良好的用户体验,同时也消除了对自然语言理解能力的需求。

对于知识库或问答机器人,用户可以提出一般性问题。例如,想象一个机器人可以根据数千个文档的内容回答问题。Azure AI服务和Azure搜索都是专门为这类场景设计的技术。有关更多信息,请参阅设计知识机器人和语言理解。

小贴士
如果你正在设计一个机器人,它将根据数据库、网页或文档中的结构化或非结构化数据回答问题,可以考虑使用专门针对这种情况设计的技术,而不是试图用自然语言理解来解决问题。

在其他场景中,用户可以基于自然语言键入简单的请求。例如,用户可以键入“我想要一个辣肠披萨”或“我家3英里内有素食餐厅现在开门吗?”。自然语言理解API非常适合这样的场景。

使用API,你的机器人可以提取用户文本的关键组成部分,以识别用户的意图。在机器人中实现自然语言理解功能时,对用户可能在输入中提供的详细程度设定现实的期望。

小贴士
在构建自然语言模型时,不要假设用户会在初始查询中提供所有必需的信息。设计你的机器人,专门请求它所需的信息,必要时通过问一系列问题来引导用户提供这些信息。

语音


机器人可以使用语音输入和输出与用户进行通信。在机器人被设计为支持没有键盘或显示器的设备的情况下,语音是与用户沟通的唯一方式。

在丰富的用户控件、文本和自然语言以及语音之间进行选择


就像人们使用手势、语音和符号的组合进行交流一样,机器人也可以使用丰富的用户控件、文本(有时包括自然语言)和语音的组合与用户进行交流。这些通信方法可以一起使用;你不需要选择其中之一。

例如,想象一个帮助用户制作食谱的“烹饪机器人”,机器人可以通过播放视频或显示一系列图片来提供说明,解释需要做什么。一些用户可能更喜欢翻转食谱的页面,或者在组装食谱时用语音向机器人提问。其他人可能更喜欢触摸设备的屏幕,而不是通过语音与机器人交互。在设计你的机器人时,结合用户体验元素,支持用户可能更喜欢与你的机器人交互的方式,考虑到它要支持的特定用例。