お仕事の中にある『T』を僕たちと一緒に探していこう！！！

## ティー！ティティー！ティー！ティー！ティティー！

お仕事に疲れたみんな！僕たちと一緒にお仕事の中にある『T』を探しにいこう！

## ティーーーーー！！！！！
投稿した文字列の中から『ティ』が含まれる言葉を見つけてスレッドに通知を飛ばします！
（『ティ』の文字が少なかったので『チ』も含めてます）
![ezgif.com-video-to-gif (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99737/5327a09e-60c9-9d5f-718d-35633b735a02.gif)


## 一緒に『T』を探す愉快な仲間たち
・ [Slack API] (https://api.slack.com/)
・ [COTOHA API Portal](https://api.ce-cotoha.com/contents/index.html) 
・ [GoogleCloudFunctions](https://cloud.google.com/functions?hl=ja) （定期実行出来る環境であれば何でもOK）
・ Python 3.7

## 作り方
### SlackBotを用意する
[Slack API] (https://api.slack.com/) からアプリを作っていきます。
まずは『T』を探すSlackBot（TT兄弟Bot）を用意しましょう。
<img width="1331" alt="create_slackobot.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99737/850dd6a3-b734-cd0e-8e62-128244d01216.jpeg">
ところでSlackBotのUIが変わったのご存知ですか？
APP_HOMEに名前の登録をしないとBotとして利用ができないのでお忘れなく！
<img width="1331" alt="apphome.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99737/8799a9c1-51c5-c018-546d-ee38c8ebb5ea.jpeg">
必要なScopeは以下の通りです

|Scope|使用するmethod|目的|
|:---:|:-----------:|:--:|
|channels:history|conversation.history|投稿を取得する|
|chat:write|conversations.replies|投稿にコメントを残す|

### COTOHA API を用意する
[COTOHA API Portal](https://api.ce-cotoha.com/contents/index.html)  からアカウントを作成しましょう。
作成すると、以下のようなログインページを見れるようになると思います。
<img width="1326" alt="cotoha-loginpage.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99737/eca355a8-b7cc-e25a-8865-041071ebff6b.jpeg">
これらのパラメータを使ってCOTOHA APIを使っていきます。
#### COTOHA APIを試す
#####アクセストークンの作り方
```shell
curl -X POST \
 -H "Content-Type:application/json" \
 -d '{
  "grantType": "client_credentials",
  "clientId": "CLIENT_ID",
  "clientSecret": "CLIENT_SECRET"
}' https://api.ce-cotoha.com/v1/oauth/accesstokens
```
こちらを実行すると

```
{
  "access_token": "ACCESS_TOKEN",  // アクセストークン
  "token_type": "bearer",
  "expires_in": "86399" , // 24時間有効
  "scope": "" ,
  "issued_at": "1581398461378"
}
```
アクセストークンを取得できます。
#####APIの実行
今回は構文解析のAPIを使いたいので [構文解析 リファレンス] (https://api.ce-cotoha.com/contents/reference/apireference.html#entity) を参考に実行します。

```shell
curl -X POST \
 -H "Content-Type:application/json;charset=UTF-8" \
 -H "Authorization:Bearer ACCESS_TOKEN" \
 -d '{
  "sentence":"犬は歩く。",
  "type": "default"
}' https://api.ce-cotoha.com/api/dev/nlp/v1/parse
```
で
<details><summary>実行結果</summary><div>

```shell
{
  "result" : [ {
    "chunk_info" : {
      "id" : 0,
      "head" : 1,
      "dep" : "D",
      "chunk_head" : 0,
      "chunk_func" : 1,
      "links" : [ ]
    },
    "tokens" : [ {
      "id" : 0,
      "form" : "犬",
      "kana" : "イヌ",
      "lemma" : "犬",
      "pos" : "名詞",
      "features" : [ ],
      "dependency_labels" : [ {
        "token_id" : 1,
        "label" : "case"
      } ],
      "attributes" : { }
    }, {
      "id" : 1,
      "form" : "は",
      "kana" : "ハ",
      "lemma" : "は",
      "pos" : "連用助詞",
      "features" : [ ],
      "attributes" : { }
    } ]
  }, {
    "chunk_info" : {
      "id" : 1,
      "head" : -1,
      "dep" : "O",
      "chunk_head" : 0,
      "chunk_func" : 1,
      "links" : [ {
        "link" : 0,
        "label" : "agent"
      } ],
      "predicate" : [ ]
    },
    "tokens" : [ {
      "id" : 2,
      "form" : "歩",
      "kana" : "アル",
      "lemma" : "歩く",
      "pos" : "動詞語幹",
      "features" : [ "K" ],
      "dependency_labels" : [ {
        "token_id" : 0,
        "label" : "nsubj"
      }, {
        "token_id" : 3,
        "label" : "aux"
      }, {
        "token_id" : 4,
        "label" : "punct"
      } ],
      "attributes" : { }
    }, {
      "id" : 3,
      "form" : "く",
      "kana" : "ク",
      "lemma" : "く",
      "pos" : "動詞接尾辞",
      "features" : [ "終止" ],
      "attributes" : { }
    }, {
      "id" : 4,
      "form" : "。",
      "kana" : "",
      "lemma" : "。",
      "pos" : "句点",
      "features" : [ ],
      "attributes" : { }
    } ]
  } ],
  "status" : 0,
  "message" : ""
}
```
</div></details>
簡単に文字のカナが取れました！
これを使って、『T(ティー)』を探します！！

### コードを書いていく
今回作る機能の構成は以下の図のようにしていきます。
![TTflow.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99737/f9a0cb69-5b0e-3530-267a-2f33cda1dc57.jpeg)
コードは [GitHub](https://github.com/belltreeSzk/ttbot) に公開しているので自由に御覧ください。


### コードを外部公開する
無料で試せる環境を探していたのですが、以下の記事が参考になりました。
[Google Cloud Function + Cloud Scheduler + Python で定期的に Twitter 投稿する] (https://qiita.com/niwasawa/items/90476112dfced169c113)
今回 [GitHub](https://github.com/belltreeSzk/ttbot) に置いているコードはトークンを書き換えるだけでコピペで行けるはず…

## 注意点
- COTOHA APIの各APIの実行回数は 1000回/日 まで  
- SlackBotは該当のチャンネルに追加する必要があります

## まとめ
今回 [COTOHA API](https://api.ce-cotoha.com/contents/index.html) を使ってみましたが、英語 → カナ が出来るのが衝撃で、ノリで『T』を探すツールを作ってみました！
『T』以外にも検知する文字列を自由に変えることが出来るので、『あつい』 と言ったら負けなチャンネルを作ることや『できない』と言ったら励ましてくれるチャンネルなんかも作れると思います。
色々作ってみてはいかがでしょうか？ここまで読んで頂きありがとうございました！