Swift 3中的API.AI
目的
我希望到本文结束时,您将像老板一样,学习如何在自己的Swift 3项目中实现API.AI。
这篇文章是我一段时间以来收集到的信息的汇总,并认为这对分享很有帮助。 一个帖子,面向有意构建自己的机器人或在互联网上发现不足/过时信息的人们。
如果您阅读了我以前的博客文章,您会知道我对API.AI缺乏相关支持的感觉。 过时的资源和大量的挖掘工作。 这是您可以遵循的直线指南。
先决条件
在继续之前,强烈建议您对API.AI有足够的了解。 如果这是您第一次了解API.AI,请查看API.AI简介。 除此之外,让我们开始吧。
项目构想
在写完上面的标题后,我决定花15分钟的时间提出一个简单而有意义的AI项目构想。
我已经决定我们要构建一个交通信号灯机器人应用程序。 我想要一个简单且适用的项目。
我们将拥有一个了解我们的机器人。 根据我们的输入更改屏幕上的颜色。 我们还将有一个与我们对话的机器人。
设置API.AI
再说一次,如果您还没有签出API.AI指南,我强烈建议您在继续之前进行操作。 这里。
让我们从打开API.AI开始。 然后登录,我们应该在主控制台上。
现在创建一个名为“ Traffic-Master”的代理。创建一个名为“ change.color”的意图。
用红色,黄色和绿色条目创建一个“颜色”实体。 还添加同义词,如停止,减速和前进。 我们可能想用动词来指代这些颜色,例如“向我展示停止色”。
现在转到我们刚才创建的“ change.color”意图。 输入您的意图的用户表达式。
例:
太酷了,现在让我们向下滚动到“响应”部分。 在文本响应下添加以下两行:
am! 我是彩色的!
玫瑰是红色的。 紫罗兰是蓝色的。 我只是将颜色更改为只适合您的颜色。
我们刚刚教我们的机器人如何以文本形式响应更改颜色的意图。 我们给了它两种响应方式,所以我们的机器人不是那么平淡。 机器人的行为将与人类更相似。 您向漫游器添加的变化越多,漫游器对您的响应方式就越多 。 它太酷了。
在API.AI上测试
现在,我们将测试我们的机器人。 向右看,您应该看到一个要测试的空间。 按下麦克风按钮,然后说“给我看红色”。或者直接输入。
然后尝试“该走了。”记住,我们将go设置为绿色等。还要注意我们的机器人的两个不同响应。
太好了,我们的流量管理员了解我们!
现在将“ change.color”作为我们的操作,然后按保存。 当我们编写应用程序代码时,其目的将变得清楚。 这充当标识符。
设置Xcode
继续并在Xcode中创建一个新的Single View Application项目。 我将项目命名为“ Traffic Lights AI”。
现在,通过打开Terminal在您的项目中创建一个新的podfile。 在终端中,转到项目目录,然后输入pod init 。 接下来,打开podfile并添加此pod:
豆荚“ ApiAI”
podfile应该看起来像这样:
#取消注释下一行以定义项目的全局平台
#platform:ios,'9.0'
目标是“交通灯AI”
#如果您不使用Swift并且不想使用动态框架,请注释下一行
use_frameworks!
#交通信号灯AI的窗格
豆荚“ ApiAI”
结束
如果确实如此,则保存文件。 返回您的终端并运行以下代码:
吊舱安装
开始使用Xcode
故事板
现在,我们将需要我们的View Controller看起来像下面的图像。 我有一个UITextField,UIButton和UIView。 将它们拖到情节提要中并给它们约束。 只要它们看起来相对相同。 我们很好
注意:UIView的背景颜色为白色。
现在重命名按钮的标题,以将UIKit对象从情节提要发送并连接到View Controller:
UITextField —出口— tfInput
UIView —出口— viewColor
UIButton —操作— btnSendDidTouch
太酷了,既然我们大吃了起步板。 现在是我们用餐的主要时间了。 代码。
应用程序委托
在AppDelegate.swift文件的最顶部导入ApiAI。 我们需要配置我们的API.AI:
func application(_ application:UIApplication,didFinishLaunchingWithOptions launchOptions [UIApplicationLaunchOptionsKey:Any]?)->布尔{
让配置:AIConfiguration = AIDefaultConfiguration()
configuration.clientAccessToken =“ YOUR_CLIENT_ACCESS_TOKEN”
让apiai = ApiAI.shared()
apiai?.configuration =配置
返回真
}
这就是API.AI识别我们所引用的代理的方式。 要获取客户端访问令牌,请转到主控制台,然后按座席姓名旁边的设置按钮。
然后向下滚动页面,您应该看到客户端访问令牌。
查看控制器
好的,我们转到ViewController.swift文件。 导入ApiAI。 导入AVFoundation。 AVFoundation,因为我们想听从设备/模拟器发出的文字。
在您的课程所在的类的顶部声明并初始化以下常量:
//让我们的设备说话
让speechSynthesizer = AVSpeechSynthesizer()
然后将这两个函数添加到您的View Controller类中:
//设备说话
func talk(text:String){
让SpeechUtterance = AVSpeechUtterance(string:text)
speechSynthesizer.speak(speechUtterance)
}
//动画在UIView上具有颜色变化
func changeViewColor(color:UIColor){
viewColor.alpha = 0
viewColor.backgroundColor =颜色
UIView.animate(withDuration:1,动画:{
self.viewColor.alpha = 1
},完成:无)
}
在btnSendDidTouch内部,添加以下内容:
让请求= ApiAI.shared()。textRequest()
如果让text = self.tvInput.text,则文本!=“” {
请求?.query =文本
}其他{
返回
}
我们在这里所做的是初始化一个请求。 在此之前,我们检查文本字段是否为空。 如果是,那么我们就返回。
现在,在这些代码下方,在屏幕截图中添加代码。 它看起来比在代码块中键入要清晰得多。 无论如何我们自己输入时都会更清楚发生了什么。 因此,输入。
这里的功能看起来像:
我们致电了API.AI。 API.AI响应后,我们将看到响应动作。 如果操作是“ change.color”,则我们可以安全地打开结果参数并相应地更改视图的颜色。 如果没有,那么我们只是将视图的颜色更改为黑色。 如果是黑色,则我们可以从视觉上看到AI无法理解我们。
之后,我们会安全地打开文本回复,并让我们的文本以语音发言。 然后,如果由于任何原因对API.AI的调用均未成功,我们将打印出错误以进行调试。
最后两行及其说明:
//发送请求到API.AI
ApiAI.shared()。enqueue(请求)
//单击发送按钮后的空文本字段
tfInput.text =“”
就这样 做完了
我们拥有一个了解我们,与我们对话并为我们改变色彩的机器人。
像热测试一样
调出最大音量。 确保连接一些高质量的扬声器以获得完整的AI体验。 您将需要它。
前进。 输入机器人的命令,然后按发送。 如果漫游器了解您,则UIView的颜色将淡出并淡入红色,黄色或绿色。 否则,它将变为黑色,您可以将新的用户表达式添加到AI的知识库中。 而已。 我现在要睡觉了。
最后的评论
希望您喜欢并从我的文章中学到了宝贵的经验。 如果有的话,请点击那个❤按钮让我知道,然后在Medium上关注我。 另外,分享这篇文章,以便您的圈子也可以获取一些知识。
最后,如果您有任何评论,问题或建议,请随时将其放在下面。 告诉我您接下来想学什么!