如何从.net核心调用ibm watson api

Posted

技术标签:

【中文标题】如何从.net核心调用ibm watson api【英文标题】:how to call ibm watson api from .net core 【发布时间】:2017-08-18 07:50:57 【问题描述】:

我正在尝试调用 watson 个性洞察 api,环顾四周后,似乎解决方案是使 .net 等效于以下 curl 请求。我对此很陌生,想知道是否可以获得指导或指向相关教程。

curl -X POST -u "username:password"
--header "Content-Type: application/json"
--data-binary @profile
"https://gateway.watsonplatform.net/personality-insights/api/v3/profile?version=2016-10-20&consumption_preferences=true&raw_scores=true"

【问题讨论】:

【参考方案1】:

在这种情况下,您是否使用 curl 调用 API?根据你的例子...

通过提供您要使用的服务实例的服务凭据 中提供的usernamepassword 来调用 Personality Insights。 API 使用HTTP 基本身份验证。

用于身份验证:

curl -u "username":"password"
"https://gateway.watsonplatform.net/personality-insights/api/v3/method"

Bluemix 从所有请求中收集数据并使用这些数据来改进 Watson 服务。

请求记录:

curl -u "username":"password"
--header "X-Watson-Learning-Opt-Out: true"
"https://gateway.watsonplatform.net/personality-insights/api/v3/method"

调用和获取响应的方法:

curl -X POST -u "username:password"
--header "Content-Type: application/json"
--data-binary @profile.json
"https://gateway.watsonplatform.net/personality-insights/api/v3/profile?version=2016-10-20&consumption_preferences=true&raw_scores=true"

IBM Watson API 使用标准 HTTP 响应代码来指示方法是否成功完成。

200 级响应始终表示成功。

400 级响应表示某种故障。

500 级响应通常表示内部系统错误。

查看来自 IBM 的 documentation 进行开发,有所有示例如何调用以及是否有错误原因。和this 用于验证如何工作以及如何使用。

Demo here,如果你愿意,你可以从 github 上 fork。

【讨论】:

【参考方案2】:

您可以使用Watson Developer Cloud .NET Standard SDK。使用

通过 NuGet 安装 Personality Insights 服务
Install-Package IBM.WatsonDeveloperCloud.PersonalityInsights -Pre

实例化服务

// create a Personality Insights Service instance
PersonalityInsightsService _personalityInsights = new PersonalityInsightsService();

// set the credentials
_personalityInsights.SetCredential("<username>", "<password>");

调用服务

var results = _personalityInsights.GetProfile(ProfileOptions.CreateOptions()
                                                         .WithTextPlain()
                                                         .AsEnglish()
                                                         .AcceptJson()
                                                         .AcceptEnglishLanguage()
                                                         .WithBody("some text"));

未来版本中,您将能够使用命名参数而不是构建选项来调用服务。

var results = _personalityInsights.GetProfile(
        "<input>", 
        "<content-type>", 
        "<content-language>", 
        "<accept>", 
        "<accept-language>",
        "<raw-scores>",
        "<csv-headers>"
        "<consumption-preferences>",
        "<version>"
    );

【讨论】:

以上是关于如何从.net核心调用ibm watson api的主要内容,如果未能解决你的问题,请参考以下文章

如何从 javascript 调用 IBM Watson 服务

从 C# 中的 API 使用 IBM Watson 对话

使用 IAM API 密钥的 IBM Watson 语音转文本 WebSocket 授权

iOS/IBM Cloud/Swift:使用 AlamoFire 发布到 Watson API

我可以在没有 Bluemix 的情况下使用 IBM Watson 服务吗?

IBM Watson 语音到文本 API 中的 1006 错误代码