hiro99ma blog: [googlehome]IFTTTのThatをslackbotで受けとる
これで、IFTTTとslackbotを使って、しゃべった言葉をGoogle Homeがしゃべり返すところまで行った。
あとは、翻訳するサービスで無料のところがあれば、それを挟むだけでよさそうだ、とは思っていたところ、こういう記事があった。
Python – googletransを試してみました。 | Developers.IO
制限があったり、いつまで使えるか分からなかったりするようだが、お遊びでやる分には十分だ。
slackbot側のpython
from slackbot.bot import respond_to
from googletrans import Translator
import os.path
import subprocess
def _bcc_exec(cmd):
try:
print cmd
subprocess.check_output(cmd).strip()
except subprocess.CalledProcessError as e:
print '!!! error happen(errcode=%d) !!!' % e.returncode
@respond_to('(.*)')
def talk_to(message, params):
print params
translator = Translator()
j2e = translator.translate(params.replace(' ', '')).text
print j2e
cmd = ['node', os.path.expanduser('~/NodeJs/google-home-notifier-test/slacktalke.js'), '\"' + j2e + '\"']
_bcc_exec(cmd)
google-home-notifier-testのjs側(slacktalke.jsという名前で呼び出している)
var googlehome = require('./google-home-notifier');
var speech;
if (process.argv.length >= 2) {
speech = process.argv[2];
} else {
speech = 'I asm slackbot.';
}
googlehome.device('something', 'en');
googlehome.ip('xx.xx.xx.xx');
googlehome.speed(1.0);
googlehome.notify(speech, function(res) {
console.log(res);
});
IFTTTは、Google AssistantとSlackをつないで、SlackはDirect Messageで作ったslackbotの名前を指定し、MessageでTextFieldを渡すだけだ。
Google Cast APIを使っているので、nodejsはローカルPCで動くようにせんといかんし、nodejsの実行をパス指定で行っているからslackbotもローカルPCで動かさんといかん。
まあそこら辺は素人なので、詳しい人はうまいことやるだろう。
slackbotをnodejsで動かせるか、google-home-notifierのpython版があれば分けなくてもよいのだが、まあいいや。