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上关注我。 另外,分享这篇文章,以便您的圈子也可以获取一些知识。

最后,如果您有任何评论,问题或建议,请随时将其放在下面。 告诉我您接下来想学什么!