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

本文关键字:Bluemix 服务 应用程序 Web ASP NET 带有 | 更新日期: 2023-09-27 18:34:00

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

目前,从目录中我只能获得 ASP.NET 5 Cloudant入门应用程序。从我看到的一些YouTube视频中,有一个带有 ASP.NET 和Watson Q&A服务的样本,但再也找不到了。

是否有人可以帮助 .Net 与 IBM Bluemix Watson 服务配合使用?我想要 TTS 和视觉识别,但任何服务连接的帮助都有助于了解我的解决方案缺少什么。

感谢您的帮助。

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

Watson Q&A 服务被其他一些服务所取代。 现在有一个使用 github 上可用的视觉识别服务的示例。 此示例提供了一个 VisualRecognitionService 类,该类演示如何使用 HttpClient 调用 Watson REST API。

Startup.cs 中的 Startup 函数显示了如何将VCAP_SERVICES环境变量解析为 JSON 对象,并将这些值存储在应用程序的配置中,VisualRecognitionService 的构造函数可以访问它们以在调用 REST API 时使用。

VisualRecognitionService 中的 VrClient 函数创建并返回一个HttpClient,其中包含联系 Watson REST API 所需的请求标头,包括用于选择不与 Watson 服务共享数据的X-Watson-Learning-Opt-Out标头。

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 方法中,该方法检索可用图像分类器的列表(默认分类器 + 任何用户创建的分类器(:

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 API。

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