Microsoft Translator를 사용하여 번역 Bot 만들기
11289 단어 TranslatorC#botMicrosoft
Translator 구독 추가
Microsoft Translator를 사용하려면 Gettting Started with Microsoft Translator
에 따라 Translator 구독을 추가합니다.
인증 키에는 다음 KEY1을 사용합니다.
Translator를 사용해보기
인증키를 취득하는 코드가 필요합니다만 공식 무료 샘플 에 샘플 코드가 있으므로,
나막신 엇갈림과 현에서 AzureAuthToken.cs를 프로젝트에 추가합니다.
다음으로 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에 연결하고 싶습니다.
Reference
이 문제에 관하여(Microsoft Translator를 사용하여 번역 Bot 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Shinji-Hashimoto/items/99a44753c29fe5bf4799텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)