网站 开发逻辑,电话销售电销系统,河南做网站公司汉狮,淘宝价格网站建设Microsoft Bot Framework、LUIS、Azure Bot Service 和 Azure Functions 均已推出。最近到处有人在说#xff1a;智能机器人是新应用。原因之一就是#xff0c;智能机器人能够让你轻松、高效地完成常见任务。想一想#xff1a; 只需让某种数字助理为你执行相关操作#xff… Microsoft Bot Framework、LUIS、Azure Bot Service 和 Azure Functions 均已推出。最近到处有人在说智能机器人是新应用。原因之一就是智能机器人能够让你轻松、高效地完成常见任务。想一想 只需让某种数字助理为你执行相关操作即可预订航班或餐厅餐位无需从必应或 Google 跳转到两三个或更多网站。但应用开发者欣然接受这种趋势可能还有更加重要的原因 移动应用的开发成本日益上涨。仅生成一个适用于各种平台iOS、Android 和 Windows的移动应用的费用介于 30,000 至 500,000 美元之间。 确实有一些跨平台技术如 Unity 或 Xamarin可有助于降低开发适用于多个平台的移动应用的成本。但智能机器人正发展成为另一选择方案通过采用交谈界面来改变范例。这种方法利用了人类数千年以来的沟通方式包括语音和文本想一想 Skype 或 Messenger。还可以使用图像、视频和传统控件如按钮和卡片操作增强交谈 UI (CUI) 的功能。智能机器人侧重于简约和输入的自然属性而不是使用传统控件来精心制作 UI。 有何优势 由于组织摒弃了为每个屏幕范例生成不同 UI 的做法改为采用适用于所有设备和外形规格无论是否有屏幕的交谈界面因此总共可能可以节省数十亿美元。例如我生成了一个 Active Fitness 智能机器人可以帮助你寻找附近的跑步、骑自行车、徒步、滑雪和其他路线。若要将此智能机器人添加到 Skype请访问 bit.ly/2knZVbr。 虽然这款应用具有丰富的 UI 和控件但智能机器人旨在理解交谈输入如图 1 所示。 图 1显示路线的 Active Fitness 智能机器人 影响力不仅仅局限于应用开发。智能机器人可以解决网站越来越难以导航的难题其中许多内容使用旧的或过时的 Web 框架或标准。例如试着在任意客户服务网站上完成一个任务可能要花上半个小时来尝试导航网站菜单。 智能机器人还有独特的影响力。设想一下有一个纸牌游戏应用如 Solitaire。在有智能机器人之前我不得不生成每个平台对应的版本。而现在智能机器人则突破了平台锁定的困境。突然间我的基于 Windows 的应用成为我所有好友的 iPhone 和 Android 手机上的智能机器人。为什么会这样呢 这是因为智能机器人适用于以下各种渠道Skype、Telegram、Facebook、Messenger、Slack 和其他到处可见的应用平台。 我想使用 Microsoft Bot Framework 生成世界上最受欢迎的游戏是件很酷的事情。图 2 展示了我尝试生成的随时可以玩的 Solitaire 智能机器人。若要将此智能机器人添加到 Skype请访问 bit.ly/2jrzP7S。 图 2我在 Skype 上的 Solitaire 智能机器人每周处理 500,000 个请求 若要开始创建智能机器人请转到 Microsoft Bot Framework 网站 (dev.botframework.com)。可以使用 Microsoft .NET Framework 或 Node.js以你喜欢使用的技术为准生成智能机器人。最近Microsoft 新增了 Azure Bot Service (bit.ly/2knEtU6)作为另一种方便使用的智能机器人实现方式。Azure Bot Service 提供基于浏览器的体验方便你使用易用模板生成智能机器人。此服务使用 Azure Functions这是一种基于事件的无服务器代码体系结构可提供“函数”方便你节省资金并更好地扩展智能机器人。 下面介绍了 Azure Functions 的亮点 开始生成智能机器人时我意识到每当需要生成智能机器人时都不得不新建一个 Web 应用来提供应用容器。如果是一个应用这没有关系但如果有多个智能机器人每个都需要单独的基础结构情况就不一样了。相反使用 Azure Functions可以在云中托管小段代码而无需考虑整个应用基础结构。 智能和智能机器人开发 就像应用一样智能机器人旨在尽力帮助你完成特定的任务。例如我的 Solitaire 智能机器人可以和你一起玩纸牌甚至可以教你游戏的规则和技巧。它确实不太可能通过图灵测试Alan Turing 于 20 世纪 50 年代提出的关于衡量计算机智能的测试但这对于大多数智能机器人来说都是过分之举。 同样当地车管所的智能机器人应该知道如何提交驾照登记付款或如何帮助你交罚单或提交驾照延期换证申请。天气智能机器人需要回答与天气相关的问题并还包括能确定地理位置和用户对特定天气数据的需求的智能组件。 智能机器人可以通过交谈界面自动完成许多任务但也可以通过图像、按钮和其他控件增强功能使之更方便移动设备用户使用。只有当对话变得开放时智能机器人的智能服务才能真正派上用场。使用对话框提供一组预定义的答案是相对容易的标准编程任务。另一方面响应人类对话意味着智能。幸运的是Microsoft Bot Framework 提供以下两项支持 LuisDialogs 支持基于自然语言的对话而更传统的控件则支持用户通过按按钮、传送视图或其他控件来选择选项。 智能是许多智能机器人采用的交谈 UI 的核心以便能够与人类用户进行直观式交互。借助越来越多的 Microsoft 认知服务 (bit.ly/2jx1kMQ)可以将智能功能直接引入智能机器人中。这些服务包括但不限于 构想语音语言知识搜索位置 请参阅 Alessandro Del Sole 关于认知服务的精彩文章 (msdn.com/magazine/mt742868)。 让智能机器人更智能需要采取下面一些常见措施这不仅可能会促使其通过图灵测试还一定会改进与智能机器人的对话 对话框、图像和其他能够收集规范化数据、传达消息和简化对话的方式本地化可提高智能机器人基本功能的帮助和对话框管道让问题不重复的用户数据如地理位置 你并不想太过雄心勃勃来尝试创建像 Douglas Adams 描绘的城市大小一般“深思”计算机出自“银河系漫游指南”的智能机器人。而且当我开始生成智能机器人时我仅关注对完成主要任务必不可少的功能例如玩纸牌游戏或建议最佳跑步路线然后再通过智能组件增强功能。 借助 LUIS 实现语言智能 要添加到交谈界面的首个智能组件是 Microsoft 语言理解智能服务 (LUIS)。此服务的工作方式为分析你向其发送的对话或句子然后提取特定于应用的实际意向和实体。若要将 LUIS 对话框添加到智能机器人只需创建继承 LuisDialog 的类在 luis.ai 中注册 LUIS 应用然后向对话框提供应用 ID 和密钥即可 [LuisModel(YOUR_LUIS_APP_ID, YOUR_LUIS_APP_KEY)][Serializable]public class IntelligentLanguageDialog : LuisDialogobject 有关更深入的 LUIS 指南请查看 Ashish Sahu 在 2017 年 1 月 MSDN 杂志中发表的文章 (msdn.com/magazine/mt745095)。 在我的 Active Fitness Trails 智能机器人图 3中我定义了与健身活动相关的意向我期望用户在智能的智能机器人对话中提供地理位置和健身活动信息。例如我希望用户能够说出“向我显示美国科罗拉多州的滑雪路线”智能机器人应该理解这句话然后提供一组路线。我的 Active Fitness 应用用户每天都会查找数百万条路线通过查询 Active Fitness他们可以映射我的 LUIS 模型中的 GetActivityLocation 意向这将把地理位置和活动实体返回给智能机器人。 图 3LUIS 中的模型 设想一下我需要编写多少代码才能从非规范化用户输入中提取所有此类数据 即使是一个很短的人类句子往往也很复杂只有机器学习工具才能理解和处理。添加这一简单句子的所有可能变体你会发现智能机器人的智能服务并不是一件容易完成的任务。幸运的是LUIS 可充当智能对话分析器和提取程序为你完成所有苦差事。你只需将此组件添加到智能机器人即可。 定义模型后我便可以提供有助于 LUIS 了解我的意向以及如何为智能机器人获取实体的言辞从而定型模型。为模型定型我的 GetActivityLocation 意向时我提供了以下言辞 “显示附近的骑自行车路线”、“显示奥地利最新的滑板滑雪路线”和“美国犹他州最长的滑雪路线在哪里” 如图 4 所示当 LUIS 处理实体时它会突出显示我在模型中指定的实体。如果 LUIS 无法识别实体该怎么办 在这种情况下需要通过手动映射实体来定型模型。例如我需要将我的智能机器人定型为识别“滑板滑雪”活动。 图 4LUIS 中的模型定型 接下来定义用于处理 LUIS 模型返回的意向的方法。可以定义用于处理模型中的 None 意向或其他任何意向的方法如图 5 所示。 图 5处理意向 [LuisIntent(None)]public async Task NoneIntent(IDialogContext context, LuisResult result){await context.PostAsync($You have reached the none intent. You said: {result.Query}); // context.Wait(MessageReceived);}// Go to https://luis.ai and create a new intent, // then train/publish your luis app. // Finally, replace GetActivityLocation with the name of your newly // created intent in the following handler. [LuisIntent(GetActivityLocation)]public async Task GetActivityLocation(IDialogContext context, LuisResult result){await context.PostAsync($You have reached the GetActivityLocation intent. You said:{result.Query}); // context.Wait(MessageReceived);} 每当模型确定输入与 GetActivityLocation 意向匹配时都会调用我的智能机器人方法。LUIS 在 LuisResult 对象中返回结果其中包括地理位置和活动等实体。例如我想检查实体是否包含国家/地区。为此我使用 LuisResult 对象的 TryFindEntity 方法查找“builtin.geography.country”类型的实体。LUIS 提供了大量预建实体这大大简化了你的工作。有关这些实体的完整列表请访问 bit.ly/2kWgCHR。 请注意builtin.geography 实体包含子实体例如国家/地区和城市。包含子实体的实体称为复合实体。在此示例中我特别感兴趣的是国家/地区子实体如图 6 所示。 图 6查找国家/地区 // Go to https://luis.ai and create a new intent, then train/publish your luis app. // Finally, replace GetActivityLocation with the name of your // newly created intent in the following handler. [LuisIntent(GetActivityLocation)]public async Task GetActivityLocation(IDialogContext context, LuisResult result){await context.PostAsync($You have reached the GetActivityLocation intent. You said:{result.Query}); // EntityRecommendation country;if(result.TryFindEntity(builtin.geography.country, out country)){await context.PostAsync($Country: {country.Entity});}context.Wait(MessageReceived);} 智能机器人实用提示 Microsoft 正在努力推动智能机器人开发取得进展发布了语言理解智能服务 (LUIS) 和 Azure Bot Service 等工具以帮助简化这一新款软件的创建和管理。值得庆幸的是现如今大多数应用都可以轻松转换成智能机器人其中的交谈 UI (CUI) 非常适合多任务、多类型的应用。为了能够最有效地开发智能机器人请注意以下几点 以扩大覆盖面为目标 智能机器人最引人注目的一点是可在所有 PC、平板电脑和智能手机上的渠道如 Skype、Facebook、Messenger 和 Telegram中运行。通过向多个渠道发布智能机器人最大限度地扩大受众覆盖面。此外利用可用的服务将智能机器人本地化成多种语言。 注重交谈体验 充分利用交谈界面它非常适合多任务、多类型的应用。为了提供最佳体验请重点关注交谈界面如聊天、语音和语言而不是按钮等传统 UI 控件。 利用服务 新推出的 Azure Bot Service 是一个基于云的平台可最大限度地减少基础结构开销并允许你扩展智能机器人项目。此服务的幕后支持技术为 Azure Functions使用此技术开发者可以在云中托管小段代码。 以任务为中心 生成智能机器人时以每个智能机器人需要解决的一个或多个特定任务为中心。不要过于复杂AI 不一定越多越好。从智能机器人需要解决的主要任务着手然后再注入智能组件。 开放式对话 利用 LUIS 中内置的智能组件来支持开放式对话并为智能机器人提供输入。为了提供最佳体验请注意定型 LUIS 模型以一组简明的实体和意向为中心。模型越不“模糊”AI 的效果就会越好 当然我还需要知道活动实体可以使用 Active Fitness 跟踪超过 50 个活动如跑步、骑自行车、滑雪和滑板滑雪。因此当我问 “奥地利最好的滑雪路线在哪里” 我期望 Active Fitness 智能机器人返回“滑雪”活动实体如图 7所示。 图 7使用智能机器人仿真器演示 GetActivityLocation 意向的实际效果 结果就是我更新了 GetActivityLocation 方法使其能够返回活动。请注意与 builtin.geography.country 不同活动不是内置实体。不过我在定型模型时提供了一些言辞LUIS 能够相当好地获取实体如图 8 所示。 图 8使用言辞定型模型 // Go to https://luis.ai and create a new intent, then train/publish your luis app. // Finally, replace GetActivityLocation with the name of your newly // created intent in the following handler. [LuisIntent(GetActivityLocation)]public async Task GetActivityLocation(IDialogContext context, LuisResult result){await context.PostAsync($You have reached the GetActivityLocation intent. You said:{result.Query}); // EntityRecommendation country;if(result.TryFindEntity(builtin.geography.country, out country)){await context.PostAsync($Country: {country.Entity});}EntityRecommendation activity;if (result.TryFindEntity(activity, out activity)){await context.PostAsync($Activity: {activity.Entity});}context.Wait(MessageReceived);} Bot Framework 提供了深入的通用 C# 和 Node.js 代码示例网址分别为 bit.ly/2gHupjg 和 bit.ly/2kWolWx。 实现地理位置智能 虽然许多智能机器人根据地理位置进行响应但编写地理位置响应代码可能会很麻烦。在前面的示例中我使用了 LUIS 智能组件来获取 LUIS 从对话中解析的内置地理位置实体。幸运的是Microsoft 必应地理位置控件现在包含在 Bot Framework 中。这样一来开发者便可以更轻松地收集地理位置数据。 Bot Framework 的地理位置控件还提供包含地图的直观界面见 图 9。如果智能机器人需要在 Skype、Facebook 和 Messenger 等渠道中通过易用或本机的界面提供包含邮政编码、城市、区域和地区数据的地址这就可能非常方便。 图 9使用包含必应地图的直观界面的地理位置控件 若要开始使用必应地理位置控件只需为 .NET 项目通过 NuGet或 Node.js 项目通过 npm获取必应地图 API 密钥和地理位置对话框组件然后在代码中初始化并调用地理位置对话框的实例即可 var options LocationOptions.UseNativeControl | LocationOptions.ReverseGeocode;var requiredFields LocationRequiredFields.Locality |LocationRequiredFields.Region |LocationRequiredFields.Country;var prompt Where are you looking for trails?;var locationDialog new LocationDialog(apiKey, this.channelId, prompt, options, requiredFields);
context.Call(locationDialog, this.ResumeAfterLocationDialogAsync); LocationDialog 提供用于请求各种地址字段和自定义提示的选项。结果返回时可以在 Resume 方法中进行处理如图 10 所示。 图 10在 Resume 方法中处理地理位置结果 private async Task ResumeAfterLocationDialogAsync(IDialogContext context, IAwaitablePlace result){var place await result;if (place ! null){var address place.GetPostalAddress();var formattedAddress string.Join(, , new[]{address.Locality,address.Region,address.Country}.Where(x !string.IsNullOrEmpty(x)));await context.PostAsync(Where are you looking for trails formattedAddress);}context.Donestring(null);} 超越 LUIS 除了 LUIS 之外认知服务还提供了其他许多 API可用于赋予智能机器人技能而开发者个人或企业可能因非常复杂而难以实现这些技能。幸运的是你不必自行实现它们 借助推荐 API可以添加产品如经常一起购买的产品推荐或个性化用户推荐。 影像 API 向智能机器人赋予高级图像和视频技能以识别对象、人脸、年龄、性别或情绪。 学术知识 API 可以添加学术知识、创建问答并能向智能机器人赋予特定的知识库技能。 值得一提的是智能机器人还支持第三方 API 和服务。可以使用自己的服务和 API让你的智能机器人与众不同并解决以前从未解决过的问题。Bot Framework 确实通过简单的交谈界面和易用 API 带来了新的机遇同时见证了人类知识的进步并打开了辅助功能的大门。 新增精彩功能 除了针对 .NET Framework 和 Node.js 以及 REST API 定期更新 Bot Framework 之外Microsoft 最近还新增了功能让智能机器人开发更上一层楼。 Bot Framework 最新增添的功能之一是 Azure Bot Service此服务现在可方便你轻松利用云的便利性和可扩展性来开发智能机器人项目 (bit.ly/2knEtU6)。Bot Service如图 11 所示使用 Azure Functions 和一系列快速启动模板以帮助你充分利用智能机器人代码并让智能机器人扩展到任意级别 (bit.ly/2kuo9Bb)。例如可以选择基本、表单、主动、LUIS 或问答智能机器人模板每个模板都可以生成一个随时都能运行的智能机器人你可以根据需要对其进行扩展。 图 11直接在浏览器中编辑 Bot Service 代码 Azure Functions 是 Azure Bot Service 的幕后支持技术根据无服务器体系结构和按需计算来提供事件驱动的体验。这确实意味着不再需要为每个智能机器人提供昂贵的应用托管基础结构。相反可以让智能机器人更轻量级、更易于扩展并节省在开发上花费的精力和时间同时简化与认知服务的连接。 QnA Maker (qnamaker.ai) 是另一个值得一提的附加服务。QnA Maker 是 Azure Bot Service 提供的模板智能机器人项目用于十分常见的情景即智能机器人回答现有知识库中的典型问题。 总结 使用 Microsoft Bot Framework可以快速轻松地开始生成智能机器人为新的和现有的应用或服务提供交谈界面。这样可以打造全新体验通过 Skype、Facebook、Messenger、Telegram 和其他渠道覆盖数十亿用户。Microsoft 认知服务提供许多智能 API方便你添加到智能机器人中。 Bot Framework 生态系统正在快速发展。为了利用这一点可以添加认知服务附带的服务或使用第三方提供商的 API让智能机器人更智能且能力更强。一切始于非常简单的智能机器人你和你的用户会有许多发现。智能机器人确实是新应用或现有应用的扩展并且添加了智能组件真的是非常强大。此外智能机器人还减少了在开发上花费的时间、精力和成本。 介绍我的智能机器人 我在过去几个月里开发了几个智能机器人所以我决定在一个方便访问的地方图 A 中的列表集中介绍它们。看一看我的智能机器人看能否激发你开发自己的智能机器人。单击提供的链接可以将相应的智能机器人添加到 Skype。 图 A我的一系列智能机器人 智能机器人 说明Solitaire (bit.ly/2jrzP7S)Solitaire 被认为是世界上最受欢迎的纸牌游戏。现在使用常用的聊天客户端如 Skype即可享受游戏乐趣无需启动应用。Active Fitness (bit.ly/2knZVbr)查找世界各地的跑步路线、骑自行车路线、徒步路线或滑雪路线所有这些都来自全球顶级的健身社交网络。UNO (bit.ly/2k4AzyH)在 Skype、Messenger 或 Telegram 上玩这款世界著名的纸牌游戏。Freecell (bit.ly/2l0NM9b)Freecell 是一款很棒且极具挑战性的纸牌游戏有多个难度等级。从简单等级开始学学如何玩它。Crazy Eights (bit.ly/2kY7EdN)看一看这款易上手的纸牌游戏。Card Games Chest (bit.ly/2klXOCV)学着玩一些最受欢迎的纸牌游戏包括 Solitaire、UNO、Crazy Eights、101、Freecell 和 Mau-Mau。 Kevin Ashley (kashleytwit) 是 Microsoft 架构技术推广者。他是《Windows 8 专业编程》Wrox2012 年一书的合著者而且是最受欢迎的应用、智能机器人和游戏的开发者之一其中最著名的应用当属 Active Fitness (activefitness.co)。他经常参加不同活动、行业演出和网络广播并进行技术方面的演讲。他的职责在于与创业公司和合作伙伴密切合作并在软件设计、业务和技术战略、体系结构和开发方面提供相关建议。你可以访问他的博客 (kevinashley.com)也可在 Twitter (kashleytwit) 上关注他。 衷心感谢以下 Microsoft 技术专家对本文的审阅 Mat Velloso 原文地址https://msdn.microsoft.com/en-us/magazine/mt795186 .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注