2016-11-08 5 views
-4

Ich bin neu in dieser Technologie, aber ich möchte Watson API-Konversation in einer .NET-Anwendung verwenden. Wie kann ich Watson Cloud Services in .NET aufrufen?Beispiel für den IBM Watson Conversation API-Client in C#/.net

+3

Bitte poste dies stattdessen auf der spanischen Website. Diese Seite ist nur Englisch. – Carcigenicate

+1

Por favor preguntarlo [aqui] (http://es.stackoverflow.com/). –

+1

Um klar zu sein, wäre dies eine schlechte Frage und immer noch unklar oder übertrieben wurde es in englischer Sprache gefragt. – Marcin

Antwort

1

Ich denke, IBM hat ein ziemlich weit entferntes Verständnis von "einfach". Ihre sample apps sind eher obskur. Darüber hinaus haben sie kürzlich ihre alte API gebrannt/veraltet. Hier ist die new API description. Sie müssen zuerst einige Watsone-Anmeldedaten erhalten.

Sie sollten die v1 Converstaions API wie jede andere RESTful-API konsumieren können. Ich mag Flurl für diese Aufgabe.

namespace WhatsOn 
{ 
    using System; 
    using System.Text; 
    using System.Linq; 
    using System.Threading.Tasks; 
    using Flurl; 
    using Flurl.Http; 
    using Newtonsoft.Json; 

    public class Program 
    { 
     public static void Main() 
     { 
      TalkToWatson().Wait(); 
     } 

     public static async Task TalkToWatson() 
     { 
      var baseurl = "https://gateway.watsonplatform.net/conversation/api"; 
      var workspace = "25dfa8a0-0263-471b-8980-317e68c30488"; 
      var username = "...get your own..."; 
      var password = "...get your own..."; 
      var context = null as object; 
      var input = Console.ReadLine(); 
      var message = new { input = new { text = input }, context }; 

      var resp = await baseurl 
       .AppendPathSegments("v1", "workspaces", workspace, "message") 
       .SetQueryParam("version","2016-11-21") 
       .WithBasicAuth(username, password) 
       .AllowAnyHttpStatus() 
       .PostJsonAsync(message); 

      var json = await resp.Content.ReadAsStringAsync(); 

      var answer = new 
      { 
       intents = default(object), 
       entities = default(object), 
       input = default(object), 
       output = new 
       { 
        text = default(string[]) 
       }, 
       context = default(object) 
      }; 

      answer = JsonConvert.DeserializeAnonymousType(json, answer); 

      var output = answer?.output?.text?.Aggregate(
       new StringBuilder(), 
       (sb,l) => sb.AppendLine(l), 
       sb => sb.ToString()); 

      Console.ForegroundColor = ConsoleColor.White; 
      Console.WriteLine($"{resp.StatusCode}: {output}"); 

      Console.ForegroundColor = ConsoleColor.Gray; 
      Console.WriteLine(json); 
      Console.ResetColor(); 
     }   
    } 
} 
1

Sie können jede der Watson Cloud-Dienste mit der REST-Schnittstelle aufrufen, wie in der vorherigen Antwort gezeigt. Stellen Sie sicher, dass Sie die JSON-Nutzdaten korrekt formatieren. Alle erforderlichen Informationen finden Sie in der Datei Conversation API Reference.

Das gesagt wird, gibt es eine SDK for .NET, obwohl es immer noch unreif sein kann. Sie können alle aktuellen SDKs und Dienstprogramme auf der Watson Developer Cloud Out auf GitHub gehen.

+0

und was ist damit ?: https://github.com/watson-developer-cloud/dotnet-standard-sdk#installing-the-watson-net-standard-sdk. –

+1

Das ist neu für mich .... aber es sieht so aus, als müsste es tun was du willst. –

Verwandte Themen