1

嘿 Stackoverflow 社区,

我是 Ruby 新手,正在为一个课程作业做一个小项目。我必须创建一个使用谷歌翻译 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
4

2 回答 2

0

来自 Twilio 的 Jarod。我注意到您的问题,并想建议您解析将传入您的“传入/短信”的用户短信。一旦您配置了您的电话号码以向“传入/短信”发出 GET 请求,Twilio 将开始向该 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 方法已基本准备就绪,因此只需将其插入到您的回复末尾,您就可以开始使用了!有趣的应用程序。很高兴看到它完成了!

于 2018-09-24T19:23:09.293 回答
0

关于翻译 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
于 2018-09-24T13:15:10.703 回答