具有 ASP.NET 个 Web 应用程序的 Bluemix 服务

Bluemix services with ASP.NET web application

我正在尝试在 IBM Bluemix 上构建一个 ASP.NET Web 应用程序并将其与某些 Watson 服务连接。

目前,我只能从目录中获得 ASP.NET 5 Cloudant Starter 应用程序。从我看到的一些 youtube 视频中,有一个带有 ASP.NET 和 Watson 问答服务的示例,但找不到了。

有人可以帮助让 .Net 与 IBM Bluemix Watson 服务一起工作吗?我想要 TTS 和 Visual Recognition,但任何服务连接方面的帮助都有助于了解我的解决方案中缺少的内容。

感谢您的帮助。

Watson 问答服务 replaced by some other services. There is now a sample using the Visual Recognition service available on github。此示例提供了一个 VisualRecognitionService class,它展示了如何使用 HttpClient.

调用 Watson REST API

Startup.cs 中的 Startup 函数展示了如何将 VCAP_SERVICES 环境变量解析为 JSON object 并将这些值存储在应用程序的VisualRecognitionService 的构造函数可以在调用 REST API.

时访问它们的配置

VisualRecognitionService 中的 VrClient 函数创建并 returns 一个 HttpClient 以及联系 Watson REST API 所需的请求 header ] 包括用于选择退出与 Watson 服务共享数据的 X-Watson-Learning-Opt-Out header。

private HttpClient VrClient()
{
    var httpHandler = new HttpClientHandler()
    {
        AllowAutoRedirect = false,
        AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
        UseCookies = true,
        CookieContainer = new CookieContainer()
    };

    var auth = Convert.ToBase64String(Encoding.ASCII.GetBytes(_vrCreds.Username + ":" + _vrCreds.Password));

    HttpClient client = HttpClientFactory.Create(httpHandler, new LoggingHandler());
    client.BaseAddress = new Uri(_vrCreds.Url);
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", auth);

    if (learningOptOut)
    {
        client.DefaultRequestHeaders.Add("X-Watson-Learning-Opt-Out", learningOptOut.ToString());
    }

    return client;
}

使用 VrClient 的最简单示例是在 VisualRecognitionService 中的 GetClassifiersAsync 方法中,它检索可用图像 classifiers 的列表(默认 classifiers + 任何 user-created classifiers):

public async Task<ClassifiersResponse> GetClassifiersAsync()
{
    ClassifiersResponse model = null;
    using (var client = VrClient())
    {
        try
        {
            var response = await client.GetAsync("api/v2/classifiers?version=" + VersionReleaseDate);

            var msg = string.Format("{0} {1}", response.StatusCode, response.ReasonPhrase);
            Console.WriteLine(msg);
            if (response.IsSuccessStatusCode)
            {
                model = await response.Content.ReadAsAsync<ClassifiersResponse>();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.StackTrace);
        }
    }
    return model;
}

ClassifiersResponse 模型使用 JsonProperty 属性将 JSON 响应映射回 .Net 属性。

public class ClassifiersResponse
{
    [JsonProperty("classifiers")]
    public Classifier[] Classifiers { get; set; }

    public ClassifiersResponse()
    {
        Classifiers = new Classifier[0];
    }
}

可以使用类似的方法访问其他 Watson 服务以调用它们的 REST APIs。

希望这能让您朝着正确的方向前进。