Webhooksを使ってTwitterから収集したツイートを翻訳してSlackに投稿する方法

経緯

日本人の約7割が英語が苦手だと感じているようです。

しかし知りたい情報が日本語でツイートされるとは限らないですよね。

 

有益そうなツイートをTwitterの検索コマンドを使って収集し、パッと見でそのツイートの内容がわかるように簡単な翻訳を添えて保存する方法を考えたので紹介します。(なんと無料でできる!!!)(ついでに、自然言語処理用のデータの収集にも使えるかもしれません)

 

最終的な出来上がりは以下の画像のようになります。

 

f:id:wasiike:20190316005950p:plain

 

またこの記事を作成するにあたって参考にした記事が以下になります。コードをそのまま使っている部分があるので問題がございましたら修正してお詫びします。

 

イメージ

この記事は二つのステップから構成されています。

  • ステップ1
    キーワード検索に引っかかったツイートをWebhooksを使ってSlackに投稿します。

f:id:wasiike:20190316012507p:plain

  • ステップ2
    翻訳BOTの記事と同様の流れで、ステップ1でSlackに投稿されたツイートの翻訳を行い、またSlackに返します。

 

 やり方

  • ステップ1の前に
    勘の鋭い読者の方は、IFTTTの「this = Twitter」、「that = Slack」にしたら簡単にツイートをSlackに送ることができるのではないかとお思いかもしれません。しかしそれではうまくいかないんです。

    f:id:wasiike:20190316014243p:plain


    なぜかというと、IFTTTがSlackに渡すjsonファイルにはtext、つまり本文が含まれていないためです。どういうことかというと、すぐ下の図のようにSlack上で見えているメッセージは、実はツイート内容をそのurlから取得し、Slackの展開機能を使って表示しているのです。(おまけにIFTTTの投稿にはメッセージそのものはなく、メッセージを装飾するattachmentというものだけが渡されているため、そのurlを取得することすら難しくなります。くわしくは

    Slack API attachmentsチートシート - Qiitaを参照してください)

    f:id:wasiike:20190316015812p:plain


    話をまとめると、

  1. Slackに投稿されたメッセージを翻訳するには、メッセージの本文を取得する必要がある。
  2. IFTTTは簡単な分、カスタマイズできない。
  3. Webhooksを使って、本文を投稿できるオリジナルのレシピを作ろう!
    ということになります。


  • ステップ1

ここでは上で挙げられた問題を解決すべく、Twitterの検索コマンドを使って有益なツイートを収集し、Slackに投げる方法を紹介します。

まずpc版のslack(の方がやりやすい)から「アプリの追加」を行い、「Incoming Webhook」をインストールしてください(この際、所望のワークスペースへのサインインが必要になるかもしれません)。

f:id:wasiike:20190316024114p:plain


次に、左側の「設定の追加」からツイートを保存したいチャンネルを決め、「インテグレーションの追加」をしてください。そこで得られる「Webhook URL」をメモ帳等に保存しておいてください。

そして、もう一つ重要なSlack API「Legacy Tokens」

Legacy tokens | Slackから取得してメモ帳にメモっておいて下さい(参考:Slack APIのTokenの取得・場所)。


以上で、下準備が終わりました。


続いて、IFTTTのMy_appletsから新しくレシピを作成し、「this = Twitter」を選択してください。続くページで例えば「New tweet from search」を選択すれば、キーワードに応じたツイートを取得することができます。ここではSearch forを「from:realDonaldTrump japan exclude:retweets」としてみましょう。すると、トランプ大統領がjapanというキーワードを含むツイート(リツイートを除く)をしたときにSlackにツイートが転送されることになります。

f:id:wasiike:20190316022900p:plain


次に「that = Webhooks」にします。

f:id:wasiike:20190316023233p:plain


続く画面でWebhookに投げるリクエストを設定していきます。

  • URLには、「Webhook URL」を
  • Methodは、「POST」を
  • Content Typeは、「application/json」を
  • Bodyには、「{"text":"chlang en ja {{Text}}"}」
    と入力してください。

f:id:wasiike:20190316025430p:plain

これでステップ1は終わりです!


  • ステップ2
    こちらは、翻訳BOTの記事と全く同じ流れで進めていただくことで、ツイートが自動的に飛んできて、自動的に翻訳してくれます。

    ステップ1で、メッセージの頭に「chlang en ja 」と記入するようにしてあるため、BOTが自動的に呼ばれるということになってます。

 

最後に

今回、この「英語勉強ブログ」でのはじめての記事となったわけですが、あまりに英語が苦手すぎて、うっかり翻訳の自動化をして、それを記事にしてしまいました。

 

今後は、こうして集めた英語の記事を皆さんにシェアしていければ良いなと思っております。では今後ともよろしくお願いします。