IBMWatsonConversationV1 0.38.1

IBMWatsonConversationV1 0.38.1

watdevexJeff Arn 维护。



  • Anthony Oliveri 和 Mike Kistler

Watson Developer Cloud Swift SDK

Build Status Carthage Compatible Documentation CLA assistant

概览

Watson Developer Cloud Swift SDK 可以帮助移动开发者轻松构建 Watson 驱动的应用程序。通过 Swift SDK,您可以利用 Watson 高级人工智能、机器学习和深度学习技术来理解和处理非结构化数据,并以新的方式与移动用户进行互动。

有很多资源可以帮助您使用 Swift SDK 构建您的第一个认知应用程序

内容

通用

服务

This SDK提供用于访问以下Watson服务的类和方法。

开始前

需求

  • Xcode 9.3+
  • Swift 4.1+
  • iOS 10.0+

安装

可以使用Cocoapods、Carthage或Swift Package Manager安装IBM Watson Swift SDK。

Cocoapods

你可以用RubyGems安装Cocoapods。

$ sudo gem install cocoapods

如果你的项目还没有Podfile,请在项目根目录中使用pod init命令。要使用Cocoapods安装Swift SDK,请将你将使用的服务添加到Podfile中,如下所示(用你的应用名称替换MyApp)。下面的例子显示了目前所有可用的服务;你的Podfile应该只包含你的应用需要使用的服务。

use_frameworks!

target 'MyApp' do
    pod 'IBMWatsonAssistantV1', '~> 0.38.1'
    pod 'IBMWatsonAssistantV2', '~> 0.38.1'
    pod 'IBMWatsonConversationV1', '~> 0.38.1'
    pod 'IBMWatsonDiscoveryV1', '~> 0.38.1'
    pod 'IBMWatsonLanguageTranslatorV3', '~> 0.38.1'
    pod 'IBMWatsonNaturalLanguageClassifierV1', '~> 0.38.1'
    pod 'IBMWatsonNaturalLanguageUnderstandingV1', '~> 0.38.1'
    pod 'IBMWatsonPersonalityInsightsV3', '~> 0.38.1'
    pod 'IBMWatsonSpeechToTextV1', '~> 0.38.1'
    pod 'IBMWatsonTextToSpeechV1', '~> 0.38.1'
    pod 'IBMWatsonToneAnalyzerV3', '~> 0.38.1'
    pod 'IBMWatsonVisualRecognitionV3', '~> 0.38.1'
end

运行pod install命令,打开生成的.xcworkspace文件。要更新到新版本,使用pod update

在源文件中导入框架时,排除IBMWatson前缀和版本后缀。例如,安装IBMWatsonAssistantV1后,在源文件中导入它为import Assistant

有关使用Cocoapods的更多信息,请参阅Cocoapods指南

Carthage

您可以使用Homebrew来安装Carthage。

$ brew update
$ brew install carthage

如果您的项目还没有Cartfile,在项目的根目录中使用touch Cartfile命令。要使用Carthage安装IBM Watson Swift SDK,将以下内容添加到您的Cartfile中。

github "watson-developer-cloud/swift-sdk" ~> 0.38.1

然后运行以下命令以构建依赖项和框架

$ carthage update --platform iOS

按照以下Carthage安装说明在此处进行。注意,上述命令将下载并构建IBM Watson Swift SDK中所有的服务。确保将构建的框架(只针对您应用所需的服务)拖放到您的Xcode项目中,并将它们导入需要这些框架的源文件中。以下框架需要添加到您的应用中

  1. RestKit.framework
  2. 您的应用将要使用的服务(AssistantV1.frameworkDiscoveryV1.framework等)
  3. (仅限Speech to TextStarscream.framework

Swift Package Manager

将以下内容添加到您的Package.swift文件中,以将IBM Watson Swift SDK标识为依赖项。当您使用swift build构建项目时,包管理器将克隆Swift SDK。

dependencies: [
    .package(url: "https://github.com/watson-developer-cloud/swift-sdk", from: "0.38.1")
]

身份验证

Watson服务正在迁移到基于令牌的标识和访问管理(IAM)身份验证。

  • 对于某些服务实例,您通过使用IAM来对API进行身份验证。
  • 在其他实例中,您通过提供服务实例的用户名和密码来进行身份验证。
  • 视觉识别仅使用API密钥对5月23日之前创建的实例进行身份验证。视觉识别的新实例使用IAM

获取凭证

要确定使用哪种身份验证方法,请查看服务凭证。对于所有沃森服务,您以完全相同的方式查找服务凭证。

  1. 前往IBM云的仪表板页面。
  2. 要么点击现有的沃森服务实例,要么点击创建资源 > AI创建服务实例。
  3. 点击显示以查看您的服务凭证。
  4. 复制url以及apikeyusernamepassword

IAM

一些服务使用基于令牌的标识和访问管理(IAM)身份验证。IAM身份验证使用服务API密钥获取一个访问令牌,并将其与调用一起传递。访问令牌大约有效期为一个小时,必须重新生成。

您提供IAM服务的API密钥访问令牌

  • 使用API密钥以让SDK管理访问令牌的生命周期。SDK请求访问令牌,确保访问令牌有效,并在必要时刷新它。
  • 如果您想自行管理生命周期,请使用访问令牌。有关详细信息,请参阅使用IAM令牌进行身份验证。如果您想切换到API密钥,请用IAM API密钥替代您存储的IAM凭证。

提供IAM API密钥

let discovery = Discovery(version: "your-version-here", apiKey: "your-apikey-here")

如果您要为IBM Cloud Private (ICP)提供API密钥,请使用基本身份验证,将"apikey"作为username,将API密钥(前缀为icp-)作为password。请参阅用户名和密码部分。

提供accessToken

let discovery = Discovery(version: "your-version-here", accessToken: "your-accessToken-here")

更新accessToken

discovery.accessToken("new-accessToken-here")

用户名和密码

let discovery = Discovery(username: "your-username-here", password: "your-password-here", version: "your-version-here")

API密钥

注意:此类型身份验证仅适用于视觉识别,并且用于在2018年5月23日之前创建的实例。较新的视觉识别实例使用IAM。

let visualRecognition = VisualRecognition(apiKey: "your-apiKey-here", version: "your-version-here")

自定义服务URL

您可以通过修改serviceURL属性来设置一个自定义服务URL。在特定区域运行实例或通过代理连接时可能需要自定义服务URL。

例如,以下是如何连接到在德国托管的Tone Analyzer实例的方法

let toneAnalyzer = ToneAnalyzer(
    username: "your-username-here",
    password: "your-password-here",
    version: "yyyy-mm-dd"
)
toneAnalyzer.serviceURL = "https://gateway-fra.watsonplatform.net/tone-analyzer/api"

自定义头部

可以向Watson服务发送不同的头部。例如,Watson服务记录请求及其结果以改进服务,但您可以包含X-Watson-Learning-Opt-Out头部进行退出。

我们为每个类公开了defaultHeaders公共属性,以便用户可以轻松自定义头部。

let naturalLanguageClassifier = NaturalLanguageClassifier(username: username, password: password)
naturalLanguageClassifier.defaultHeaders = ["X-Watson-Learning-Opt-Out": "true"]

每个服务方法还接受一个可选的headers参数,它是一个包含请求头部的字典,这些头部将随请求一起发送。

示例应用

同步执行

默认情况下,SDK执行所有网络操作都是异步的。如果您的应用程序需要同步执行,可以使用DispatchGroup。例如:

let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
assistant.message(workspaceID: workspaceID) { response in
    print(response.output.text)
    dispatchGroup.leave()
}
dispatchGroup.wait(timeout: .distantFuture)

Objective-C 兼容性

有关在 Objective-C 应用程序中使用 Watson 开发者云 Swift SDK 的更多信息,请参阅本教程

Linux 兼容性

要在 Linux 项目中使用 Watson SDK,请遵循Swift 包管理器说明。请注意,由于语音到文本和文本到语音功能依赖于 Linux 上不可用的框架,因此不支持这些功能。

贡献

我们非常欢迎任何形式的帮助!如果您想做出贡献,请阅读我们的贡献指南,了解如何开始。

许可协议

本库遵循 Apache 2.0 许可协议。完整许可文本可在 LICENSE 中找到。

此 SDK 旨在与 Apple iOS 产品一起使用,并建议与官方许可的 Apple 开发工具一起使用。