示例#1
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            var list = Words.Words.GetWords();

            wordListBox.BeginUpdate();
            foreach (var item in list)
            {
                wordListBox.Items.Add(item);
            }
            wordListBox.EndUpdate();
            _translate = new TranslateApi();
            wordListBox.SelectedIndex = 0;
        }
        public static void ProcessQueueMessage([QueueTrigger("line-bot-workitems")] string message, TextWriter log)
        {
            log.WriteLine(message);

            var data = JsonConvert.DeserializeObject<LineMessageObject>(message);

            if (data?.Results != null)
            {
                Task.WhenAll(data.Results.Select(lineMessage =>
                {
                    if (lineMessage.Content != null)
                    {
                        log.WriteLine("Content: " + string.Join(Environment.NewLine,
                            lineMessage.Content.Select(x => $"{x.Key}={x.Value}")));
                    }

                    log.WriteLine("ContentType: " + lineMessage.ContentType);
                    switch (lineMessage.ContentType)
                    {
                        case ContentType.Text:
                            if (lineMessage.TextContent != null)
                            {
                                log.WriteLine("text: " + lineMessage.TextContent.Text);

                                var sendingMessage = new SendingMessage();

                                sendingMessage.AddTo(lineMessage.TextContent.From);

                                var translateApi = new TranslateApi();
                                var translated = translateApi.Translate(lineMessage.TextContent.Text);
                                if (string.IsNullOrEmpty(translated))
                                {
                                    throw new ApplicationException("reply message is empty");
                                }

                                sendingMessage.SetSingleContent(new SendingTextContent(translated));
                                return new SendMessageApi(log).Post(sendingMessage);
                            }
                            break;

                        default:
                            log.WriteLine("Not implemented contentType: " + lineMessage.ContentType);
                            break;
                    }

                    return Task.FromResult((SendingMessageResponse)null);
                })).Wait();
            }
        }
示例#3
0
        public static void ProcessQueueMessage([QueueTrigger("line-bot-workitems")] string message, TextWriter log)
        {
            log.WriteLine(message);

            var data = JsonConvert.DeserializeObject <LineMessageObject>(message);

            if (data?.Results != null)
            {
                Task.WhenAll(data.Results.Select(lineMessage =>
                {
                    if (lineMessage.Content != null)
                    {
                        log.WriteLine("Content: " + string.Join(Environment.NewLine,
                                                                lineMessage.Content.Select(x => $"{x.Key}={x.Value}")));
                    }

                    log.WriteLine("ContentType: " + lineMessage.ContentType);
                    switch (lineMessage.ContentType)
                    {
                    case ContentType.Text:
                        if (lineMessage.TextContent != null)
                        {
                            log.WriteLine("text: " + lineMessage.TextContent.Text);

                            var sendingMessage = new SendingMessage();

                            sendingMessage.AddTo(lineMessage.TextContent.From);

                            var translateApi = new TranslateApi();
                            var translated   = translateApi.Translate(lineMessage.TextContent.Text);
                            if (string.IsNullOrEmpty(translated))
                            {
                                throw new ApplicationException("reply message is empty");
                            }

                            sendingMessage.SetSingleContent(new SendingTextContent(translated));
                            return(new SendMessageApi(log).Post(sendingMessage));
                        }
                        break;

                    default:
                        log.WriteLine("Not implemented contentType: " + lineMessage.ContentType);
                        break;
                    }

                    return(Task.FromResult((SendingMessageResponse)null));
                })).Wait();
            }
        }
示例#4
0
        public static async Task ProcessQueueMessage([QueueTrigger("line-bot-workitems")] string message, TextWriter log)
        {
            log.WriteLine(message);

            var data = JsonConvert.DeserializeObject <LineWebhookContent>(message);

            if (data?.Events != null)
            {
                foreach (var webhookEvent in data.Events)
                {
                    log.WriteLine("event type: " + webhookEvent.Type);
                    switch (webhookEvent.Type)
                    {
                    case WebhookRequestEventType.Message:
                        if (webhookEvent.Message.Type == MessageType.Text)
                        {
                            log.WriteLine("text: " + webhookEvent.Message.Text);

                            if (tokenResponse == null || tokenResponse.ExpiresIn < DateTime.Now.AddDays(-1))
                            {
                                tokenResponse = await oAuthClient.GetAccessToken();
                            }

                            var client = new LineMessagingClient(tokenResponse.AccessToken);

                            var translateApi = new TranslateApi();
                            var translated   = translateApi.Translate(webhookEvent.Message.Text);
                            if (string.IsNullOrEmpty(translated))
                            {
                                throw new ApplicationException("reply message is empty");
                            }

                            await client.PushMessage(webhookEvent.Source.UserId, translated);
                        }
                        break;

                    default:
                        log.WriteLine("Not implemented event type: " + webhookEvent.Type);
                        break;
                    }
                }
            }
        }
示例#5
0
        private static async Task <string> Translate(string text, TranslationSetting activeSetting)
        {
            var    authTokenSource = new AzureAuthToken(activeSetting.SubscriptionKey.Trim());
            string authToken;

            try
            {
                authToken = await authTokenSource.GetAccessTokenAsync();
            }
            catch (HttpRequestException)
            {
                if (authTokenSource.RequestStatusCode == HttpStatusCode.Unauthorized)
                {
                    throw new ApplicationException("Request to token service is not authorized (401). Check that the Azure subscription key is valid.");
                }
                if (authTokenSource.RequestStatusCode == HttpStatusCode.Forbidden)
                {
                    throw new ApplicationException("Request to token service is not authorized (403). For accounts in the free-tier, check that the account quota is not exceeded.");
                }
                throw;
            }

            return(TranslateApi.Translate(authToken, text, activeSetting.From, activeSetting.To, activeSetting.Category));
        }
示例#6
0
 public void Init()
 {
     instance = new TranslateApi();
 }
示例#7
0
        private string TranslateWithGoogle(string text, LanguageInfo from, LanguageInfo to, TranslateApi api)
        {
            //if (!_googleTranslatorEnabled)
            //    return null;

            //if (api != TranslateApi.Google && api != TranslateApi.All)
            //    return null;

            //string result;

            //try
            //{
            //    if (_googleTranslator == null)
            //        _googleTranslator = new GoogleTranslator();

            //    _googleTranslator.SourceLanguage = @from.GoogleTranslatorCode;
            //    _googleTranslator.TargetLanguage = to.GoogleTranslatorCode;
            //    _googleTranslator.SourceText = text;
            //    _googleTranslator.Timeout = (int)_googleTimeout;

            //    _googleTranslator.Translate();
            //    result = _googleTranslator.Translation;
            //}
            //catch (Exception ex)
            //{
            //    Log.LogException(ex);
            //    result = Resources.Res.TranslationError;
            //}

            //return Resources.Res.Google + result;

            return(null);
        }
示例#8
0
        public async Task <string> Translate(string text, LanguageInfo from, LanguageInfo to, TranslateApi api)
        {
            if (String.IsNullOrWhiteSpace(text))
            {
                return(null);
            }

            string bingResult   = null;
            string googleResult = null;

            await Task.Factory.StartNew(() => bingResult = TranslateWithBing(text, @from, to, api));

            await Task.Factory.StartNew(() => googleResult = TranslateWithGoogle(text, @from, to, api));

            if (bingResult == null)
            {
                return(googleResult);
            }

            if (googleResult == null)
            {
                return(bingResult);
            }

            return(bingResult + Environment.NewLine + googleResult);
        }
示例#9
0
        private string TranslateWithBing(string text, LanguageInfo from, LanguageInfo to, TranslateApi api)
        {
            if (!_bingTranslatorEnabled)
            {
                return(null);
            }

            if (api != TranslateApi.Bing && api != TranslateApi.All)
            {
                return(null);
            }

            string result;

            try
            {
                if (_bingTranslator == null)
                {
                    _bingTranslator =
                        new TranslatorContainer(new Uri(ConfigurationManager.AppSettings["TranslatorAddress"]))
                    {
                        Credentials = new NetworkCredential(
                            ConfigurationManager.AppSettings["TranslatorAccount"],
                            ConfigurationManager.AppSettings["TranslatorAccountKey"])
                    };

                    _bingTranslator.Timeout = (int)_bingTimeout;
                }

                var translationResult =
                    _bingTranslator.Translate(text, to.BingTranslatorCode, @from.BingTranslatorCode).ToList();

                result = translationResult.Select(t => t.Text).Aggregate((current, next) => current + ", " + next);
            }
            catch (Exception ex)
            {
                Log.LogException(ex);
                result = Resources.Res.TranslationError;
            }

            return(Resources.Res.Bing + result);
        }