最近は ChatOps って素晴らしいなぁと思う日々を送っております。会社でも導入されていて bot に話しかける楽しさなんかを感じています。巷では Slack が大流行りなのでそういう体験をされている方もきっと多いと思います。
Slack の良いところは生の API を直接叩くだけでなく Incoming WebHooks / Outgoing WebHooks や Slash Commands で Web API ベースのサービスと簡単にインテグレーションできることでしょう。「あー、Hubot ね?」と思うかもしれませんが Hubot は Redis が必要で超仰々しいですし、なぜかオワコンな CoffeeScript で書かなきゃなので個人的には嫌いです。もっと普通に Web サーバーに Web API 作っておけばいいじゃない。
ということで、Azure Web Apps + ASP.NET Core 1.0 で Slash Commands のサンプルを作ってみました。
作ったもの
Cloud Translator という超お手軽な翻訳機能です。以下のような感じで使います。
/translate [翻訳したい言語コード] [翻訳したい文章]
以下の機能が実装されています。
- Bing 翻訳 / Yahoo! 翻訳を使った複数同時翻訳
- 文章の自動言語判定
- 見やすい表示
- 自分にだけ見える返答
- 言語コード一覧の取得
Slash Commands なので「/」と入力すればサジェストが効くため、かなり簡単かつカジュアルに翻訳が行えるようになっています。しかもどんな駄文でも自分にしか翻訳結果が見えない!お手軽!
本当は (というか当然) Google 翻訳も実装していたのですが、突然のエラーで動かなくなってしまったので当面は機能を無効化するでしょう...(残念。
ソースコードは ApisFlorea という気の向くままに API を作ってみた系の個人プロジェクトに入っています。実装の解説をしようかとも考えましたが、地道な実装をしていて特筆すべきことがなかったので割愛します...。
言語コード一覧の取得
使い方に「翻訳したい言語の言語コードを入れろ」となっていますが、そんなの知らないのが大抵だと思います。ということで簡単に調べられるような機能も付けました。以下のようにコマンドを叩きます。
/translate code
ここでは一部コードしか載せていませんが、実際には全部で 100 以上の言語コードがリストされます。とは言え、ここで確認できるからと言って Bing 翻訳や Yahoo! 翻訳がその言語に対応していなければ失敗しますので悪しからず。それだけ頑張って定義してみた、というだけです...w
使い方
設定は非常に簡単で、Slack の App Directory から Slash Commands をインストールし、設定画面で以下のように入れるだけです。HTTP の POST メソッドで API アクセスしていただければ OK!
POST http://api.xin9le.net/SlashCommands/Translate
as is でご自由にご利用ください :)