0

我想将目录文件上传到推荐 api(使用 ruby​​ 语言的 Azure 认知服务。

使用 C#,我将获得下一个代码(摘自https://github.com/Microsoft/Cognitive-Recommendations-Windows/blob/master/Sample/RecommendationsApiWrapper.cs):

    public CatalogImportStats UploadCatalog(string modelId, string catalogFilePath, string catalogDisplayName)
    {
        Console.WriteLine("Uploading " + catalogDisplayName + " ...");
        string uri = BaseUri + "/models/" + modelId + "/catalog?catalogDisplayName=" + catalogDisplayName;
        using (var filestream = new FileStream(catalogFilePath, FileMode.Open, FileAccess.Read))
        {
            var response = _httpClient.PostAsync(uri, new StreamContent(filestream)).Result;

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception(
                    String.Format("Error {0}: Failed to import catalog items {1}, for model {2} \n reason {3}",
                        response.StatusCode, catalogFilePath, modelId, ExtractErrorInfo(response)));
            }

            var jsonString = ExtractReponse(response);
            var catalogImportStats = JsonConvert.DeserializeObject<CatalogImportStats>(jsonString);
            return catalogImportStats;
        }

如何使用 ruby​​ 和 http 客户端将目录文件上传到认知服务?我需要一个基本的示例代码。

谢谢

4

1 回答 1

1

我在这里上传了一个示例:https ://github.com/miparnisari/ruby-cognitive-services

但它的要点:

require 'net/http'
require 'IO/console'

class RecommendationsClient
    def initialize(subscription_key, region)
        @base_url="https://#{region}.api.cognitive.microsoft.com/recommendations/v4.0"
        @subscription_key=subscription_key
    end

    def upload_catalog(model_id, catalog_display_name, catalog_path)
        uri = URI("#{@base_url}/models/#{model_id}/catalog?catalogDisplayName=#{catalog_display_name}")
        request = Net::HTTP::Post.new(uri.request_uri)
        request['Content-Type'] = 'application/octet-stream'
        request['Ocp-Apim-Subscription-Key'] = "#{@subscription_key}"
        request.body = IO.binread(catalog_path)

        response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
            http.request(request)
        end
        return response.body
    end
end

接着:

r = RecommendationsClient.new("your_key_here", "westus")    
response = r.upload_catalog('1', 'catalog', 'books_catalog.txt')
puts response
于 2017-10-21T20:53:31.687 回答