Переводчик ботов с помощью Google Translate API - PullRequest
0 голосов
/ 24 сентября 2018

Привет, сообщество Stackoverflow,

Я новичок в Ruby и работаю над небольшим проектом для назначения курса.Я должен создать мобильного бота, который использует Google Translate API и возвращает переведенный текст.

Я застрял, пытаясь понять, как написать код для бота, чтобы получить введенный текст и вывести перевод.

Может кто-нибудь взглянуть, пожалуйста?Был бы очень признателен

def transl8 (input,lang)     #method to translate incoming text
  # Translates some text into Russian
  # Instantiates a client
 translate = Google::Cloud::Translate.new project: project-217401

  puts input + "Looks like you're speak in #{detection.language}"
  puts "Confidence: #{detection.confidence}"

translation = translate.translate input, to: lang 

 return "In #{lang} that's" + translation
end

def transl8 (input,lang)     #method to translate incoming text
detection = $translate.detect input
puts input + "Looks like you're speak in #{detection.language}"
puts "Confidence: #{detection.confidence}"
translation = $translate.translate input, to: lang
return "In #{lang} that's" + translation
end


def listlang #method to show language code
language_code = "en"
languages = $translate.languages
puts "Supported languages:"
languages.each do |language|
 puts "#{language.code} #{language.name}"
 end
end

configure :development do
require 'dotenv'
Dotenv.load
end

#Translate End-point 
https://translation.googleapis.com/language/translate/v2 endpoint

get "/incoming/sms/" do

"Hey! I'm AllSpeak, a translator bot. The list of supported languages are 
below. Just ask by typing (TEXT) (space) (Language Code)"

 incoming_text = params['Body']
 text_to_translate = incoming_text.split(' ')[0]
 lang_requested = incoming_text.split(' ')[1]
 twiml_body = transl8(text_to_translate, lang_requested)
  #return twiml here with twiml_body
 end

#Look into Including method to set default language for commonly used 
 phrases

puts listlang

transl8 (text)

# Build a twilio response object 
twiml = Twilio::TwiML::MessagingResponse.new do |r|
 r.message do |m|
  end 
 end

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Джарод из Твилио.Я заметил ваш вопрос и хотел предложить вам проанализировать пользовательские SMS, которые будут входить в ваши "входящие / смс".Как только вы настроите свой номер телефона для отправки запроса GET на «входящие / смс», Twilio начнет отправлять входящие SMS на этот URL.Когда Twilio сделает это, он также передаст вам кучу информации в запросе http.Тело входящего SMS передается как Body в запросе.Таким образом, вы могли бы сделать что-то вроде этого

get '/incoming/sms' do
  incoming_text = params['Body']
  text_to_translate = incoming_text.split(' ')[0]
  lang_requested = incoming_text.split(' ')[1]
  twiml_body = transl8(text_to_translate, lang_requested)
  #return twiml here with twiml_body
end

Имеет ли это смысл?Похоже, ваш метод twiml в основном готов к работе, поэтому просто вставьте его в конце своего ответа, и вам будет хорошо идти!Веселое приложение.Рад видеть это законченным!

0 голосов
/ 24 сентября 2018

Относительно кода API перевода:

Для listlang:

  • Вам не хватает end в цикле do, и вы не устанавливаетеПеременная project_id

Для transl8:

  • Вы не инициализируете переменную detection

Пример кода:

#!/usr/bin/ruby
require "google/cloud/translate"
$translate = Google::Cloud::Translate.new project: "slatebot-217401"

def transl8 (input,lang)     #method to translate incoming text
    detection = $translate.detect input
    puts input + "Looks like you're speak in #{detection.language}"
    puts "Confidence: #{detection.confidence}"
    translation = $translate.translate input, to: lang
    return "In #{lang} that's" + translation
end


def listlang #method to show language code
    language_code = "en"
    languages = $translate.languages
    puts "Supported languages:"
    languages.each do |language|
            puts "#{language.code} #{language.name}"
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...