Microsoft Translator를 사용하여 번역 Bot 만들기

Microsoft Translator를 사용하여 말한 단어를 영어로 번역하고 반환하는 Bot을 만듭니다.

Translator 구독 추가



Microsoft Translator를 사용하려면 Gettting Started with Microsoft Translator
에 따라 Translator 구독을 추가합니다.

인증 키에는 다음 KEY1을 사용합니다.


Translator를 사용해보기


  • 인증 키 얻기
    인증키를 취득하는 코드가 필요합니다만 공식 무료 샘플 에 샘플 코드가 있으므로,
    나막신 엇갈림과 현에서 AzureAuthToken.cs를 프로젝트에 추가합니다.
  • Translator 호출
    다음으로 Translator를 호출하는 프로그램입니다.
    다음과 같은 느낌. 변수 key를 구독의 KEY1로 바꿉니다.
  • using System;
    using System.IO;
    using System.Net;
    using System.Runtime.Serialization;
    
    namespace Bot_Application2.Translator
    {
        public class TextTranslator
        {
            private readonly string key = "KEY1";
            private string token;
    
            public TextTranslator()
            {
                token = new AzureAuthToken(this.key).GetAccessToken();
            }
    
            public string Translate(string input)
            {
                string translated = string.Empty;
                string from = "ja";
                string to = "en";
                string uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" +
                    System.Web.HttpUtility.UrlEncode(input) + "&from=" + from + "&to=" + to;
    
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
                httpWebRequest.Headers.Add("Authorization", token);
                WebResponse response = null;
                try
                {
                    response = httpWebRequest.GetResponse();
                    using (Stream stream = response.GetResponseStream())
                    {
                        translated = (string)new DataContractSerializer(Type.GetType("System.String")).
                            ReadObject(stream);
                    }
                }
                finally
                {
                    if (response != null)
                    {
                        response.Close();
                        response = null;
                    }
                }
                return translated;
            }
        }
    }
    

    그런 다음 Bot의 소스이지만 Bot Application 프로젝트를 만들 때 생성되는 템플릿을 변경합니다.
    변경 사항은 MessageController.cs의 Post 메서드입니다.
            /// <summary>
            /// POST: api/Messages
            /// Receive a message from a user and reply to it
            /// </summary>
            public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
            {
                if (activity.Type == ActivityTypes.Message)
                {
                    ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
                    // calculate something for us to return
                    int length = (activity.Text ?? string.Empty).Length;
    
                    // return our reply to the user
                    Activity reply = activity.CreateReply(new TextTranslator().Translate(activity.Text));
                    await connector.Conversations.ReplyToActivityAsync(reply);
                }
                else
                {
                    HandleSystemMessage(activity);
                }
                var response = Request.CreateResponse(HttpStatusCode.OK);
                return response;
            }
    

    다음 부분을 다시 작성했습니다.
    Activity reply = activity.CreateReply(new TextTranslator().Translate(activity.Text));
    

    그럼 동작을 확인해 보겠습니다.


    훌륭하게 번역되었습니다 ~

    다음 번에는 Azure에 게시하고 BotConnector에서 Skype에 연결하고 싶습니다.

    좋은 웹페이지 즐겨찾기