美女に「おはよう」って言ってもらいたかった

ロンドン一人旅中に、カフェに立ち寄った。周りは美女だらけ、ひとりぼっちの僕。誰でもいいから、挨拶くらいしてほしい。いやせっかくなら、美女に挨拶してほしい。。。

そうだ、僕はエンジニアだ。自分で作ればいいんだ。slackのoutgoing webhookを使って、美女に挨拶してもらえるbotを作ろう。どちらかと言えば日本美女が好きなので、海外美女より日本美女がいい。美女といえば佐々木希。佐々木希に挨拶されれば向こう１週間くらい不眠不休で動けるはずだ。それがいい。


## 作り方

1. slackのoutgoing webhooksの登録・設定
2. api tokenを取得してapp scriptに設定
3. app scriptに設定を書き込む
4. app script APIをslackから呼べる様に設定

### 1. slackのoutgoing webhooksの登録・設定

まず、[slack custom integrations](https://stockanalyze.slack.com/apps/manage/custom-integrations
)のページから検索かけて、outgoing webhooksを追加します。

<img width="838" alt="Configure_Apps___Stock_Analyze_Slack.png" src="https://qiita-image-store.s3.amazonaws.com/0/85007/15b925e4-28f8-e208-fd5d-54cdcbae9bcb.png">

設定画面に遷移したら、Outgoing Dataの内容をメモ

<img width="814" alt="Outgoing_WebHooks___Stock_Analyze_Slack.png" src="https://qiita-image-store.s3.amazonaws.com/0/85007/d81c4c9d-e3e7-0327-f1be-3416d2de5030.png">

次にIntegration Settingsの追加。今回は美女に挨拶をしてもらいたいので、slackの特定のchannelに「おはよ」と投げると、佐々木希が返事をしてくれるように設定する<img width="809" alt="Outgoing_WebHooks___Stock_Analyze_Slack.png" src="https://qiita-image-store.s3.amazonaws.com/0/85007/4deda6a5-7784-d296-ec05-d514f25faddf.png">

これで保存する。

### 2. token設定

oauth2認証が新しく設定されたよう。設定が大変そうだったので、以前の方法で[token取得。](https://api.slack.com/custom-integrations/legacy-tokens)早く美女に挨拶されたいのです。次の写真のtokenの欄を取得

<img width="834" alt="Legacy_tokens___Slack_と_test.png" src="https://qiita-image-store.s3.amazonaws.com/0/85007/34eac074-4d49-edee-d61b-7266d8b6b570.png">

App scriptの画面に移動して、ファイル -> プロジェクトのプロパティから、「スクリプトのプロパティ」タブをクリック。

下記の様に設定。

<img width="847" alt="test.png" src="https://qiita-image-store.s3.amazonaws.com/0/85007/9356cd6f-c6f8-93e4-7bc4-1b101f393ec9.png">


### 3. app scriptに設定を書き込む

google driveから新規作成 -> その他 -> Google App Scriptをクリック

<img width="657" alt="マイドライブ_-_Google_ドライブ.png" src="https://qiita-image-store.s3.amazonaws.com/0/85007/0e3e6217-7a64-d0a9-7588-dc1104f7ee3a.png">

main.gsを作成し、下記の様に設定

```main.gs
function doPost(e) {
  var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN');
  var bot_name = "佐々木希";
  // iconは借りた
  var bot_icon = "http://sasakinozomi-ouen.pink/wp-content/uploads/2015/07/4%E4%BD%90%E3%80%85%E6%9C%A8%E5%B8%8C.jpg"; 
  var verify_token = "TOKEN_FROM_OUTGOING_WEBHOOK";

  if(verify_token != e.parameter.token) {
    throw new Error("invalid token.");
  }

  var app = SlackApp.create(token);
  
  // 名前読んでもらえた方が嬉しいですよね
  var message = e.parameter.user_name + "さん、おはよう！今日も頑張ってね\(*･ω･\)"
  
  return app.postMessage("#random", message, {
    username: bot_name,
    icon_url: bot_icon
  });
}
```

### 4. APIをslackから呼べる様に設定

app script にて、 公開 -> ウェブアプリケーションとして導入 をクリック。下記画像の様に設定して保存。

<img width="506" alt="test.png" src="https://qiita-image-store.s3.amazonaws.com/0/85007/0b4d297d-016e-a4a1-c463-c38e47120140.png">

slackのoutgoing webhookに戻って、urlに先ほどの「現在のウェブアプリケーションのURL」を追加する。

<img width="767" alt="Outgoing_WebHooks___Stock_Analyze_Slack.png" src="https://qiita-image-store.s3.amazonaws.com/0/85007/8c528d7b-ca52-44c6-7b60-2f17bf79bf3a.png">


あとは、slackから「おはよ」と入力するだけで、絶世の美女佐々木希から挨拶してもらうことができる。

<img width="531" alt="Slack_-_Stock_Analyze.png" src="https://qiita-image-store.s3.amazonaws.com/0/85007/062d3170-44d2-81b7-ba10-d01eb72fefb5.png">

**頑張ります！！**

### おまけ：自分好みの美女にカスタマイズしたい人向け

scriptの下記の```大好きな人の名前```, ```アイコンのurl```に変更すればカスタマイズできます。佐々木希以上の美女はいないと思いますが。

```
  return app.postMessage("#random", message, {
    username: bot_name,
    icon_url: bot_icon
  });
```


### 結論

あまり寂しさは満たされず、達成感が湧いてきた。いずれにせよ一人の寂しさは紛らわすことができた。