2016-11-08 7 views
-4

이 기술은 처음 사용하지만 .NET 애플리케이션에서 Watson의 API 대화를 사용하려고합니다. .NET에서 Watson 클라우드 서비스를 호출하려면 어떻게해야합니까?C# /. net의 IBM Watson Conversation API 클라이언트의 예

+3

대신 스페인어 사이트에 게시하십시오. 이 사이트는 영어로만 제공됩니다. – Carcigenicate

+1

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

+1

분명히하기 위해, 이것은 나쁜 질문이 될 것이고 아직도 영어로 물어 보았을 때 명확하지 않거나 지나치게 넓어 질 것입니다. – Marcin

답변

1

IBM은 '단순한'것에 대한 원격 이해가 다소 있습니다. 그들의 sample apps은 다소 애매합니다. 그 (것)들의 위에 그들은 최근에 그들의 오래된 API를 점화하거나 비난했다. new API description입니다. 먼저 watsone 자격 증명을 받아야합니다.

다른 RESTful API와 마찬가지로 v1 Converstaions API을 사용할 수 있어야합니다. 나는이 작업을 위해 Flurl을 좋아한다.

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

이전 답변에서와 같이 REST 인터페이스를 사용하여 Watson Cloud 서비스의 ANY를 호출 할 수 있습니다. JSON 페이로드를 올바르게 포맷해야합니다. 필요한 모든 정보는 Conversation API Reference에 있습니다.

그래도 아직 미성숙 할 수는 있지만 SDK for .NET이 있습니다. GitHub의 Watson Developer Cloud에있는 모든 현재 SDK 및 유틸리티를 찾아 볼 수 있습니다.

+0

및 이것에 대한 정보 : https://github.com/watson-developer-cloud/dotnet-standard-sdk#installing-the-watson-net-standard-sdk. –

+1

그건 나에게 새로운 ....하지만 당신이 원하는대로해야합니다. –